Adam Dąbrowski Mar 30, 2023 - Robotics
Enhance your Gazebo lidar’s accuracy with the RGL plugin
The challenge of LiDAR simulation
Lidar sensors are essential for many robotics applications, providing accurate measurements of the environment in the form of 3D point clouds. That technology has evolved significantly over the years, and one of the ways it has changed is in the number of lasers used in the sensor. Depending on the sensor’s design and the level of detail required, modern lidars can incorporate anywhere from a few to hundreds of lasers. Consequently, these devices can generate over 5 million points per second, as seen in the Velodyne Alpha Prime or Ouster OS1.
The basic lidar simulation methods, such as raycasting through scene queries, can be computationally intensive and time-consuming, making it difficult to simulate large-scale scenarios. Furthermore, these methods may not always provide accurate results, especially in complex environments with numerous objects and dynamic scenes.
Robotec GPU Lidar
At Robotec.ai, we have been dealing with such challenging requirements for years. Our engineers developed the Robotec GPU Lidar (RGL), an open-source CUDA/C/C++ library for GPU-accelerated raycasting. You can read more about RGL in our earlier blog post.
Gazebo
Gazebo is an open-source 3D simulator, at the moment, developed and maintained by Open Source Robotics Foundation (OSRF) – a nonprofit organization with the mission to “support the development, distribution, and adoption of open-source software for use in robotics research, education, and product development.” One of the key factors of the Gazebo is a huge community that provides extensive support for the development of simulator, custom plugins, and extensions, which allow users to customize simulations for their specific needs.
While we do not use Gazebo at Robotec.ai at the moment, we are deeply involved with ROS 2 and also recognize the value and importance of Gazebo as a simulator for robotics.
We are very pleased to contribute to the community and introduce RGL Gazebo Plugin for flexible and accurate lidar simulation with great performance.
The RGL Gazebo Plugin
The RGL Gazebo Plugin is an open-source plugin for Gazebo Fortress (the latest LTS distribution), which provides a fast, configurable, scalable, GPU-based lidar implementation. This Plugin relies on the RobotecGPULidar API and will continue to benefit from its development.
Flexible pattern configuration
When it comes to modeling lidars in the simulation, the crucial part is to flexibly configure their firing patterns. The built-in Gazebo lidar sensors (e.g., gpu_lidar) are limited only to uniform distributions. In fact, the vast majority of real-life lidars have customized laser positions. RGL Gazebo Plugin comes in clutch with a number of methods for setting the pattern. See repository docs for the details!
Precise pattern presets
At Robotec.ai, we care about every little detail of our product, so our presets mimic the patterns precisely. We even take into account the fact that in many lidars, the lasers are staggered (not positioned exactly one above another), like in the Ultra Puck, according to the manual, page 118.
Performance
Although the performance of the built-in gpu_lidar is respectable, RGL Gazebo Plugin can be up to 4,5 times faster. What does it mean? Using the mobile GPU version of the GeForce 30 series, you can expect to be able to simulate up to 15 Velodyne Alpha Prime, one of the most powerful lidars available, at 10Hz in real-time.
Visual Smoothness
The built-in gpu_lidar sensor is implemented in ogre2 using a set of 4-depth cameras, which can sometimes result in rough transition areas between the cameras. However, in our plugin, we have simulated each ray independently using RTX cores. This has significantly improved the quality of the scan, making it smoother and more accurate, as you could see in the pictures above.
Check it out and contribute
The RGL Gazebo Plugin is now open source under Apache 2.0 license. Please visit our GitHub repository and use the plugin with your Gazebo projects. You are welcome to contribute!
Authors:
Jakub Krakowiak, Software Engineer at Robotec.ai
Mateusz Szczygielski, Software Engineer at Robotec.ai