Difference with simulator

Our lab has ordered a stretch 3 from your company. But it will take 1-2 months to arrive at our lab. Now, I am testing my own code using simulator from GitHub - hello-robot/stretch_ros: ROS packages for the Stretch mobile manipulators from Hello Robot Inc.. I guess it is not corresponding to the latest stretch version. Is it? What’s the main differences between the gazebo simulator from the above link with the real stretch 3 robot, like sensors? rostopics? services? Thank you very much for your help.


Hi @Yongbo, welcome to the forum! Yes, the Gazebo Classic simulator in Stretch ROS 1 simulates Stretch RE1 and Stretch 2, but not Stretch 3. In terms of simulation differences, you’ll notice that the wrist Realsense camera, the head nav camera, and the hardware description (URDF) from Stretch 3 are not simulated. There’s also other differences between the API provided by the simulator and the API provided by the robot’s ROS drivers. These differences are described here.

Thank you very much for your response. Do you have the complete URDF file for the new robot? You know I would like to use the arm, so the accurate URDF is important for the inverse kinematic.

Yes, you may find a complete URDF for Stretch 3 in this repo: GitHub - hello-robot/stretch_urdf: URDFs for the Stretch mobile manipulators from Hello Robot Inc.

Thank you very much.

Hi @bshah , because the robot does not come to our lab, I am using the gazebo to load the URDF. In order to follow the stretch_ros, I manually change the link “link_gripper_s3_body” by “link_gripper” in stretch_tool_sg3.xacro file. After loading it, I find that this urdf is not similar (seem to be not correct) to the controllable one in stretch_ros. The lift is inserted into the ground and the base_link is shown as a large block, which are strange, as shown in the first figure. The old simulator stretch_ros is fine as shown in second figure. Any similar urdf with the controller and fit for gazebo for stretch 3?
Screenshot from 2024-03-24 19-07-21

I am a new user. One figure only for my response. The second one is here. Thank you very much.

Hi @Yongbo, looks like URDFs in Stretch URDF include a ground link because the link is used in the self-collision avoidance feature in Stretch’s SDK to prevent unwanted collisions between the arm and the ground.

Screenshot from 2024-03-26 23-10-45

You can remove it by looking for link_ground and joint_ground in the stretch_main.xacro file for the URDF you’re copying.

Sorry for my delay. I am just back from annual leave. Yes, that link is the ground, which is easy to remove. However, the inserted long tube is the arm “link_arm_l3”. Could you have a check whether the file is originally correct or not? Thank you very much. I am using “stretch_description_SE3_eoa_wrist_dw3_tool_tablet_12in.urdf”.

Hi @Yongbo, I’ve visualized the URDF (“stretch_description_SE3_eoa_wrist_dw3_tool_tablet_12in.urdf”) and everything looks okay:

I’d recommend publishing your experiment to a Github repo, so I can try to reproduce the issue you’re seeing.

Thank you very much for your response. I have found the error and now the robot can be launched in gazebo. I find the gripper has been changed with high degree of freedom. The previous version in stretch_ros only define the control of the yaw. Do you have any new file with control for the new gripper? Or a better option is the control file for the whole robot run in ROS1. Thank you very much.

Hi @Yongbo, that’s great to hear! Would you describe the error / what you’ve changed to fix it?

You can find the definition of the pitch/roll transmissions in this file:

As mentioned before, It is my fault. I manually change the link “link_gripper_s3_body” by “link_gripper” in stretch_tool_sg3.xacro file, which is wrong. Thank you very much for your quick response.

1 Like

Sorry to trouble you again. Today, I try to use moveit to control the new robot. But I find that it seems that the link link_gripper_s3_body has collision with the link ‘link_gripper_finger_right’ at the start state and the moveit group can not initialize the planning problem. As shown below:

Found a contact between ‘link_gripper_s3_body’ (type ‘Robot link’) and ‘link_gripper_finger_right’ (type ‘Robot link’), which constitutes a collision. Contact information is not stored.
[ INFO] [1713143859.952075948, 420.239000000]: Collision checking is considered complete (collision was found and 0 contacts are stored)
[ INFO] [1713143859.952094551, 420.239000000]: Start state appears to be in collision with respect to group stretch_arm

Do you know how to revise “link_gripper_s3_body” to avoid the collision and keep the urdf following the real robot? I have upload my urdf here GitHub - cyb1212/urdf: The used robot. I am using “urdf/xacro/stretch_description_SE3_eoa_wrist_dw3_tool_sg3.xacro” and its genrated urdf “urdf/xacro/stretch.urdf”.

Hey @Yongbo, would you mind opening a new thread to discuss this? It’ll be helpful to keep the two different topics in separate threads.

I have open a new topic in How to add moveit to the new URDF? Or revise URDF?.