Dynamixel Pro Timeout Issue

Issue:
I am running 18 h54-200-s500-r servos on my hexapod robot Marauder:

Marauder_In_Box_Square

I have recently upgraded the robot with spring loaded hall effect foot sensors that I have wired into the external port on six of 18 h54-200-s500-r servos. While I can send sync_move commands to all motors just fine, I am experiencing comms timeouts with several of the motors while sync reading the external port.

The Dynamixel SDK reports error COMM_RX_TIMEOUT frequently, and loading the servo bus in DynaWizard looks like this:

Screenshot 2024-08-12 at 8.24.36 PM

Clicking on any greyed out / starred returns TIME OUT when trying to change any parameter. Interestingly, the motors seem to receive the command but the software gets no response, as I tried changing all motors to 1000000 baud and, while they did set the new baud, I got TIMEOUT on any greyed motor. Rescanning showed the motors at the new baud. However, reducing the baud rate did not help with the timeout.

In my code, using the Dynamixel SDK GroupSyncRead function, I am trying to read six motor’s external port simultaneously and I am getting intermittent status packet failures (COMM_RX_TIMEOUT -3001). Sending commands to all 18 motors via GroupSyncWrite works fine and returns 0 (COMM_SUCCESS), I think because it does not require a response.

Interestingly, my simple calibration routine that queries all encoders and external ports and prints the data once every 4 seconds works fine. The main robot program runs at a much faster update rate and sends multiple sync_move commands per second.

Is there any reason why multiple motors would be displaying this issue or any possible fix?


DYNAMIXEL Servo:

18 x h54-200-s500-r
1 x h54-100-s500-r
1 x H42-20-S300r
1 x L42-10-S300r


DYNAMIXEL Controller:
usb2dynamixel
Also tested on U2D2


Software Interface:
Python3 on Ubuntu 18.04.5 LTS
Dynamixel SDK

The greyed out line and star on the actuator list in the Wizard indicate that that particular servo has a firmware update available. I’d suggest updating the servos in question using the Wizard to see if that happens to take care of the problem.

As a next step in trying to troubleshoot this, are you able to identify if only specific servos are giving timeout errors, or if it’s happening with every connected unit?

The sync_read function does not indicate specific servo failures, just an overall failure which presumably means at least one of the requested servos failed to respond.

I will check into the firmware update and repost here.