Robotis社のDynamixelをROSから制御するためのライブラリ.
基本的にROSで使うことを想定しているので,単体でのビルドは試してない.
ROS1に組み込んだものがこちら
src\download\port_handler_linux.cpp
内の LATENCY_TIMER
と使用するUBSデバイスのlatency timerを一致させる必要がある.
このライブラリのデフォルトはLATENCY_TIMER=16
で,USBデバイス側のデフォルトと等しいので通常は問題にならない.
src\download\port_handler_linux.cpp
内の LATENCY_TIMER
は,該当部分を書き換えてコンパイルでOK
例
#define LATENCY_TIMER 4
使用するUSBデバイスのlatency timerは次のようにして変更する.
$ echo ACTION==\"add\", SUBSYSTEM==\"usb-serial\", DRIVER==\"ftdi_sio\", ATTR{latency_timer}=\"4\" > 99-dynamixelsdk-usb.rules
$ sudo cp ./99-dynamixelsdk-usb.rules /etc/udev/rules.d/
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger --action=add
$ cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
一時的であれば以下のようにしてもよい.
$ echo 4 | sudo tee /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
$ cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
echo ACTION==\"add\", SUBSYSTEM==\"usb-serial\", DRIVER==\"ftdi_sio\", ATTR{latency_timer}=\"4\" > 99-dynamixelsdk-usb.rules
sudo cp ./99-dynamixelsdk-usb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger --action=add
cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
echo 4 | sudo tee /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
本体 2, このライブラリ 4くらいがちょうどいいかもしれない.