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:
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: robot_issue.world
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.
edit:
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
Originally posted by mape1082 on Gazebo Answers with karma: 11 on 2016-12-19
Post score: 0
Original comments
Comment by nkoenig on 2016-12-20:
Try using the debugging tools that are built into the gazebo GUI (visualize inertia, collisions, and joints for example). Also, read through the tutorials.
Comment by mape1082 on 2016-12-20:
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.
Comment by hsu on 2016-12-21:
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.
Comment by mape1082 on 2016-12-21:
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.
Comment by TNS on 2017-09-25:
@mape1082 I'm facing the same issue. How did you solve the problem in the end?