A Python wrapper for the Dynamixel SDK that simplifies control of Dynamixel servo motors. Just as simple as it can get. Includes a ROS2 compatible node. Check https://github.com/TUM-LSY/aloha4franka for a gripper that uses it.
Use pip or uv:
pip install -e .Alternatively use pixi:
pixi shell # To create environment and enter in itTo broadcast the motor values and control a motor using ROS2, you can use the respective ROS2 environments:
pixi run -e humble dynamixel-motor-ros2 --namespace gripper --device /dev/ttyUSB1 --motor-id 0In a different shell, check the topics
pixi run -e humble ros2 topic listThis should output:
...
/gripper/dynamixel_motor/command
/gripper/dynamixel_motor/joint_states
...
The calibration script automatically finds your motor's physical limits (stoppers, gripper ends, etc.) by moving it incrementally in both directions.
Quick Start:
pixi run calibrate-motor --device /dev/ttyUSB0 --motor-id 0What it does 📊 Saves min/max values to outputs/motor_X_calibration.yaml
