Issue:
I’m working on a humanoid robot using currently 16 XL430-W250/2XL430_W250 actuators. For communication I use U2D2 connected to an onboard raspberry pi zero 2 and I have my own java library for dynamixel protocol v1 and v2, which I’ve been using for years already.
I’m using sync read to update torque, velocity and position of my actuators. Perhaps every 50th update or so I run into the weirdest error. The robot bus returns 16 status packages just fine, but for one seems to contain an extra byte. And the checksum matches the whole package, here’s and example of the sync read message sent and the status messages returned:
[ERROR] 20250508 17:13:49.020 GroupController - Actuator 16 abnormal present position: 396287, reverting to previous
Syncread sent:255 255 253 0 254 23 0 130 126 0 10 0 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 185 177
Syncread received:255 255 253 0 3 14 0 85 0 240 255 0 0 0 0 3 10 0 0 59 224
Syncread received:255 255 253 0 4 14 0 85 0 6 0 0 0 0 0 255 5 0 0 147 185
Syncread received:255 255 253 0 5 14 0 85 0 0 0 0 0 0 0 0 4 0 0 215 244
Syncread received:255 255 253 0 6 14 0 85 0 0 0 0 0 0 0 0 4 0 0 221 247
Syncread received:255 255 253 0 7 14 0 85 0 0 0 0 0 0 0 0 8 0 0 43 246
Syncread received:255 255 253 0 8 14 0 85 0 4 0 0 0 0 0 255 7 0 0 187 117
Syncread received:255 255 253 0 9 14 0 85 0 255 255 0 0 0 0 0 8 0 0 239 246
Syncread received:255 255 253 0 10 14 0 85 0 255 255 0 0 0 0 255 7 0 0 1 249
Syncread received:255 255 253 0 11 14 0 85 0 0 0 0 0 0 0 241 9 0 0 63 46
Syncread received:255 255 253 0 12 14 0 85 0 0 0 0 0 0 0 241 9 0 0 45 41
Syncread received:255 255 253 0 13 14 0 85 0 15 0 0 0 0 0 223 11 0 0 204 208
Syncread received:255 255 253 0 14 14 0 85 0 33 0 1 0 0 0 220 11 0 0 191 61
Syncread received:255 255 253 0 15 14 0 85 0 10 0 0 0 0 0 13 6 0 0 65 218
Syncread received:255 255 253 0 16 15 0 85 0 255 255 253 253 255 255 255 11 6 0 0 247 10
Syncread received:255 255 253 0 17 14 0 85 0 16 0 0 0 0 0 253 7 0 0 239 197
Syncread received:255 255 253 0 18 14 0 85 0 251 255 0 0 0 0 1 8 0 0 224 249
Also when this happens, the velocity and position seems to skyrocket. I’m wondering if this can be a problem with
a) my code, difficult to see that since the example is the raw data going to U2D2 and what’s returned
b) problem/bug with U2D2
c) problem/bug with actuators? I should be running the latest software on them.
Here’s another example:
ERROR] 20250508 17:14:42.675 GroupController - Actuator 10 abnormal present position: 523773, reverting to previous
Syncread sent:255 255 253 0 254 23 0 130 126 0 10 0 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 185 177
Syncread received:255 255 253 0 3 14 0 85 0 241 255 0 0 0 0 3 10 0 0 44 0
Syncread received:255 255 253 0 4 14 0 85 0 6 0 0 0 0 0 255 5 0 0 147 185
Syncread received:255 255 253 0 5 14 0 85 0 0 0 0 0 0 0 0 4 0 0 215 244
Syncread received:255 255 253 0 6 14 0 85 0 0 0 0 0 0 0 0 4 0 0 221 247
Syncread received:255 255 253 0 7 14 0 85 0 0 0 0 0 0 0 0 8 0 0 43 246
Syncread received:255 255 253 0 8 14 0 85 0 3 0 0 0 0 0 0 8 0 0 53 89
Syncread received:255 255 253 0 9 14 0 85 0 4 0 0 0 0 0 0 8 0 0 89 120
Syncread received:255 255 253 0 10 15 0 85 0 13 0 254 255 255 255 253 253 7 0 0 172 78
Syncread received:255 255 253 0 11 14 0 85 0 1 0 0 0 0 0 241 9 0 0 40 206
Syncread received:255 255 253 0 12 14 0 85 0 32 0 0 0 0 0 236 9 0 0 131 143
Syncread received:255 255 253 0 13 14 0 85 0 17 0 0 0 0 0 222 11 0 0 76 133
Syncread received:255 255 253 0 14 14 0 85 0 39 0 0 0 0 0 218 11 0 0 196 149
Syncread received:255 255 253 0 15 14 0 85 0 5 0 0 0 0 0 14 6 0 0 130 70
Syncread received:255 255 253 0 16 14 0 85 0 239 255 0 0 0 0 19 6 0 0 51 146
Syncread received:255 255 253 0 17 14 0 85 0 11 0 0 0 0 0 254 7 0 0 45 88
Syncread received:255 255 253 0 18 14 0 85 0 251 255 0 0 0 0 1 8 0 0 224 249
DYNAMIXEL Servo:
8 x XL430-W250
4 x 2XL430_W250
DYNAMIXEL Controller:
U2D2 connected to Raspberry PI zero 2
Software Interface:
Custom build java library