DynamixelHelloXL430 Ping failed... wrist_pitch


I have been following this tutorial to install a ubuntu 22.04 system alongside the existing 20.04 system and performed a robot-level install.
However, everything worked fine until I ran the shell script: ./stretch_new_robot_install.sh. I got an error during the creation process for ament_ws , probably due to the poor internet environment (I was not using a cable connection for internet but only wi-fi):

ERROR: the following rosdeps failed to install
  pip: command [sudo -H pip3 install -U torch] failed

So I tried to create the ament_ws again according to this tutorial:

cd ~\stretch_install
./factory/22.04/stretch_create_ament_workspace.sh -w ~/ament_ws

And this worked. I have successfully created the ament_ws which can be built and sourced. Then I did the firmware update REx_firmware_updater.py --install without any error. I also commented out the following in ~/stretch_user/stretch-re2-xxxx/stretch_configuration_params.yaml to prevent deprecated warning:

#- stretch_tool_share.stretch_dex_wrist.params

But when I moved on to setup the stretch dex wrist, I got the following error when running REx_calibrate_guarded_contact.py --arm:

For use with S T R E T C H (R) from Hello Robot Inc.

Joint not calibrated. Exiting.

Then I tried to perform the calibration first, but the stretch_robot_home.py returns:

For use with S T R E T C H (R) from Hello Robot Inc.

[ERROR] [wrist_pitch]: DynamixelCommError. Mismatched baud rate. Expected 115200 but servo is set to -1.
[WARNING] [wrist_pitch]: DynamixelHelloXL430 Ping failed... wrist_pitch
DynamixelHelloXL430 Ping failed... wrist_pitch
Dnamixel Com error: 
[ERROR] [robot]: Failed to startup connection to robot

Did I miss anything after the creation of ament workspace in ./stretch_new_robot_install.sh? How can I solve the communication error and could a calibration solve the Joint not calibrated error in REx_calibrate_guarded_contact.py --arm?

Hi @Januxes, welcome to the forum! You’re likely correct about a poor internet connection causing the issue initially. I’m glad you were able to create another ament_ws. It looks like the reason stretch_robot_home.py is failing is because the wrist pitch joint isn’t communicating on the correct baud rate. Let’s start by asking the hardware what baud rate it’s currently using:

REx_dynamixel_id_scan.py /dev/hello-dynamixel-wrist

Would you run the above command and share the output here? Additionally, would you tell me the robot’s serial number.

Thanks! The serial number is 2031, and this is the output from the scan:

REx_dynamixel_id_scan.py /dev/hello-dynamixel-wrist
For use with S T R E T C H (R) from Hello Robot Inc.

Scanning bus /dev/hello-dynamixel-wrist
Checking ID 0
Checking ID 1
Checking ID 2
Checking ID 3
Checking ID 4
Checking ID 5
Checking ID 6
Checking ID 7
Checking ID 8
Checking ID 9
Checking ID 10
Checking ID 11
Checking ID 12
Checking ID 13
[Dynamixel ID:013] ping Succeeded. Dynamixel model : XC430-W240. Baud 115200
Checking ID 14
[Dynamixel ID:014] ping Succeeded. Dynamixel model : XL430-W250. Baud 115200
Checking ID 15
Checking ID 16
Checking ID 17
Checking ID 18
Checking ID 19
Checking ID 20
Checking ID 21
Checking ID 22
Checking ID 23
Checking ID 24
Found 2  servos on bus /dev/hello-dynamixel-wrist

I also tried stretch_params.py | grep baud, which gives 115200 for all devices:

stretch_body.robot_params.nominal_params                               param.tool_stretch_dex_wrist.baud                                      115200                        
stretch_body.robot_params.nominal_params                               param.tool_stretch_gripper.baud                                        115200                        
stretch_body.robot_params.nominal_params                               param.tool_none.baud                                                   115200                        
stretch_body.robot_params.nominal_params                               param.eoa_wrist_dw3_tool_nil.baud                                      115200                        
stretch_body.robot_params.nominal_params                               param.eoa_wrist_dw3_tool_sg3.baud                                      115200                        
stretch_body.robot_params.nominal_params                               param.end_of_arm.baud                                                  115200                        
stretch_body.robot_params.nominal_params                               param.head.baud                                                        115200                        
stretch_body.robot_params.nominal_params                               param.head_pan.baud                                                    115200                        
stretch_body.robot_params.nominal_params                               param.head_tilt.baud                                                   115200                        
stretch_body.robot_params.nominal_params                               param.stretch_gripper.baud                                             115200                        
stretch_body.robot_params.nominal_params                               param.wrist_pitch.baud                                                 115200                        
stretch_body.robot_params.nominal_params                               param.wrist_roll.baud                                                  115200                        
stretch_body.robot_params.nominal_params                               param.wrist_yaw.baud                                                   115200        

Hi @Januxes, it looks like from the output that the wrist pitch and wrist roll joints aren’t present. This might be because your robot doesn’t have the Dex Wrist tool, which was an optional accessory for Stretch 2. Could you take a picture of the tool at the end of the robot’s arm?

If your Stretch doesn’t have the Dex Wrist tool, it likely has the Standard Gripper tool. Let me know if you had mistakenly run the stretch_new_dex_wrist_install.sh script.

Here is the picture:

I just noticed that on the side of the wrist there is an LED blinking yellow light:

Hi @Januxes, thanks, that tool is called the “Standard Gripper”. The blinking yellow LED on the side of the wrist is innocuous.

Here are instructions to change the tool your robot is configured to use:

  1. Edit stretch_configuration_params.yaml in your robot data directory to change the robot.tool parameter. It should look like this:
        tool: tool_stretch_gripper
  2. Create a URDF that includes the standard gripper tool using these instructions.

You should be able to home the robot now. Let me know if you have any questions.

Thanks! I changed the tool setting in the .xacro file, built the workspace again and it worked! Sorry I mistaken the standard gripper for Dex Wrist. Now I finally can home the robot and calibrate it correctly.

No worries @Januxes! Glad you got it all working!