{"id":29672674,"url":"https://github.com/ryul1206/dynamixel-helper","last_synced_at":"2025-09-02T17:22:22.138Z","repository":{"id":57424815,"uuid":"181466175","full_name":"ryul1206/dynamixel-helper","owner":"ryul1206","description":"A lightweight, intuitive tool that makes Dynamixel control easier—skip the complexity of the official SDK.","archived":false,"fork":false,"pushed_at":"2025-04-03T17:30:56.000Z","size":239,"stargazers_count":7,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-28T01:48:14.127Z","etag":null,"topics":["dynamixel","dynamixelsdk","python","robot","robotis","sdk"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/dynamixel-helper/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryul1206.png","metadata":{"files":{"readme":"README.base.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-04-15T10:40:59.000Z","updated_at":"2025-05-31T15:35:18.000Z","dependencies_parsed_at":"2025-04-24T23:46:12.121Z","dependency_job_id":"b23940a0-89ea-406d-94b9-e0dc13ca28ba","html_url":"https://github.com/ryul1206/dynamixel-helper","commit_stats":null,"previous_names":["ryul1206/dynamixel-helper","ryul1206/easy-dynamixel-helper"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/ryul1206/dynamixel-helper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryul1206%2Fdynamixel-helper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryul1206%2Fdynamixel-helper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryul1206%2Fdynamixel-helper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryul1206%2Fdynamixel-helper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryul1206","download_url":"https://codeload.github.com/ryul1206/dynamixel-helper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryul1206%2Fdynamixel-helper/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266572833,"owners_count":23950105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamixel","dynamixelsdk","python","robot","robotis","sdk"],"created_at":"2025-07-22T21:07:19.565Z","updated_at":"2025-07-22T21:07:20.148Z","avatar_url":"https://github.com/ryul1206.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!----------------------------\u003e\n\u003c!-- multilingual suffix: en, ko --\u003e\n\u003c!-- no suffix: en --\u003e\n\u003c!----------------------------\u003e\n\n\u003c!-- [en] --\u003e\n# Dynamixel Helper\n\u003c!-- [ko] --\u003e\n# 다이나믹셀 헬퍼\n\u003c!-- [common] --\u003e\n\n[![PyPI](https://img.shields.io/pypi/v/dynamixel-helper.svg)](https://pypi.org/project/dynamixel-helper/)\n[![Total Downloads](https://pepy.tech/badge/dynamixel-helper)](https://pepy.tech/project/dynamixel-helper)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/dynamixel-helper)](https://pypi.org/project/dynamixel-helper/)\n[![GitHub](https://img.shields.io/github/license/ryul1206/dynamixel-helper.svg)](https://github.com/ryul1206/dynamixel-helper/blob/main/LICENSE)\n\n🌏\n\u003c!-- [en] --\u003e\nEnglish |\n[**한국어**](https://github.com/ryul1206/dynamixel-helper/blob/main/README.ko.md)\n\u003c!-- [ko] --\u003e\n[**English**](https://github.com/ryul1206/dynamixel-helper/blob/main/README.md) |\n한국어\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\nThis helper is a wrapper for the Dynamixel-SDK. With this, configure and drive your motor more quickly. You do not need to know how the SDK works. In other words, this helper makes it easy to modify the control table.\n\u003c!-- [ko] --\u003e\n이 헬퍼는 다이나믹셀 SDK를 래핑(wrapping)한 것입니다. 다이나믹셀 SDK를 어떻게 사용하는지 몰라도 쉽게 모터를 설정하고 구동할 수 있도록 만들었습니다. 다시 말해, 이 헬퍼는 컨트롤 테이블을 쉽게 수정할 수 있도록 도와줍니다.\n\u003c!-- [common] --\u003e\n\n```bash\npip install dynamixel_helper --user\n```\n\n\u003c!-- [ignore] --\u003e\n\u003c!-- TODO: update figure (direct writing on the control table) --\u003e\n\u003c!-- Your code ===\u003e DXL Helper ===\u003e Your motor(control table) --\u003e\n\n\u003c!-- [en] --\u003e\n**Table of Contents**\n\u003c!-- [ko] --\u003e\n**목차**\n\u003c!-- [common] --\u003e\n\n\u003c!-- [[ multilingual toc: level=2~3 no-emoji ]] --\u003e\n\n\u003c!-- [ignore] --\u003e\n\u003c!-- README-Template.md --\u003e\n\u003c!-- https://gist.github.com/PurpleBooth --\u003e\n\n\u003c!-- [en] --\u003e\n## 💎 Features\n\u003c!-- [ko] --\u003e\n## 💎 특징들\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n- Baud rate auto-matching\n- Protocol auto-matching\n- Port auto-matching (*Easy connections in multi-USB*)\n\u003c!-- [ko] --\u003e\n- 보드레이트 자동 매칭\n- 프로토콜 자동 매칭\n- 포트 자동 매칭 (*쉬워진 다중 USB 연결*)\n\u003c!-- [en] --\u003e\n- Motor configurations in JSON format\n- Support for Python 3 and 2\n\u003c!-- [ko] --\u003e\n- 파이썬 3 및 2 지원\n- JSON 형태로 모터 환경설정\n\u003c!-- [en] --\u003e\n- Make your code simple and clean\n- **Easy to use even for beginners.**\n\u003c!-- [ko] --\u003e\n- 여러분의 코드를 간결하게 만들어 줍니다.\n- **초보자도 사용하기가 쉽습니다.**\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n## 🐣 Simple Example\n\u003c!-- [ko] --\u003e\n## 🐣 간단한 예제\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\nThe following code is an example of turning on the motor torque.\n\u003c!-- [ko] --\u003e\n아래의 코드는 모터의 토크를 켜는 예제입니다.\n\u003c!-- [common] --\u003e\n\n```python\nfrom dynamixel_helper import DxlHelper\n\nhelper = DxlHelper(\"preset/{my_robot}.json\")\nmotor = helper.get_motor(0)  # id: 0\nmotor.set_torque(True)\n```\n\n\u003c!-- [en] --\u003e\n## 🚀 Getting Started\n\u003c!-- [ko] --\u003e\n## 🚀 시작하기\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n### Prerequisites\n\u003c!-- [ko] --\u003e\n### 사전에 필요한 것\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n1. **pip (package manager)**\n\u003c!-- [ko] --\u003e\n1. **pip (파이썬 패키지 관리자)**\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n    ```bash\n    # Python 2\n    sudo apt install python-pip\n    python -m pip install -U pip\n    # Python 3\n    sudo apt install python3-pip\n    python3 -m pip install -U pip\n    ```\n\u003c!-- [ko] --\u003e\n    ```bash\n    # 파이썬 2\n    sudo apt install python-pip\n    python -m pip install -U pip\n    # 파이썬 3\n    sudo apt install python3-pip\n    python3 -m pip install -U pip\n    ```\n\u003c!-- [common] --\u003e\n\n2. **Dynamixel SDK**\n\n\u003c!-- [en] --\u003e\n    **CAUTION💥**: Please install the `pip` **before** installing the `Dynamixel SDK`. Otherwise, when you install this `Dynamixel Helper`, you will get an dependency error of `Dynamixel SDK`.\n\n    You need to install the official [Dynamixel SDK](https://github.com/ROBOTIS-GIT/DynamixelSDK) before using this helper.\n\n    \u003cdetails\u003e\u003csummary\u003eClick here: Dynamixel SDK Installation\u003c/summary\u003e\n    \u003cp\u003e\n\n    1. Clone the official SDK repository into your custom folder, for example, I created `~/lib`.\n\u003c!-- [ko] --\u003e\n    **주의💥**: 반드시 `Dynamixel SDK`를 설치하기 **전에** `pip`부터 설치하여 주세요. 그렇지 않으면 `Dynamixel Helper`를 설치할 때 `Dynamixel SDK`를 찾을 수 없다는 의존성 오류가 발생합니다.\n\n    헬퍼를 설치하기 전에 로보티즈 사에서 제공하는 공식 [다이나믹셀 SDK](https://github.com/ROBOTIS-GIT/DynamixelSDK)가 있어야 합니다.\n\n    \u003cdetails\u003e\u003csummary\u003e클릭하여 보기: 다이나믹셀 SDK 설치 방법\u003c/summary\u003e\n    \u003cp\u003e\n\n    1. 라이브러리를 설치할 공간에 공식 SDK 코드를 내려받습니다. 예를 들어, 저는 `~/lib` 폴더를 만들었습니다.\n\u003c!-- [common] --\u003e\n\n        ```bash\n        git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git\n        ```\n\n\u003c!-- [en] --\u003e\n    2. Go into the folder `/DynamixelSDK/python` of your cloned SDK.\n\n        ```bash\n        cd ${your_download_path}/DynamixelSDK/python\n        ```\n\n    3. Run `setup.py` with `--user` option to install the library. Administrator privileges, a.k.a. `sudo`, are not recommended. More information [here](https://pages.charlesreid1.com/dont-sudo-pip/).\n\u003c!-- [ko] --\u003e\n    2. 방금 내려받은 SDK 폴더에서 `/DynamixelSDK/python` 위치로 이동합니다.\n\n        ```bash\n        cd ${여러분의_다운로드_경로}/DynamixelSDK/python\n        ```\n\n    3. `--user` 옵션과 함께 `setup.py`를 실행하면 SDK 설치가 끝납니다. 흔히 `sudo`라고 하는 관리자 권한은 추천하지 않습니다. 자세한 이유은 [이 글(한국어)](https://medium.com/@chullino/sudo-%EC%A0%88%EB%8C%80-%EC%93%B0%EC%A7%80-%EB%A7%88%EC%84%B8%EC%9A%94-8544aa3fb0e7)을 참고해 주세요.\n\u003c!-- [common] --\u003e\n\n        ```bash\n        python setup.py install --user\n        ```\n\n    \u003c/p\u003e\n    \u003c/details\u003e\n\n\u003c!-- [en] --\u003e\n### Installation\n\u003c!-- [ko] --\u003e\n### 설치\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\nSimply type `pip` command below to install this helper.\n\u003c!-- [ko] --\u003e\n헬퍼의 설치는 간단히 `pip` 명령만 하면 됩니다.\n\u003c!-- [common] --\u003e\n\n```bash\npip install dynamixel_helper --user\n```\n\n\u003c!-- [en] --\u003e\n## 🌱 Tutorials\n\u003c!-- [ko] --\u003e\n## 🌱 튜토리얼\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n[Go to tutorials](https://github.com/ryul1206/dynamixel-helper/blob/main/tutorial/en/TUTORIAL.md)\n\u003c!-- [ko] --\u003e\n[튜토리얼로 이동](https://github.com/ryul1206/dynamixel-helper/blob/main/tutorial/ko/TUTORIAL.md)\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n## 🚩 Release Notes\n\u003c!-- [ko] --\u003e\n## 🚩 릴리즈 노트\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n\u003c!-- [ko] --\u003e\n\u003e 릴리즈 노트는 기복적으로 영어로만 제공될 계획입니다. 그래도 몇가지 중요한 항목은 한글로도 제공하려 합니다.\n\u003c!-- [common] --\u003e\n\n[Go to release notes](https://github.com/ryul1206/dynamixel-helper/blob/main/CHANGELOG.md#Release-Notes)\n\n\u003c!-- [en] --\u003e\n## 🔭 Current Coverage\n\u003c!-- [ko] --\u003e\n## 🔭 현재의 커버리지\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n### Model List\n\u003c!-- [ko] --\u003e\n### 모델 리스트\n\n아래 링크된 주소는 영문판 메뉴얼이지만 로보티즈에서는 한글 메뉴얼도 제공하고 있습니다. 한글 메뉴얼은 [여기](http://emanual.robotis.com/docs/ko/)에서 확인해주세요.\n\u003c!-- [common] --\u003e\n\n- Tested models\n  - [XM430-W210](http://emanual.robotis.com/docs/en/dxl/x/xm430-w210/#control-table-of-eeprom-area)\n  - [XL430-W250](http://emanual.robotis.com/docs/en/dxl/x/xl430-w250/#control-table-of-eeprom-area)\n- Non-tested models (Only the control tables are included.)\n  - [AX-12W](https://emanual.robotis.com/docs/en/dxl/ax/ax-12w/#control-table-of-eeprom-area)\n  - [XL-320](https://emanual.robotis.com/docs/en/dxl/x/xl320/#control-table-of-eeprom-area)\n\n\u003c!-- [en] --\u003e\n### Control Table\n\nDifferent models have slightly different control tables. Please check the documentation for each model. Just click the model name above to go to the document.\n\u003c!-- [ko] --\u003e\n### 컨트롤 테이블\n\n모터마다 접근할 수 있는 컨트롤 테이블이 다릅니다. 이것은 각 모터의 문서를 확인해주세요. 바로 위에서 모델 이름을 클릭하면 문서로 이동할 수 있습니다.\n\u003c!-- [common] --\u003e\n\n- EEPROM section\n    - drive mode (w)\n    - operating mode (w)\n- RAM section\n    - torque (r/w)\n    - goal velocity (w)\n    - goal position (w)\n    - present velocity (r)\n    - present position (r)\n\n\u003c!-- [en] --\u003e\n## 💌 Contributing\n\u003c!-- [ko] --\u003e\n## 💌 기여하기\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n- We will welcome whatever your contribution is!\n- If you are planning to send a new `Pull request`, please send them into the `develop` Branch.😍\n\u003c!-- [ko] --\u003e\n- 여러분의 기여가 어떠한 내용이든 어떠한 방법이든 상관없이 언제나 환영합니다!\n- 만약 `Pull request`를 보내실 계획이라면 `develop` 브랜치로 부탁드립니다.😍\n\u003c!-- common --\u003e\n\u003c!-- [ignore] --\u003e\n//\u003c!-- [en] --\u003e\n//### Pull Request Process\n//\u003c!-- [ko] --\u003e\n//### Pull Request 절차\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n### Style Guide\n\u003c!-- [ko] --\u003e\n### 스타일 가이드\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n\u003e This style guide is only a recommendation, never more important than your interest and contributions.\n\n- Our default Python style is [PEP 8](https://www.python.org/dev/peps/pep-0008/).\n- If you use [VSCode](https://code.visualstudio.com/) as your code editor, please refer to the following settings. This setting is a part of our `setting.json`.\n\u003c!-- [ko] --\u003e\n\u003e 이 스타일 가이드는 추천사항일 뿐입니다. 어떠한 경우에도 여러분의 관심과 기여보다 중요한 것은 아닙니다.\n\n- 파이썬 스타일은 [PEP 8](https://www.python.org/dev/peps/pep-0008/)을 기본으로 사용합니다.\n- [VSCode](https://code.visualstudio.com/)를 코드에디터로 사용한다면 아래의 세팅을 참고해주세요. 이 세팅은 저희의 `setting.json` 일부입니다.\n\u003c!-- [common] --\u003e\n\n    ```json\n    {\n        \"editor.tabSize\": 4,\n        \"[json]\": {\n            \"editor.tabSize\": 2\n        },\n        \"python.linting.pylintEnabled\": false,\n        \"python.linting.pep8Enabled\": true,\n        \"python.linting.enabled\": true\n    }\n    ```\n\n\u003c!-- [ignore] --\u003e\n//\u003c!-- [en] --\u003e\n//### Code of Conduct\n//\u003c!-- [ko] --\u003e\n//### 행동 강령\n//\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n## 🔧 Maintainers\n\u003c!-- [ko] --\u003e\n## 🔧 유지 관리자\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n- **Hong-ryul Jung** _Initial work_ [ryul1206](https://github.com/ryul1206)\n- **Il-ho Oh** _Initial work_ [ohilho](https://github.com/ohilho)\n\u003c!-- [ko] --\u003e\n- **정홍렬** _Initial work_ [ryul1206](https://github.com/ryul1206)\n- **오일호** _Initial work_ [ohilho](https://github.com/ohilho)\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n## 📜 Licenses\n\u003c!-- [ko] --\u003e\n## 📜 라이센스\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\nThe contents of this repository are subject to the [MIT License](https://github.com/ryul1206/dynamixel-helper/blob/main/LICENSE) by default, except as noted below.\n\u003c!-- [ko] --\u003e\n이 저장소에 있는 내용은 기본적으로 [MIT License](https://github.com/ryul1206/dynamixel-helper/blob/main/LICENSE)를 따릅니다. 예외적인 항목에 대해서는 아래 목록을 보아주십시오.\n\u003c!-- [common] --\u003e\n\n\u003c!-- [en] --\u003e\n- Dynamixel SDK is under the [Apache-2.0](https://github.com/ROBOTIS-GIT/DynamixelSDK/blob/main/LICENSE)\n\u003c!-- [ko] --\u003e\n- 다이나믹셀 SDK는 [Apache-2.0](https://github.com/ROBOTIS-GIT/DynamixelSDK/blob/main/LICENSE)을 따릅니다.\n\u003c!-- [common] --\u003e\n\n\u003c!-- [ignore] --\u003e\n\n**Build**\n\n```OLD\npython3 setup.py sdist bdist_wheel --universal\n```\n\n```NEW\nuv sync --group dev\npython -m build\n```\n\n**PyPI Uploading...**\n\ntest upload\npython3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*\n\ndeploy\npython3 -m twine upload dist/*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryul1206%2Fdynamixel-helper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryul1206%2Fdynamixel-helper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryul1206%2Fdynamixel-helper/lists"}