Strange physics behavior while grasping
I have a grasping simulation set up where I torque control the Barrett hand and try to grasp a simple object such as the cylinder (as shown in the video here). These are the physics parameters that I am using:
<?xml version="1.0" encoding="UTF-8"?>
<sdf version="1.5">
<world name="default">
<physics type="ode">
<gravity>0 0 0</gravity>
<ode>
<solver>
<thread_position_correction>1</thread_position_correction>
<island_threads>6</island_threads>
<type>quick</type>
<iters>100</iters>
<sor>1.0</sor>
</solver>
<constraints>
<cfm>0.0</cfm>
<erp>0.5</erp>
<contact_max_correcting_vel>1000.0</contact_max_correcting_vel>
<contact_surface_layer>0.00</contact_surface_layer>
</constraints>
</ode>
<max_step_size>0.0004</max_step_size>
<real_time_update_rate>0.0</real_time_update_rate>
</physics>
<!-- A global light source -->
<include>
<uri>model://sun</uri>
</include>
<include>
<uri>model://beer</uri>
<pose>0.0 0.0 0.0 0 0 0</pose>
<static>false</static>
</include>
</world>
</sdf>
As you can see, the gravity is disabled and only the contact forces are acting on the object. Nevertheless, the object moves in a opposite direction. The model of the hand has all inertia parameters filled out (which I double checked in MeshLab). I have tried playing around with kp and kd parameters for each link, as well as changing mu and mu2 parameters and simulator step size, and in each case the results were the same.
I also opened an issue to gazebo as this seems like an obvious bug, but would still like to check if any of you faced a similar issue.