Prismatic Joint not working properly with ROS2 & Gazebo 11

asked 2020-07-31 16:01:31 -0500

I posted this question on the ROS forum as well but as I still haven't found the answer, I'll repost it here.

I have been trying to make a robot model with a prismatic joint which moves in z axis. It has a lift link and uses joint state to actuate the motion. The whole setup worked great with ROS1 and loading robot description from .xacro files (x.urdf.xacro, x.transmission.xacro and x.gazebo.xacro) with spawn_urdf form gazebo_ros

However, when I started porting the robot model for ROS2, I soon discovered that this no longer works properly and I had to create a standalone sdf 1.5 file. I managed to get almost everything working in this format, except the prismatic lift joint. The lift platform keeps dropping to the floor if z axis unit vector is selected. If we use x or y axis, the platform is on the correct position, but sheers in x or y direction.

ROS2 Robot

This is the link to my robot's model in ROS2 and this is the robot description from ROS1.

I am using turtlebot3 and dolly as ideal examples of robots launching with gazebo in ROS2. The robot itself is based on turtlebot3 with 2x the size and additional lift joint.

What am I doing wrong here? Also, does anyone know any other ROS2 based gazebo models for such warehouse robots which I can refer to? Also, can we launch .xacro files using xacro plugin in ROS2?

Moreover, after investigation, I found out that if I disable gravity or apply any force which has an upward z component, the platform can go high up freely.

Thanks!

For reference: this is the video of my robot operating in ROS1

edit retag flag offensive close merge delete