dynamixel-controller is a Python library designed from the ground up to work with any Dynamixel motor on the market with few to no modifications.
Use the package manager pip to install dynamixel-controller.
pip install dynamixel-controller
from dynio import *
dxl_io = dxl.DynamixelIO('portname') # your port for U2D2 or other serial device
See documentation for full list of motors. See below for sample:
ax_12 = dxl_io.new_ax12(1) # AX-12 protocol 1 with ID 1
mx_64_1 = dxl_io.new_mx64(2, 1) # MX-64 protocol 1 with ID 2
mx_64_2 = dxl_io.new_mx64(3, 2) # MX-64 protocol 2 with ID 3
See documentation for full list of functions and their usage.
The most prevalent functions are pre-implemented as methods for the motor objects. These include:
motor.torque_enable()
motor.torque_disable()
motor.set_acceleration(acceleration)
motor.set_velocity_mode()
motor.set_velocity(velocity)
motor.set_position_mode()
motor.set_position(position)
motor.set_angle(angle)
motor.set_extended_position_mode()
motor.set_position(position)
position = motor.get_position()
angle = motor.get_angle()
current = motor.get_current()
All other values can be easily read from or written to using their control table name. Example:
motor.write_control_table("LED", 1) # Turns the LED on
speed = motor.read_control_table("Present_Speed") # Returns present velocity
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Especially encouraged is new control tables to be published as part of the package.