Has anyone tried replacing the gripper on the Stretch with a suction gripper? If so, what gripper has worked well for you? Also, what was it like modifying the URDF? Thanks!
Hey @TheMichaelChen, I haven’t tried a suction gripper myself, but I can comment on modifying the URDF.
It’s pretty easy to change the gripper because the URDF is compiled from a modular file that includes the different parts of the robot. The file is called stretch_description.xacro
and includes the following modules:
stretch_main.xacro
- Main body of the robot.stretch_aruco.xacro
- ArUco markers on the robot.stretch_d435i.xacro
- The Realsense depth camera in the robot’s head.stretch_respeaker.xacro
- The ReSpeaker microphone array in the robot’s head.stretch_head_nav_cam.xacro
- The wide angle navigation camera in the robot’s head.stretch_laser_range_finder.xacro
- The planar lidar in the robot’s base.stretch_base_imu.xacro
- The IMU in the robot’s base.stretch_wrist_dw3.xacro
- The quick-connect 3 DOF wrist at the end of Stretch’s arm.stretch_tool_sg3.xacro
- The gripper.
By default, the included tool/gripper module is: stretch_tool_sg3.xacro
. You would create an XACRO file for your suction gripper, and swap the module in the XACRO. Then you would follow the URDF Management tutorial to recompile your URDF.
Hey @bshah thanks for the help! I tried to implement this today and ran into some issues.
I imported the mesh files + custom tool xacro, edited the stretch_description.xacro file, and then ran “stretch_urdf_ros_update.py --model SE3 --tool eoa_wrist_dw3_tool_sg3”. But, nothing after I ran the python script the stretch_description.xacro file was restored to its original state and when I visualized the URDF it appeared unchanged. Do you know if there’s something I did wrong or could do differently?
Hi @TheMichaelChen, the stretch_urdf_ros_update.py
tool is only applicable for the tools we officially support for the robot. In your case I would advise you to manually generate an URDF file out of the modified xactro files using the command ros2 run xacro xacro stretch_description.xacro
to generate your custom URDF.
Hey @Mohamed_Fazil thanks for the help! I was able to successfully create the custom URDF. Is there a way I can visualize the URDF using the stretch_urdf_viz tool? Also, would you recommend making the new tool supported by stretch_configure_tool? What would be the benefits of doing this? Would it enable all the existing scripts to work with the new tool configuration?
@Mohamed_Fazil I still haven’t been able to figure this out. I couldn’t figure out a way to use the stretch_urdf_viz with my custom urdf. Instead I created my own visualization launch file. Is this what you’d recommend?
Also, do you know if there’s a way to configure the new tool to be supported by stretch_configure_tool? If so, would that mean it would work will all the hello robot scripts?
Hey @TheMichaelChen, were you able to figure this out? If you’re looking to visualize a ROS2 URDF, I’d recommend using this launch file: stretch_ros2/stretch_description/launch/display.launch.py at humble · hello-robot/stretch_ros2 · GitHub
If you’re looking to build on stretch_configure_tool, here’s the source code: stretch_body/tools/bin/stretch_configure_tool.py at master · hello-robot/stretch_body · GitHub
I wrote that script, so I can give you some pointers on how to get started.
Thank you @bshah we actually figured it out! I appreciate it