We are making great progress on Gazebo's goals for version 4.0. The first item tackled is an updated tutorial system. Until now, Gazebo tutorials have resided on http://gazebosim.org/wiki/Tutorials. While the wiki format is convenient in many ways, it was not well suited to our needs. For instance, tutorial versioning is difficult, and there was limited edit control.
The new tutorial system is integrated directly into the main Gazebo website. Tutorial information is pulled directly from the new gazebo_tutorials GitHub repository. This approach supports the fork --> modify --> pull-request method of editing and creating new tutorials.
While we were at it, we gave the tutorials a face-lift and added version information to each tutorial. A dropdown in the upper-right of each tutorial allows you to switch between content appropriate for different versions of Gazebo. An Edit button, located directly to the right, allows you to quickly and easily modify the tutorial. For more information about creating and editing tutorials, please see the Contribution Tutorial.
Enjoy the new tutorials!
The fifth and final part in our series of posts about new features in Gazebo 3.0 covers the new Gazebo command-line tool.
Taking a cue from many popular command line interfaces, such as mercurial and git, we have unified the Gazebo command-line interface into one tool called gz. Previously, multiple independent tools (gztopic, gzlog, gzsdf, etc) provided system introspection and control for Gazebo. These tools, while powerful, had slightly different syntax, lacked proper testing, and were difficult to remember. The new gz tool addresses all these issues, and even adds a few new features such as joint control.
To see a list of the available commands, simply type gz help. Similarly, get help for a specific command using gz help <command>.
The new command line tool also incorporates tab-completion. This improvement will simplify the process of topic introspection.
We hope you enjoy this new tool as much as we do!
The fourth part in our series of posts about new features in Gazebo 3.0 covers multiple physics engines.
Gazebo 3.0 will supports the use of four different physics engines:
We are especially excited about the addition of DART and Simbody, which are Featherstone-based engines optimized for joint chains.By comparison, Bullet and ODE are maximal coordinate solvers which are optimized for performance over many independent models. Each physics engine was developed by its own community, motivated by a particular application domain, from gaming (Bullet) to simplified robot dynamics (ODE) to biomechanics (Simbody) to computer graphics and robot control (DART). We have been working with teams from Georgia Tech (DART) and Stanford (Simbody) to integrate these two physics engines, and we hope you find them both very useful.
To our knowledge, this is the first time that such a diverse set of physics engines has been supported in one simulator.
By supporting multiple engines, Gazebo allows the user to choose the approach that performs best for his or her needs. For example, maximal coordinate solvers like ODE and Bullet perform well when simulating cluttered environments, while Featherstone-based solvers like DART and Simbody are potentially more accurate in simulating articulated systems such as humanoid robots.
All four physics engines can be accessed through Gazebo’s generic physics API. Users can simulate dynamic models created using Simulation Description Format (SDF) or Unified Robot Description Format (URDF) with any of the four supported physics engines.
Below is a video demonstration of the Atlas robot performing a dynamic walking task with Boston Dynamics's proprietary walking controller. The results from all four physics engines are superimposed.
The third part in our series of posts about new features in Gazebo 3.0 covers breakable joints.
Gazebo now supports breakable joints through the use of the BreakableJointPlugin attached to a force-torque sensor on the desired joint. A breaking force can be specified in the xml parameters for the plugin, and the plugin will detach the joint when the force-torque sensor detects a force magnitude that exceeds the threshold.
An example model named breakable_test has been added to the gazebo_models database. The example consists of an array of small blocks connected to the world with breakable joints. The blocks can be dislodged from the wall through collisions with heavy objects or by increasing gravity.