Hello! I’m working with a Stretch with a Beta Dex Wrist, and I’m having some trouble with the wrist motors. I set up my environment using the Dex Wrist Installation Guide, and at first, I was briefly able to drive all three DOF of the wrist using the xbox and keyboard teleop.py
scripts. After some use, and a Stretch reboot, the Stretch system check now reads:
lamsey@stretch-re1-1053:~$ stretch_robot_system_check.py
For use with S T R E T C H (TM) RESEARCH EDITION from Hello Robot Inc.
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/home/lamsey/.local/lib/python2.7/site-packages/stretch_body/robot.py", line 84, in run
self.robot.collision.step()
File "/home/lamsey/.local/lib/python2.7/site-packages/stretch_body/robot_collision.py", line 81, in step
new_limits=m.step(status)
File "/home/lamsey/.local/lib/python2.7/site-packages/stretch_tool_share/stretch_dex_wrist/collision_model.py", line 19, in step
x_roll=status['end_of_arm']['wrist_roll']['pos']
KeyError: 'wrist_roll'
---- Checking Devices ----
[Pass] : hello-wacc
[Pass] : hello-motor-left-wheel
[Pass] : hello-motor-arm
[Pass] : hello-dynamixel-wrist
[Pass] : hello-motor-right-wheel
[Pass] : hello-motor-lift
[Pass] : hello-pimu
[Pass] : hello-respeaker
[Pass] : hello-lrf
[Pass] : hello-dynamixel-head
---- Checking Pimu ----
[Pass] Voltage = 13.5132551193
[Pass] Current = 2.09771637969
[Pass] Temperature = 30.7234678513
[Pass] Cliff-0 = 5.6728515625
[Pass] Cliff-1 = -5.36968994141
[Pass] Cliff-2 = -11.794128418
[Pass] Cliff-3 = -5.93902587891
[Pass] IMU AZ = -9.80333328247
[Pass] IMU Pitch = -2.82402253151
[Pass] IMU Roll = 2.2745513916
---- Checking EndOfArm ----
Traceback (most recent call last):
File "/home/lamsey/.local/bin/stretch_robot_system_check.py", line 78, in <module>
if w.motors[mk].do_ping():
File "/home/lamsey/.local/lib/python2.7/site-packages/stretch_body/dynamixel_hello_XL430.py", line 99, in do_ping
return self.motor.do_ping(verbose)
File "/home/lamsey/.local/lib/python2.7/site-packages/stretch_body/dynamixel_XL430.py", line 249, in do_ping
if self.handle_comm_result('XL430_PING', dxl_comm_result, dxl_error):
File "/home/lamsey/.local/lib/python2.7/site-packages/stretch_body/dynamixel_XL430.py", line 226, in handle_comm_result
raise DynamixelCommError
stretch_body.dynamixel_XL430.DynamixelCommError
Also, running RE1_dynamixel_id_scan.py /dev/hello-dynamixel-wrist --baud 115200
(as well as --baud 57600
and --baud 1000000
) yields “ping failed” for all 0-24 IDs. I am able to see the head IDs when I scan for those.
We’ve been having trouble with the wrist cabling, as detailed here. However, I checked the cabling, and nothing seems severed or unseated. When I run RE1_dynamixel_id_scan.py /dev/hello-dynamixel-wrist --baud 115200
, all of the Dex Wrist motors hold their position, so they are receiving power. If the motors are unplugged and replugged, they no longer hold position until that command is run again.
Last, my stretch_re1_user_params.yaml
is:
factory_params: stretch_re1_factory_params.yaml
tool_params: stretch_re1_tool_params.yaml
# You can override factory settings for each device here
# Otherwise defaults to the factory 'robot_params'
# USE WITH CAUTION. IT IS POSSIBLE TO CAUSE UNSAFE BEHAVIOR OF THE ROBOT #
params:
- stretch_tool_share.stretch_dex_wrist.params
tool_none:
baud: 11520
tool_stretch_gripper:
baud: 115200
head:
baud: 115200
wrist_yaw:
baud: 115200
head_tilt:
baud: 115200
head_pan:
baud: 115200
stretch_gripper:
range_t:
- 0
- 6415
zero_t: 4017
baud: 115200
lift:
i_feedforward: 0.75
hello-motor-lift:
gains:
i_safety_feedforward: 0.75
end_of_arm:
devices:
stretch_gripper:
py_class_name: StretchGripper
py_module_name: stretch_body.stretch_gripper
robot:
use_collision_manager: 1
tool: tool_stretch_dex_wrist
log_to_console: 0
tool_stretch_dex_wrist:
use_group_sync_read: 0
Any advice on troubleshooting would be appreciated! We’re out of spare Dynamixel cables, so I haven’t been able to try changing those out. I’m happy to provide any more info, if needed.