libdynamixel is a C++ interface to the dynamixel actuators. Currently, we have library code and an utility that uses it for a few tasks like changing the IDs, the baudrate and reading angles.
The work is in progress, the documentation too, please be clement.
The full documentation is here: http://www.resibots.eu/libdynamixel/
Compilation and installation
The build system for this library is Waf. Don't run away yet. It has the big advantage of requiring no more than Python installed on your computer. If you run a GNU/Linux OS or Mac OS, you should already have it. Here is how we compile and install it:
./waf configureand add
--prefix PATH/TO/INSTALLif you want to install it to a specific location
is as easy as
is simply done with
./waf install, with the required rights (might need sudo if you install globally)
- setup the proper authorisation
please ensure that you have the proper rights to access the serial interfaces. On GNU/Linux, you might have to add your user to the
dialoutgroup and log out.
udev rule for USB2AX adapter
If you want your USB2AX serial interface to appear in
usb2axN (where N is a kernel-attributed integer), you can install the udev rule. It is as simple as moving the
usb2ax.rules file in this repository to the folder for the udev rules. For ubuntu, it is
Troubleshooting read time
If the reading time seems too long, check the value of the USB latency timer. On ubuntu this value is retrieved with this command
cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer. It is the time, in milliseconds, for which the device driver buffers data before making it available.
You can change this timer with the command
echo 4 | sudo tee /sys/bus/usb-serial/devices/ttyUSB0/latency_timer which sets it to 4 ms for the device
Using Libdynamixel on Mac
Libdynamixel works fine on OSX, but OSX does not support the 1Mb mode (the fastest speed is 115200 bauds).
In addition, be careful that two TTYs are created when you use a USB adapter (e.g., libdynamixel): something like
/dev/tty.usbserial-AI03QF2R and something like
/dev/cu.usbserial-AI03QF2R. You NEED to use
/dev/cu.usbserial-* and NOT
tty.usbserial-* (this is because tty.usbserial is designed for modems and requires an
DND signal -- that we do not send).
Using the utility
Since we are right now writing a brand new utility, the user interface is not settled yet and some commands are not implemented. You can still play with the binary
dynamixel2 (the name will change) with the
--help [command] option to learn how to use it.
get-speedcommand gives you the reference speed used in the control loop (if any) and not the current rotational speed of the actuator.
Projects using this library
We would be pleased to hear from you if you use this library in one of your projects.