ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Gazebo has two threads, one for physics and one for rendering. If you are running headless, only the physics thread is active. Approximate durations for an empty world with one PR2 in it running on a 2.8GHz i7 can be broken down to following serial processes:

  • collision detection (~1e-5 sec without subscribers to the laser scanners)
  • physics update (~1e-3 sec with 10 quickstep inner iterations)
  • model (sensors, controllers, plugins) updates (~1e-6 sec without subscribers to laser scanners, but the range sensors/plugins can slow down this step significantly)

When an object + task is introduced, individual parts can take significantly longer. For example, when PR2 is holding a trimesh object such as in the example of the pr2_tabletop_manipulation_gazebo_demo package, each finger tip introduces around 20 contact joints with the object, totaling about 40 contact joints in all, resulting in physics updates taking about 2x more time to compute. In addition, physics thread in the grasping case can take up to 1.75 full cores.

When rendering thread is turned on, its update rate is much slower, and interlocks with the physics thread via mutexes at various places.

Hope this helps.