From 70cdbb30fb750fecff267f9a3a71f4b943ce1949 Mon Sep 17 00:00:00 2001 From: hello-chintan Date: Fri, 20 Jan 2023 13:01:22 -0500 Subject: [PATCH] Add dex wrist removal guide --- mkdocs.yml | 3 +- stretch_tool_share/dex_to_standard.md | 77 +++++++++++++++++++ .../dex_to_standard_configure_params.py | 32 ++++++++ 3 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 stretch_tool_share/dex_to_standard.md create mode 100644 stretch_tool_share/dex_to_standard_configure_params.py diff --git a/mkdocs.yml b/mkdocs.yml index a3e8cd5..242cebf 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -186,6 +186,7 @@ nav: - Gripper Removal: ./stretch_tool_share/gripper_removal.md - Gripper Puller: ./stretch_tool_share/gripper_puller.md - Dry Erase Holder: ./stretch_tool_share/dry_erase_holder.md - - DexWrist: ./stretch_tool_share/dexwrist.md + - Dex Wrist: ./stretch_tool_share/dexwrist.md + - Dex to Standard Wrist: ./stretch_tool_share/dex_to_standard.md - Advanced: - Updating URDF: ./stretch_tool_share/updating_urdf.md diff --git a/stretch_tool_share/dex_to_standard.md b/stretch_tool_share/dex_to_standard.md new file mode 100644 index 0000000..068f111 --- /dev/null +++ b/stretch_tool_share/dex_to_standard.md @@ -0,0 +1,77 @@ +# Dex to Standard Wrist +This tutorial will guide you through the process of replacing a gripper with Dex Wrist for one with a Standard Wrist. + +Power down your Stretch before proceeding. + +## Tools required +* 8 [M2x6mm Torx FHCS bolts](https://www.mcmaster.com/90236A104/) (provided) +* 4 [M2.5x4mm Torx FHCS bolts](https://www.mcmaster.com/92703A448/) (provided) +* 2 [M2.5x8mm SHCS bolts](https://www.mcmaster.com/91290A102/) (provided) +* T6 Torx wrench (provided) +* T8 Torx wrench (provided) +* 2mm Hex key (provided) + +## Removing Dex Wrist Gripper +Here we describe removing the Compliant gripper. + +Inspect the parts and ensure that you have everthing you need for the procedure. +![Dex Wrist](https://raw.githubusercontent.com/hello-robot/stretch_hardware_guides/master/docs/images/dex_wrist_cable_detail.png) + +First, remove the cable clip by removing the M2.5x8mm bolts and unroute the Dynamixel cable out of the wrist pitch servo (pink). +![Remove the cable](https://raw.githubusercontent.com/hello-robot/stretch_hardware_guides/master/docs/images/dex_wrist_cable_route_rs.png) + +Next, rotate the wrist yaw joint so the wrist pitch servo body is accessible. Detach the pitch servo from the mounting bracket using the 4 M2.5x4mm screws (C) using the T8 Torx wrench. +![Remove screws](https://raw.githubusercontent.com/hello-robot/stretch_hardware_guides/master/docs/images/dex_wrist_pitch_bracket_attach_rs.png) + +Slide the wrist module out horizontally so that the bearing unmates from its post. +![Remove mating](https://raw.githubusercontent.com/hello-robot/stretch_hardware_guides/master/docs/images/dex_wrist_roll_install2_rs.png) + +Then, lower the wrist module vertically away from the mounting bracket. +![Remove from mounting bracket](https://raw.githubusercontent.com/hello-robot/stretch_hardware_guides/master/docs/images/dex_wrist_roll_install_rs.png) + +Lastly, detach the wrist mount bracket (A) from the bottom of the tool plate by removing the M2x6mm bolts (B) using a T6 Torx wrench. +![Remove tool plate](https://raw.githubusercontent.com/hello-robot/stretch_hardware_guides/master/docs/images/dex_wrist_bracket_install_rs.png) + +## Attaching Standard Wrist Gripper +Here we describe attaching the Standard gripper. + +First, note where the forward direction is on the wrist yaw tool plate. This is indicated by the additional alignment hole that is just outside the bolt pattern (shown pointing down in the image). +![Alignment hole](https://raw.githubusercontent.com/hello-robot/stretch_hardware_guides/master/docs/images/dex_wrist_C_rs.png) + +Then, route the Dynamixel cable through the center of the standard gripper mounting bracket and install the bracket with the 8 screws and T6 Torx wrench. Make sure the forward marking on the bracket matches the forward marking on the wrist yaw. +![image alt text](https://raw.githubusercontent.com/hello-robot/stretch_hardware_guides/master/docs/images/re2/gripper_mount_a_rs.png) + +Affix the 4 screws, with the shorter two going to the servo side, to hold the gripper to the bracket. Lastly, route the dynamixel cable through the back of the gripper and plug it securely into the servo. +![image alt text](https://raw.githubusercontent.com/hello-robot/stretch_hardware_guides/master/docs/images/re2/gripper_mount_b_rs.png) + +## Software Instructions +Once the hardware has been replaced, it's time to make the software changes for Stretch to recognize the Standart Wrist gripper. Turn on the robot and follow the instructions below. + +To revert the changes in stretch_configuration_params.yaml, download the [dex_to_standard_configure_params.py script]() and execute it in a terminal as below: ```bash +python3 dex_to_standard_configure_params.py +``` + +Next, to ensure the correct gripper is recognized by ROS, we need to update the URDF. For this, first open the stretch_description.xacro file like below. +```bash +cd ~/catkin_ws/src/stretch_ros/stretch_description +gedit stretch_description.xacro +``` + +Then, replace the contents of the file with the default [stretch_description.xacro](https://github.com/hello-robot/stretch_ros/blob/master/stretch_description/urdf/stretch_description.xacro). + +Lastly, to generate the updated URDF, execute the following commands in a terminal. +```bash +rosrun stretch_calibration update_urdf_after_xacro_change.sh +cd ~/catkin_ws/src/stretch_ros/stretch_description/urdf +./export_urdf.sh +``` + +You can ensure that the gripper is functional by homing the Dynamixel servos as below: +```bash +stretch_gripper_home.py +``` +```bash +stretch_wrist_yaw_home.py +``` + +If you encounter any issues, please contact us at support@hello-robot.com \ No newline at end of file diff --git a/stretch_tool_share/dex_to_standard_configure_params.py b/stretch_tool_share/dex_to_standard_configure_params.py new file mode 100644 index 0000000..1bd7919 --- /dev/null +++ b/stretch_tool_share/dex_to_standard_configure_params.py @@ -0,0 +1,32 @@ +from __future__ import print_function +import stretch_body.hello_utils +import stretch_body.robot_params +import argparse +from os.path import exists +import sys + +model_name=stretch_body.robot_params.RobotParams()._robot_params['robot']['model_name'] + +if model_name=='RE2V0': + dex_wrist_yaml = { + 'robot': {'use_collision_manager': 1, 'tool': 'tool_stretch_gripper'}, + 'params': [], + 'stretch_gripper': {'range_t': [0, 8022], 'zero_t': 5212}, + 'lift': {'i_feedforward': 1.2}, + 'hello-motor-lift': {'gains': {'i_safety_feedforward': 1.2}}} +if model_name == 'RE1V0': + dex_wrist_yaml = { + 'robot': {'use_collision_manager': 1, 'tool': 'tool_stretch_gripper'}, + 'params': [], + 'stretch_gripper': {'range_t': [0, 8022], 'zero_t': 5212}, + 'lift': {'i_feedforward': 0.54}, + 'hello-motor-lift': {'gains': {'i_safety_feedforward': 0.4}}} + +if not exists(stretch_body.hello_utils.get_fleet_directory()+'stretch_configuration_params.yaml'): + print('Please run tool RE1_migrate_params.py before continuing. For more details, see https://forum.hello-robot.com/t/425') + sys.exit(1) + +configuration_yaml=stretch_body.hello_utils.read_fleet_yaml('stretch_configuration_params.yaml') +stretch_body.hello_utils.overwrite_dict(overwritee_dict=configuration_yaml, overwriter_dict=dex_wrist_yaml) +stretch_body.hello_utils.write_fleet_yaml('stretch_configuration_params.yaml', configuration_yaml, + header=stretch_body.robot_params.RobotParams().get_configuration_params_header())