Home | Tutorials | Wiki | Issues
Ask Your Question

Robot tilting problem on linear acceleration

asked 2017-06-26 07:50:37 -0500

SorinV gravatar image

updated 2017-06-28 08:45:05 -0500

Hello, I am trying to simulate someting close to the Nexus 3-wheeled platform.

When I accelerate with 2 wheels in the direction of the third, the latter wheel gets raised into the air. I used the fomulas on wikipedia to calculate my inertia. For the mass I tried with 10, 100, 200 kg with the same tilting result.

I mananged to set the friction directly in the .sdf file generated from my urdf.

    <fdir1>0 1.0 0</fdir1>

(I set it directly in the .sdf file because i noticed another problem described here.)

I also setup the joint model stiffness parameters kp, kd like so:


in order to have some stiff wheels when in contact with the ground plane, otherwise they pass through.

Would I need to setup something else? I am using ros-kinetic and the gazebo delivered with it, Gazebo7. (I use ros_control ( a modified version of diff_drive_controller for the 3-wheeled base) and of course continuous joints)

Tnx and regards!


I also had a small arm on top of my robot, with a really small weight compared to the base but with it's own inertia. I deleted all that and now I just have a base with 3 wheels and it works fine. For now it's ok for what I need but for the future I will need the arm also.

edit retag flag offensive close merge delete


It's the third wheel that raises? How high? What's the acceleration? Do you have a video of the behavior?

sloretz gravatar imagesloretz ( 2017-06-27 12:58:17 -0500 )edit

Yes the third wheel (aith the base link too, not just the wheel alone), like it had a huge inertial value on the robot. Not too high because my robot is low so it hits the ground with the back of the base_link. I made an update in my question.

SorinV gravatar imageSorinV ( 2017-06-28 08:42:46 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2017-07-31 07:14:22 -0500

SorinV gravatar image

updated 2017-07-31 07:15:06 -0500

So i had this problem because of a prismatic joint I was using:

I managed to use velocity_controllers/JointPositionController instead of position_controllers/JointPositionController with the prismatic joint. You just need to add a PID for it. Here's an example.


  type: "position_controllers/JointPositionController"
  joint: arm_joint


  type: "velocity_controllers/JointPositionController"
  joint: arm_joint
  pid: {p: 100.0, i: 0.01, d: 1.0}

And for the transmission:

<hardwareInterface>hardware_interface/VelocityJointInterface </hardwareInterface>

Same answer/problem here.

edit flag offensive delete link more
Login/Signup to Answer

Question Tools

1 follower


Asked: 2017-06-26 07:50:37 -0500

Seen: 36 times

Last updated: Jul 31