Ros2_control_node crash (exit code -6) with Dynamixel grippers on Reachy 2 (PVT03)

Description: We are experiencing a critical crash in the core container when trying to initialize our Reachy 2 (PVT03 unit) with the grippers set to mode: default.

When we configure the reachy.yaml file with mode: fake for the grippers, the system is completely stable and the arms (EtherCAT bus) work perfectly. However, when switching to mode: default, the main control node fails to communicate with the Dynamixel motors, causing the system to crash.

Environment & Observed Behavior:

  • Power/Hardware: When releasing the E-Stop, the gripper motors do their initial LED blink correctly, confirming they are receiving power.

  • USB Ports: The host OS and the Docker container perfectly detect the USB-Serial adapters (/dev/ttyUSB0, /dev/ttyUSB1, and /dev/ttyUSB2 are present).

  • Dynamixel Scan: We ran a Python script using dynamixel_sdk directly inside the core container (with ports freed up). We pinged all possible IDs (1-253) across multiple baudrates (1 Mbps, 4 Mbps, 57600 bps, etc.) on all ports, but we get no response (ping timeout) from any motor.

Specific Error Logs: When starting the core in default mode, the ros2_control_node throws the following sequence of errors before dying:

  1. Dynamixel controller initialization fails: [ERROR]: Failed to init dxl_controller with config file

  2. Failed to load gripper state interfaces: [ERROR]: missing state interfaces: ' l_hand_finger/position ' (and the equivalent for the right hand).

  3. Process death: [ERROR]: process has died [pid 130, exit code -6]

Question for the community/support: Given that the ports open correctly but data packets get no response from the configured IDs (43 and 53), is there any known bug in the humble_1.7.5.2 release that locks the Dynamixel bus? Alternatively, are there any additional baudrate/ID configurations in the gripper .yaml files that we might be missing for PVT units?

Hello @alvaro_solana

Thanks for all the details.

First could you try logging into the main pc and running the command ls /dev/grippers to see if the usb connection is detected.

Also verify that the micro USB cable between the U2D2 and the USB hub is properly connected. If you have a spare cable, you can try replacing it.

Hello @Coralie

Great news! You were absolutely right—it was the micro-USB cable.

Even though the system was detecting the connection through ls /dev/grippers, it must have been a “false contact” or a loose connection. After disconnecting and reconnecting the micro-USB cable between the U2D2 and the USB hub (and making sure it was firmly seated), both grippers are now responding and working perfectly!

Thank you so much for the quick support and for pointing me to the exact cable. It saved me a lot of debugging time.

Best regards, Alvaro

1 Like