Receive IOError when doing teleop with Beta Dex Wrist

I received: “[ERROR] [tool_stretch_gripper]: Pull Status IOError on: /dev/hello-dynamixel-wrist” when running “hello_robot_xbox_teleop.sh”. Any thoughts?

Hi Jianrenw, welcome to the forum and thank you for sharing your issue.

I believe you have the ‘Beta Dex Wrist’ on your robot (please correct me if I’m wrong).

You are seeing a communication error with the Robotis Dynamixel servos. First, check that all of the servo cable connectors are well seated into the servo. It is possible for them to become partially seated if the cables become strained.

If that isn’t the issue then I’d suggest adjusting the communication configuration. he Beta wrist introduced some new configuration settings to Stretch Body that allow for better support of multiple Dynamixel devices.

One such configuration is the ‘use_group_sync_read’ parameter settings. This turns on or off the group reading of serial data from the devices. I’d suggest try turning this off to start.

The Robotis devices can have errors with many devices attached due to the inherent limitations of TTL comms. Stretch Body will attempt to retry a communication transaction on a failure (but will do so in different ways given this setting). More strenuous use of the Dex Wrist is more likely to trigger the issue.

So in your stretch_re1_user_params.yaml add:

tool_stretch_dex_wrist:
   use_group_sync_read: 0

The full parameter settings for the Stretch Dex Wrist Beta can be found here.

Let us know how this changes the behavior. Also, we’ve recently released Stretch Body v0.1.0 which folds the Dex Wrist functionality into the mainline. When you’re ready we should update your robot.