# Daisy-chained motors' publish rate is slow: dynamixel_workbench

I am running ROS kinetic on Ubuntu 16.04.3 LTS (and kernal name 4.13.0-32-generic). I am working with the dynamixel_workbench stack. Specifically, I have a MX-106, an MX-64, and another MX-64 daisy-chained.

When I read a motor state from only one motor, the rate is much faster than reading from all three daisy chained motors. I want to speed up the publish rate of states for all three motors so my graph of output are higher resolution.

For example, I've edited the dynamixel_workbench source code to read only torque and angular speed (in DynamixelState.msg, the only two message fields I have are present_load and present_speed. Accordingly, I edited multi_port.cpp so that I am only reading the Present_Load and Present_Speed ). When I rostopic hz, I see that he message rate is 15.62 hz. This is ok.

average rate: 15.625
min: 0.064s max: 0.064s std dev: 0.00003s window: 15


However, adding a daisy-chained motor slows this rate down a lot. With two motors now my rostopic hz rate is 7.8 hz.

average rate: 7.814
min: 0.128s max: 0.128s std dev: 0.00005s window: 8


Adding a third motor to the daisy chain, the publish rate becomes 5.2 hz! This is very slow. so when I try to look at rqt_graph it is jagged.

average rate: 5.209
min: 0.192s max: 0.192s std dev: 0.00004s window: 1017


I know there will be some inherent delays when daisy chaining the motors. Is there anything on the software side I can do to speed it up? Thanks!

edit retag close merge delete

Sort by » oldest newest most voted

Hi :)

First, MX has provided two protocol version 1.0 and 2.0. Protocol version 2.0 supports sync_read function(It is not supported by 1.0) to simultaneoulsy read data every connected Dynamixel. As you can see, the Dynamixel-Workbench has used itemRead function to compatible with all Dynamixels applied 1.0 and 2.0. So you can change it to sycnRead function after you change firmware your own MX.

Second, I recommend to set baudrate higher than 1M.

Third, you would check usb latency timer. Below issue might be help you.

https://github.com/ROBOTIS-GIT/dynami...

more