Implemented ✅ — I added a PR-ready change in LeRobot to do exactly what you asked:
What changed
1) Keep current error UX first
In broadcast_ping(), it still logs the original message first:
"Some motors found returned an error status: ..."
2) Then run a second pass only for voltage errors
If any motor has ERRBIT_VOLTAGE, it now logs:
- that it detected voltage-related errors
- that it is collecting additional read-only diagnostics
Then it performs extra register reads (second round trip) and logs:
Status
Present_Voltage
Min_Voltage_Limit
Max_Voltage_Limit
with raw comm/error fields and derived volts.
So this is exactly the staged behavior you requested:
- surface first error
- then fetch & display richer info
Files updated
Note on round trips
You were exactly right to ask this:
The initial broadcast ping status packet does not include min/max/present voltage register values.
So we must do a second read pass to fetch those details.
Validation
I compiled modified files successfully (py_compile), but couldn’t run full pytest locally because this environment is missing test tooling/deps (pytest, serial in that test env).
If you want, I can also draft the exact PR title + description text for you to paste into GitHub.