Gazebo Newsletter 11 July 2018

The previous newsletter described SubT and indicated that development has started to focus on its needs. SubT is a long running program with a final competition to be held in the fall of 2021. This schedule places certain restrictions on the set of software that we can use, assuming we want to avoid EOL distributions at the time of the final competition. A larger concern is the scope of simulation requirements, which can be summarized as tens of heterogeneous robots operating in underground spaces with a traversable length of tens of kilometers.

Based on time schedule and feature requirements, we are pursing a two-phased development strategy. Phase 1 is aimed at satisfying near term needs through the use of existing software which includes Gazebo 9, ROS Melodic and Ubuntu Bionic. In this phase, the largest limitation will be scale. The size of robot teams and environment complexity will be restricted. Phase 2 will address scale issues and incorporate new features through the use of the Ignition libraries in Gazebo 11.

You may have noticed that Gazebo version 10 was skipped. This is because we are too close to the Gazebo 10 release date to make the changes needed for SubT. So, Gazebo 10 will be an incremental improvement to Gazebo 9 and Gazebo 11 will contain the major new features required by SubT.

As a user and/or developer of Gazebo, you can expect the following.

  1. Gazebo 9: Stable and released with an EOL on Jan 25, 2023
  2. Gazebo 10: To be released on Jan 24, 2019 with an EOL on Jan 24, 2021
  3. Gazebo 11: Beta to be released around Sept or Oct 2018. Incremental improvements over the first 1.5 years of SubT. Final version to be released on Jan 29 2020 with an EOL on Jan 29 2025

Community Contributions

We'd like to thank the following person for their contributions to Gazebo.

Releases

The following list includes releases made over the past month.

  • Gazebo 7.13.1
  • Ignition Math 5.0.0~pre2

Tip of the month

Ignition Transport 5, currently in prerelease, ships with a message logging API and a helpful command line tool. Logging is acheived by writing serialized Protobuf messages along with metadata, such as topic name and message type, into an SQLite3 database.

We chose to use SQLite3 due to its stability, performance, cross-platform support, and large community with numerous tools, applications, and language bindings. Performance is an important consideration since we may need to log large quantities of messages, both in size and count. We evaluated the performance of SQLite using statistics published by the authors of SQLite.

We also ran a few tests ourselves to augment the official SQLite statistics. For 10KB messages we achieved a write speed of 210MB/s or roughly 21k msgs/sec. For comparison a 4.5GB file copied from one part of a disk to another achieved a rate of 189MB/sec. This result indicates that SQLite is utilizing the disk well, and is likely bound by disk bandwidth.

Take a look at this tutorial to get started with logging through Ignition Transport.

Featured Model

This month's featured model is a Toyota Prius equipped with a variety of sensors. The sensors include an IMU and GPS along with set of cameras, sonars, and LIDARs. This Prius model is perfect for testing and developing autonomous vehicle software.

Bugs

Questions and Answers

Most recent active questions

Gazebo Newsletter 10 June 2018

We have started to focus our development efforts on the DARPA Subterranean Challenge. Here is a write up about the challenge, originally posted on the Open Robotics blog:

If you haven't already heard of the DARPA Subterranean Challenge (or "SubT"), it's time to start paying attention.

With SubT, DARPA "aims to develop innovative technologies that would augment operations underground. The SubT Challenge will explore new approaches to rapidly map, navigate, search, and exploit complex underground environments, including human-made tunnel systems, urban underground, and natural cave networks."

DARPA announced SubT back in December, but Program Manager Dr. Timothy Chung recently announced that Open Robotics has been charged with creating and running the simulated track of the challenge.

Unlike our involvement in the DARPA Robotics Challenge in which we created a simulated environment in Gazebo for a single robot – the Atlas, SubT allows for a wide variety of robot participants.

You can read more about it in today's Wired: DARPA'S Next Challenge? A Grueling Underground Journey

DARPA will be announcing more details at the SubT Challenge kickoff in Fall 2018.

Community Contributions

We'd like to thank the following people for their contributions to Gazebo.

Releases

The following list includes releases made over the past month.

  • Gazebo 9.1.1
  • Gazebo 8.2.0
  • Gazebo 7.13.0
  • Ignition Common 1.1.1
  • Ignition Common 2.0.0~pre1
  • Ignition Fuel Tools 1.2.0
  • Ignition Cmake 0.6.0
  • Ignition Cmake 1.0.0~pre3
  • Ignition Msgs 2.0.0~pre3
  • Ignition Transport 5.0.0~pre1

Tip of the month

Visualization markers allow you to insert and modify shapes into Gazebo's 3D scene at runtime. For example, you can draw line segments to visualize the path of a mobile robot, or add custom sensor data visualizations.

Visualization markers are accessible through the "/marker" service on Ignition Transport which accepts a marker.proto message.

The following example program will help you get started: https://bitbucket.org/osrf/gazebo/src/default/examples/stand_alone/marker/.

Featured Model

The featured model this month is a traffic light. The lights on this model can be turned on by setting their emissive color either via SDF or programmatically. Take a look at this pull request for an example of traffic light control.

Bugs

Questions and Answers

Most recent active questions

Gazebo Newsletter 9 May 2018

Progress has been made on various fronts during the month of April. Ignition Physics has seen the first of a series of pull requests to define a physics abstraction layer merged. Model version support is under development on Ignition Fuel. Improved support for material properties and shapes are being added to Ignition Math. Message logging and playback has been added to Ignition Transport. And finally, Ignition Rendering can now render text in a 3D scene.

Community Contributions

We'd like to thank the following people for their contributions to Gazebo.

Releases

The following lists includes releases made over the past month.

  • Gazebo 7.12.0
  • Ignition CMake 1.0.0~pre2
  • Ignition Common 1.1.0

Tip of the month

View Angle Widget

A 3D scene projected onto a flat screen can make placement or inspection of objects difficult. The toolbar, located above Gazebo's main scene view, contains a Change View icon that looks like a wire-frame box with one surface colored orange. Selecting the Change View icon displays a widget with multiple view options.

Each of the boxes with a colored face in the Change View widget will move your camera to a particular view orientation. For example, the box with a colored face on the left will move your camera to view the scene from the left. Use the button with a home icon to move your camera back to its position and orientation when Gazebo was opened.

Finally, the drop-down located at the bottom of the Change View widget allows you to select from Perspective or Orthographic projections. While not a realistic depiction of the scene, an orthographic projection can be handy when placing and scaling objects.

For more information about the toolbar visit the User Interface Tutorial

Featured Model

The featured model this week is a gazebo made of wood.

Bugs

Questions and Answers

Most recent active questions

Gazebo Newsletter 8 April 2018

The Gazebo newsletter is back, with the addition of Community Contributions!

The Gazebo Roadmap has been updated to reflect the development direction of Gazebo and the Ignition libraries. Most new work is happening in the Ignition Libraries where a physics abstraction layer is taking shape, message logging is almost complete,new widgets are being added to a plugin-based graphical user interface, and a rendering abstraction can make use of either a path tracing or opengl rendering engine.

Community Contributions

We'd like to thank the following people for their contributions to Gazebo. This is not an exhaustive list. Apologies if we accidentally missed your contributions.

Releases

The following lists includes releases made since the release of Gazebo 9 in January of this year.

  • Gazebo 7.11.0
  • Gazebo 8.4.0
  • Gazebo 8.4.0
  • Ignition CMake 0.5.0
  • Ignition Tools 0.1.0
  • Ignition Transport 3.1.0

Tip of the month

A relatively new feature in Gazebo is the ability to use lens flares in camera sensors. Check out the lensflare_plugin example world to get started.

Featured Model

A playground that can add a bit of interest to your outdoor environments.

Bugs

Questions and Answers

Most recent active questions

Download (9.0.0)

Changelog | Migration Guide | Roadmap

Release Highlights

We are proud to announce the release of Gazebo 9. This version of Gazebo has long term support with an end-of-life on January 25, 2023.

An ongoing effort over the past few years has been to break out Gazebo's internal libraries into a set of libraries under the Ignition Robotics project. These libraries will move Gazebo away from a large monolithic code base. An additional goal is to increase development transparency and adoption of features that may have been hidden behind the veil of Gazebo.

While still in the early stages of development, a few of the Ignition libraries are ready for broad public consumption. These libraries include Ignition Math, Messages, and Transport. Libraries higher on the dependency stack, such as Rendering, Sensors, Physics, and GUI will see progress toward 1.0 releases over this year.

The 2018 roadmap for Gazebo and the Ignition libraries will be forthcoming in the next couple weeks.

The sections below describe a few projects in a bit more detail. Enjoy the new release, and thanks for all the contributions,

  Gazebo Development Team

Ignition Robotics Documentation Platform

An updated documentation platform has been created for Ignition Robotics at ignitionrobotics.org. This website details the available libraries, along with a brief description for each and links to API documentation and tutorials, which are sparse at this point. A version history for each library is also displayed with links to the version's documentation.

Ignition Fuel

Around the time of the DARPA Robotics Challenge, Gazebo faced the problem of where and how to host simulation models and related assets. At the time, we opted to use a Bitbucket repository along with a clone backed by Apache.

Gazebo has since outgrown the Bitbucket and Apache approach. Key problems that we have encountered are scalability, up-time, hosting meta-data, inclusion of worlds and other assets, and ease of use. After studying available options, such as using S3, we decided to provide a new simulation asset hosting service called Ignition Fuel.

Ignition Fuel is in Beta, and does not replace the existing Bitbucket+Apache solution. When Fuel moves out of beta, there will be an extended transition period where both hosting solutions will be active and maintained. The exact time frame will be determined when we are comfortable with the state of Fuel.

On Ignition Fuel you can find a list of available models. Logging into the site allows you to upload new models. There is also information about how to access the models programmatically through a REST API. Gazebo 9 optionally uses this API to list and download models from Fuel. In the tutorial section of Ignition Fuel Tools, you can find examples of how to manage models from a Fuel server programmatically.

The primary difference between Fuel and other asset hosting sites is that the models hosted on Fuel will contain not only visual information but also simulation information, such as links, joint, and inertia. Fuel will also move toward inclusion of worlds and potentially simulation plugins.

Ignition Transport Highlight

Gazebo makes heavy use of asynchronous message passing. For example, the Gazebo GUI operates in a separate process from the server and relies on message passing to display information and transmit user requests. Gazebo's current internal communication uses a home-grown strategy based on Protobuf and boost::asio. This has performed well but requires maintenance and has become a bit outdated.

Development of Ignition Transport provided the opportunity to choose a new strategy that would reduce our maintenance effort and offer new features. ZeroMQ has been chosen as a replacement to boost::asio, and Protobuf remains as the message definition. ZeroMQ is an open source communication library that is used across numerous domains, and has a large and active community. In addition to these aspects, ZeroMQ has a well established feature and change process, known performance, numerous language bindings, cross-platform support , and security through authentication and encryption.

In addition to the features provided by ZeroMQ, Ignition Transport provides discovery, and command line tools for topic introspection and publication of messages. Upcoming features include data logging, and integration of encryption and UDP provided in ZeroMQ. A series of benchmark tests of Ignition Transport were recently performed to evaluate the library's performance and establish a baseline. We will start with a few definitions for clarity.
  • Intraprocess: Publisher and subscriber in same process.
  • Interprocess: Publisher and subscriber in separate processes on the same physical machine.
  • Wireless: Publisher and subscriber on separate machines where one computer was connected to wireless access point and the other hardwired to the LAN.
  • Latency: Latency was measured by publishing a message on topicA, and then waiting for a response on topicB. The time between publication and reception of the response was divided in half to compute the one-way latency time.
  • Throughput: Throughput was measured by rapidly publishing N messages. Once the N messages have been published, the publisher waits for N responses. The time from start of publication to reception of all N messages is used to compute throughput.

Tests were performed on Ubuntu Xenial with the Linux 4.5.2 kernel, on a Intel i7-5930K desktop PC. The test program, called bench, is publicly available. Use the `-h` command line option with bench for usage information. Latency and throughput results are below. Click on dataset label, such as "Interprocess", to enable or disable the data.

These results can be used as one reference point, but they are by no means an exhaustive or comprehensive study of Ignition Transport.