Changing Tools
Stretch supports interchangeable end-of-arm tools. The software has a single configuration parameter, robot.tool, which dictates the current tool configuration active on the robot. This parameter is located within either the stretch_configuration_params.yaml or stretch_user_params.yaml files inside your robot's $HELLO_FLEET_PATH directory. It ensures that the appropriate kinematics, collision models, and software interfaces are strictly loaded upon startup.
Stretch Supported Tools
The official supported end-of-arm tool configurations are based on your robot model and can be found in the list below.
Supported Stretch 4 Tools
eoa_wrist_dw4_tool_sg4eoa_wrist_dw4_tool_pg4eoa_wrist_dw4_tool_tableteoa_wrist_dw4_tool_calibrationeoa_wrist_dw4_tool_nil
You can run the following command in a terminal to print out the active robot.tool parameter:
stretch_params.py | grep robot.toolTo change the active tool configuration, use the stretch_configure_tool CLI utility. Running this command will guide you through updating your system to point to the newly selected tool automatically:
stretch_configure_toolAdding a New Tool To Stretch
To add new end of arm hardware to Stretch and connect it to the software interface, you will need the mesh files and the URDF. These are typically exported from the CAD assembly or obtained from the manufacturer.
In the
stretch_urdf_iishared model tool directory (e.g. SE4_tools), create a directory for your tool with the following structure:
Process the auto-generated tool URDF:
Name the tool root link
link_quick_connect_interface. This is the connection point to the rest of the arm.This can be accomplished in a few ways:
Name the connecting link
link_quick_connect_interfacebefore generating the URDFRename the existing root link. Ensure all instances of the name are updated.
Add a new link and joint to the URDF file manually. This will be a "ghost" link with no collision or visual geometry, and the joint will be an identity transform to the existing root link.
Ex:
Run the tool processing script
process_new_tool.pyand follow the prompts. This will create a config file for auto-generated collision meshes if one does not already exist, generate collision meshes, and update the tool URDF to use them. To change the collision mesh settings, edit the config file and re-run the script.Add the tool to
nominal_paramsin robot_params_SE4.py.Add the tool name to the
supported_eoalist. This must be the same name as the folder instretch4_urdf.Add a new entry for the tool in the self_collision_mujoco field
Add the tool name as a new key in the
nominal_paramsdictionaryIf the new tool is not actuated, it can use the existing
SE4_eoa_wrist_dw4_tool_nilobject.If the new tool requires a control interface, add a dictionary for the new tool in the EndOfArm section above. Follow the structure of
SE4_eoa_wrist_dw4_tool_sg4or another existing end of arm tool.Define a new class in the top level
py_module_nameand create the class in end_of_arm_tools.py and a class of the same name with_Clientappended in robot_client.pyAdd the tool actuator under
devicesalong with the wrist_pitch, wrist_roll, and wrist_yawdevice_paramsexpects another dictionary defined in the EOA joints section above the EndOfArm sectionpy_module_nameandpy_class_namepoint to the tool's APIFor ROS support, include the
rossection.py_module_nameandpy_class_namepoint to the command group that will be used by the ROS driver. The standard module is command_groups.py.
Last updated
Was this helpful?
