{"id":16023923,"url":"https://github.com/vikashplus/dynamixel","last_synced_at":"2025-05-13T22:17:39.021Z","repository":{"id":68306005,"uuid":"121711184","full_name":"vikashplus/dynamixel","owner":"vikashplus","description":"Python interface for Dynamixels","archived":false,"fork":false,"pushed_at":"2022-01-24T20:51:54.000Z","size":49,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-16T22:25:14.286Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vikashplus.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2018-02-16T03:27:27.000Z","updated_at":"2022-05-04T15:07:32.000Z","dependencies_parsed_at":"2023-06-19T04:12:59.831Z","dependency_job_id":null,"html_url":"https://github.com/vikashplus/dynamixel","commit_stats":{"total_commits":49,"total_committers":4,"mean_commits":12.25,"dds":0.326530612244898,"last_synced_commit":"458a99dfa8ed6907204b4f16b5e6dcb3b6c91ffb"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vikashplus%2Fdynamixel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vikashplus%2Fdynamixel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vikashplus%2Fdynamixel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vikashplus%2Fdynamixel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vikashplus","download_url":"https://codeload.github.com/vikashplus/dynamixel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254036843,"owners_count":22003654,"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","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":[],"created_at":"2024-10-08T19:04:25.880Z","updated_at":"2025-05-13T22:17:36.344Z","avatar_url":"https://github.com/vikashplus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Python wrapper for dynamixels\nPrimarily designed for MX series\n\n# Set up\n0. Clone the [dynamixel robotis repo](https://github.com/ROBOTIS-GIT/DynamixelSDK.git). \nNote that the repo has gone through changes that aren't backward compatible. Checkout an earlier commit compatibility .\n```\ngit clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git  \ncd DynamixelSDK\ngit checkout 2ae37fc2390eedcd8fe356f40ece398720db0532 \n```\n\n1. build the c library\n\n```\ncd ~/Libraries/DynamixelSDK/c/build/linux64/ \nmake \n```\n\n2. add path to the ctype wrapper in the bashrc \n\n```export PYTHONPATH=\"/home/vik/Libraries/DynamixelSDK/python/dynamixel_functions_py:$PYTHONPATH\"``` \n\n3. Edit `DynamixelSDK/python/dynamixel_functions_py/dynamixel_functions.py` to point to the right libraries (absolute path)\n\n\n```dxl_lib = cdll.LoadLibrary(\"/home/vik/Libraries/DynamixelSDK/c/build/linux64/libdxl_x64_c.so\")```\n\n4. Edit user permissions to access ports\n\n```\nsudo usermod -a -G tty yourname\nsudo usermod -a -G dialout yourname\n```\nNote that logout/login will be required for the group addition to take effect.\n\n5. Port's latency can significantly affect your performance. You can check its value by:\n ```\n $ cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer\n ```\n\n If you think that the communication is too slow, type following after plugging the usb in to change the latency timer\n\nMethod 1. \n ```Type following (you should do this everytime when the usb once was plugged out or the connection was dropped)\n $ echo 1 | sudo tee /sys/bus/usb-serial/devices/ttyUSB0/latency_timer\n $ cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer\n ```\n\n Method 2. \n ```If you want to set it as be done automatically, and don't want to do above everytime, make rules file in /etc/udev/rules.d/. For example,\n $ echo ACTION==\\\"add\\\", SUBSYSTEM==\\\"usb-serial\\\", DRIVER==\\\"ftdi_sio\\\", ATTR{latency_timer}=\\\"1\\\" \u003e 99-dynamixelsdk-usb.rules\n $ sudo cp ./99-dynamixelsdk-usb.rules /etc/udev/rules.d/\n ```\n Use commands below to reload the rules, or log-off+login for the new rules to take effect.\n ```\n $ sudo udevadm control --reload-rules\n $ sudo udevadm trigger --action=add\n $ cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer\n ```\n\n6. Create identifiable link for your usb devices now. Check the serial of the device using\n```\nudevadm info -a -p  $(udevadm info -q path -n /dev/ttyUSBX) | grep serial\n```\nNow add a synlink to your udev file `/etc/udev/rules.d/99-dynamixel-usb.rules`. The final file will look something like this\n```\nACTION==\"add\", SUBSYSTEM==\"usb-serial\", DRIVER==\"ftdi_sio\", ATTR{latency_timer}=\"1\"\nACTION==\"add\", SUBSYSTEM==\"tty\", ENV{ID_MODEL_ID}==\"6014\", ENV{ID_VENDOR_ID}==\"0403\", ENV{ID_SERIAL_SHORT}==\"FT3R4CCT\", SYMLINK+=\"DKitty\"\nACTION==\"add\", SUBSYSTEM==\"tty\", ENV{ID_MODEL_ID}==\"6014\", ENV{ID_VENDOR_ID}==\"0403\", ENV{ID_SERIAL_SHORT}==\"FT2H2MX4\", SYMLINK+=\"DLeg\"\n```\nNote that logout/login will be required for the new rules to take effect. Alternatively one can also use `udevadm control -R`\n\n\n# usage\n1. Open dynamixel_utils.py and pick the connected dynamixel type \n2. `python dynamixel_utils.py`to test\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvikashplus%2Fdynamixel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvikashplus%2Fdynamixel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvikashplus%2Fdynamixel/lists"}