Gazebo | Ignition | Community
Ask Your Question

why my model seems to defy the gravity, and seems to be grabbed from the top when moving?

asked 2016-12-19 12:09:37 -0500

mape1082 gravatar image

updated 2016-12-21 11:25:08 -0500

Dear all, I am new to ROS and Gazebo. I built a 4 wheeled model that I can control via a teleop program. I can also spawn the model with an arm on top of it, which includes a two finger gripper.

If I spawn the robot without the arm, then it would behave realistically (at least to my eyes) -aside from the fact the it seems to move by itself very little, and I confirmed this happens as well to the Husky model from Clearpath- therefore I believe this is normal. However, when I spawn the robot including the arm, and I command the robot to move forward or backwards, it behaves very strange:

image description

 It would seem as if someone is grabbing the arm, so the front or back wheels are lifted when moving to the front or to the back, accordingly. When I stop issuing the command, the vehicle will return slowly to full contact with ground. 

 If I make the mass of the whole arm including gripper, minimal, the behavior disappears, but then another problem occurs: If I try to grab a beer can with the gripper, the fingers would vibrate, shake and the can would almost be thrown away.

There may be something with the modeled physical properties of the wheeled base and/or the arm and the gripper which I cannot seem to fine tune properly.

Any guidance appreciated.

edit: URDF file: robot_issue.urdf.model World file:

Test: In Translation mode, select the robot, move it up, and drop it. It can be seen how it falls slowly as if it was hold from the arm. If I remove the arm, it falls ok.


Video showing my robot side by side with the husky. I have compared frictions, gravity, and other settings and cannot find what makes them behave different in the same world.

I noticed something strange also, which happens with or without loading the arm. If I lift my robot and drop it , gazebo shows first it going quickly to the ground and then brings it back to the position it was, and then it lets it fall. This does not happen with the Husky.

Any ideas where to look at? Thanks

edit retag flag offensive close merge delete


Try using the debugging tools that are built into the gazebo GUI (visualize inertia, collisions, and joints for example). Also, read through the tutorials.

nkoenig gravatar imagenkoenig ( 2016-12-20 11:07:20 -0500 )edit

Thanks a lot. I tried that, added simplified model of the robot for your reference. Followed examples (among them, the Husky robot on which they add empty links and also separate links which are intended for inertia declaration), and documentation, yet the behavior continues to be the same. don't find an explanation or how to remove this unwanted behavior.

mape1082 gravatar imagemape1082 ( 2016-12-20 18:39:57 -0500 )edit

do you have position controllers running on the arm? if a controller is calling Joint::SetPosition or SetVelocity to the arm joints, it will interfer with dynamics.

hsu gravatar imagehsu ( 2016-12-21 11:21:21 -0500 )edit

Thanks. Yes, I do have position controllers (added the code to the description above). It is difficult to see how a position controller may affect the dynamics of the whole robot. If I have a position controller on a joint and I instruct the elbow to move 0.5 rad , then this should not make the model float in the air. However, will try see what other controllers I could use. Thanks for input.

mape1082 gravatar imagemape1082 ( 2016-12-21 11:49:55 -0500 )edit

@mape1082 I'm facing the same issue. How did you solve the problem in the end?

TNS gravatar imageTNS ( 2017-09-25 11:10:11 -0500 )edit

3 Answers

Sort by ยป oldest newest most voted

answered 2016-12-21 11:56:19 -0500

hsu gravatar image

position control breaks laws of dynamics by teleporting parts around. you are seeing the effect of that propagating to the whole model. if you are using ROS control, the is an effort based position controller that I highly recommend. after that, it's all about making sure things are physically realistic as a starting point. that will get you a working albeit not necessarily efficient model. then the next step is to optimize for performance.

edit flag offensive delete link more



answered 2018-03-26 08:02:15 -0500

znbrito gravatar image

@hsu I am having a similar problem. I am right now trying to control the Robotis Manipulator-H arm which is fixed to the base plate of a Husky robot. I am controlling the manipulator using MoveIt!, so I am using a position controller, more specifically a position_controllers/JointTrajectoryController. I am also using a joint_state_controller/JointStateController. The problem is that whenever I try to move the husky, he shows the exact same behaviour as the robot in this simulation. Do you know how can I overcome this problem? Thanks in advance!

edit flag offensive delete link more

answered 2017-02-10 14:44:43 -0500

mape1082 gravatar image

Answers given in the comments.

edit flag offensive delete link more

Question Tools



Asked: 2016-12-19 12:09:37 -0500

Seen: 4,415 times

Last updated: Feb 10 '17