The issue of a noticeable decrease in servo operational speed when reading encoder data from XC and XL series servos

Hello everyone, I would like to inquire about the issue of latency in reading position, speed, and current data from XC and XL series servos. Our code is based on the ‘sync_read_write_position’ example in the openRB Arduino routine, and we have modified it to accommodate 7 servos (2 XL series and 5 XC series). In our implementation, we perform a synchronous write of positions for all servos first, followed by a synchronous read of positions for all servos. These two operations constitute one cycle. We record the time taken for each write and read, and we have observed that the write time is significantly shorter than the read time. The write time is around 1ms, while the read time takes 10ms or more. As a result, when we perform synchronous reads of servo data, the operational speed of the servos noticeably decreases. Does anyone know how to resolve this issue? Thank you very much.

Did you use 1Mbps for baud rate? Do you have lots of print output to the Serial Monitor window?

The Sync Read utility returns an individual status packet for each DYNAMIXEL that is being accessed, this is likely the cause of the longer cycle time for the read portion.

Utilizing Fast Sync Read instead should help speed up the process by returning only a single large status packet.