Overview#
Isolate communication, lifecycle, and cache issues separately. Determine online state from communication records and feedback updates, paying attention to initial values and stale feedback.
Devices and factories#
| Error or symptom | What to check |
|---|---|
IMU type not supported |
The factory implementation supports HIPNUC; verify case and model |
Motor type not supported |
Check DM/EVO/LRO/RP/XYN against the target driver |
| Unsupported interface | Verify the interface paths supported by the selected driver |
| Serial port cannot be opened | Device path, user permissions, udev, and USB port mapping |
| CAN interface does not exist | Actual interface, adapter, driver, and wiring |
| Interface exists but no feedback arrives | Protocol, bit rate, IDs, bus groups, and other control processes |
Start by inspecting the current interfaces as described in Connection checks; do not directly change IDs, zero offsets, or persistent parameters while troubleshooting.
Robot lifecycle#
Motors are not initialized and IMU is not initialized come from interface state checks. Identify the affected object, which initialization preceded the error, and whether the code uses the driver cache or the Robot cache. read_joints() does not actively request motor status; refresh_joints() sends the request and waits.
Motors offline: <bus>/id=...(count=...) means the unanswered-request count exceeds 25. This is a count threshold; the corresponding time interval depends on request frequency. Retain the interface, ID, count, and associated configuration for diagnosis.
reset_joints is asynchronous. A successful ROS response only means the reset thread has started. Assess cases such as repeated initialization or deinitialization during a reset using the lifecycle and subsequent logs.
Separate RP Hand checks#
For RP Hand, verify the CAN-FD nominal/data bit rates of 1 Mbps / 5 Mbps, node ID, Python ABI, and feedback configuration. Inspect the system, packages, and interface:
uname -m
/usr/bin/python3 --version
dpkg-query -W roboparty-dexhand roboparty-base
ip -details -statistics link show can0If opening a second hand in the same process fails, check the one-hand-per-process architecture. init_hand(False, False, 0.0) initializes communication only; enable and homing are performed separately at the motion stage. If homing fails, resolve feedback or alarm issues first.
The CAN-FD ROS integration does not yet publish /joint_states or provide a configure_feedback interface. Use the SDK tool for feedback configuration. See RP Hand integration for version boundaries.
Diagnostic records#
Record the hardware/firmware, image, Python/ROS/SDK versions, driver type, interface, ID, configuration, and complete exception. Clearing an error is a request; it does not replace addressing the root cause or formally validating recovery.