Dynamixel SDK Python Wrapper
Project description
dxl_py
Simple python wrapper over the Dynamixel API. Allows commanding and receiving positions for an arbitrary number of servos.
Use
Create a config dictionary with one entry per servo:
MY_SERVOS_CONFIG = {
'test_servo': {
'id': 1, # Servo ID
'model': 'mx', # Servo model tag, one of 'MX' or 'PRO'
'min': 0, # Minimum position (MX servos go from 0 to 4095)
'max': 4095, # Maximum position
},
...
}
Create the servo object using your config dictionary.
from dxl.servos import Servos
my_servos = Servos(config = MY_SERVOS_CONFIG, action_bounds = [-1.0, 1.0])
Set the servo position. The action_bounds
kwarg determines how actions relate to positions. An action of 1.0 here
sets the position of the servo to 4095
.
my_servos.set({'test_servo' : 1.0, ...})
Get the servo position.
my_servos.get(['test_servo', ...])
Setup
Clone the DynamixelAPI repo into the desired directory. Install into your desired python environment (consider using Anaconda).
$ git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git .
$ cd DynamixelSDK/python/
$ pip install -e .
The wrapper can be installed as a pip package:
pip install dxl_py
This repo uses MX-28
model dynamixel servos connected via USB through a U2D2.
After connecting the device, check it exists (the name might be different from the one below):
$ ls /dev/ttyUSB*
/dev/ttyUSB0
Now configure and add a custom udev rule using the fix_udev.sh
script. You might need to reboot.
$ sudo ./fix_udev.sh
If we check the devices again we should now see the dynamixel device.
$ ls /dev/dynamixel
/dev/dynamixel
Connect a servo with id=1
and run the test with python -m unittest
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.