Ask Your Question

Daisy-chained motors' publish rate is slow: dynamixel_workbench

asked 2018-05-07 14:24:03 -0500

RobotRob gravatar image

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 flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2018-05-07 20:11:37 -0500

Darby Lim gravatar image

Hi :)

Thank you for your inquiry about Dynamixel-Workbench.

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.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2018-05-07 14:24:03 -0500

Seen: 369 times

Last updated: May 07 '18