For the complete documentation index, see llms.txt. This page is also available as Markdown.

Working with the Robot Model

End Effector Tools for Stretch

Standard Gripper

A compliant gripper with suction cup fingertips and calibrated kinematics for free-space opening/closing using the fingertip ArUco markers, allowing for grasp estimation.

base

Tablet

A 13" tablet holder. This tool is often paired with Web Teleop, enabling you to use Stretch as a telepresence robot.

base

Calibration Grid

A ChArUco calibration grid with visual and retroreflective fiducials. This robot can wave this tool around and calibrate its own head sensing suite autonomously.

base

Adding 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.

  1. In the stretch_urdf_ii shared model tool directory (e.g. SE4_tools), create a directory for your tool with the following structure:

  1. 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_interface before generating the URDF

      • Rename 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:

  1. Run the tool processing script process_new_tool.py and 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.

  2. Add the tool to nominal_params in robot_params_SE4.py.

  • Add the tool name to the the supported_eoa list. This must be the same name as the folder in stretch_urdf_ii.

  • Add a new entry for the tool in the self_collision_mujoco field

  • Add the tool name as a new key in the nominal_params dictionary

    • If the new tool is not actuated, it can use the existing SE4_eoa_wrist_dw4_tool_nil object.

    • If the new tool requires a control interface, add a dictionary for the new tool in the EndOfArm section above. Follow the strucutre of SE4_eoa_wrist_dw4_tool_sg4 or another existing end of arm tool.

      • Define a new class in the top level py_module_name and create the class in end_of_arm_tools.py and a class of the same name with _Client appended in robot_client.py

      • Add the tool actuator under devices along with the wrist_pitch, wrist_roll, and wrist_yaw

        • device_params expects another dictionary defined in the EOA joints section above the EndOfArm section

        • py_module_name and py_class_name point to the tool's API

      • For ros support, include the ros section. py_module_name and py_class_name point to the command group that will be used by the ros driver. The standard module is command_groups.py.

Last updated

Was this helpful?