Enter the search phrase
One of the most prevalent sensors in robotics is the lidar (also capitalized as LIDAR). Lidars are typically used for obstacle detection and similar perception tasks, safety, and localization, and mapping. They acquire data from the environment, which is processed as point clouds. Depending on the application, these point clouds can be quite large and require efficient computational pipelines to handle in real time. For high-end lidars, especially the ones used for autonomous vehicles, close to 5 million points per second are returned from the device (for example, the Velodyne Alpha Prime).
To meet the requirements of simulation for many such lidars per vehicle as well as many vehicles, the lidar simulation has to be highly performant. Simple solutions such as raycasting through scene queries are not going to be enough.
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.
Through our membership in The Linux Foundation and the Open 3D Foundation, we aim to build an open-source future for robotic simulation. We realize our goal by developing the Open 3D Engine (O3DE) to be the best simulation engine for robotic developers and focusing on Robot Operating System (ROS) 2. O3DE is a modern engine extensible through a system of modules called Gems. You can read more about ROS 2 Gem for O3DE and robotic simulation in O3DE in general in our earlier blog post.
Today, we announce the first open-source release of our RGL Gem developed to power high-performance lidar simulation in O3DE!
The RGL Gem is an open-source module for O3DE which provides a fast, configurable, scalable, GPU-based lidar implementation. This Gem relies on the RobotecGPULidar API and will continue to benefit from its development. The RGL Gem depends on the ROS 2 Gem.
How performant is our new Gem? For example, one RGL-simulated lidar can perform over 1 million raycasts within just 20 milliseconds. Compared to the standard method (scene raycast queries) which takes over 600 milliseconds to do the same job, we saw a 30-fold increase in performance!
To realistically simulate a lidar it is important to provide it with a faithful representation of the environment. Simply put, if you can see it, the lidar should too. This is why the RGL Gem lidar performs raycasts on the same geometry that is used in scene rendering. The additional benefit opposed to using colliders for raycasts is that there is no need to generate complex, non-convex colliders in the scene for accurate raycast hits, which contributes further to the overall performance.
RGL Gem works with Mesh Components but also with the O3DE Terrain Gem where the geometry is not stored in any mesh. By sampling the terrain height in a grid-like pattern, it is able to generate a mesh which can then be used for raycasting. Take a moment to admire the view of a beautiful point-cloud mountain range. The scene is a part of this O3DE agricultural robotics demo featuring an orchard and apple-picking robots.
In the apple orchard scene, and typically in many simulation scenes, many meshes are reused through multiple instances of the same objects. The RGL Gem takes that into account as well and shares the reused mesh data, which in turn minimizes the GPU memory needed for its storage.
While the RGL Gem is already of great value for robotic simulation, it is going only get better as we develop the Robotec GPU Lidar further. We also plan to enhance integration with the O3DE itself. Some of the improvements we are planning are:
The O3DE RGL Gem is now open source under Apache 2.0 license and located in this GitHub repository. Follow the instructions in the repository to use the Gem with your O3DE simulation project.
Aleksander Kamiński, Software Engineer at Robotec.ai
Adam Dąbrowski, VP of Robotics and Simulation at Robotec.ai