# RGLGazeboPlugin
**Repository Path**: ganhelin_admin/RGLGazeboPlugin
## Basic Information
- **Project Name**: RGLGazeboPlugin
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: benchmarking
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-06-17
- **Last Updated**: 2025-06-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# RGL Gazebo Plugin
---
---
# About the project
RGL Gazebo Plugin has been created by [Robotec.AI](https://robotec.ai/) to bring [Robotec GPU Lidar](https://github.com/RobotecAI/RobotecGPULidar) to [Gazebo](https://gazebosim.org/home).
Key features:
- Point cloud computation using hardware-accelerated raytracing (Nvidia OptiX)
- High performance (2x improvement over `gpu_lidar` sensor from Gazebo)
- Multiple LiDAR pattern configuration methods, including importing a pattern from a binary file
- Realistic presets of the most popular LiDARs
## Requirements:
OS: [Ubuntu 20.04 Focal Fossa](https://releases.ubuntu.com/20.04.5/?_ga=2.210010709.1162335333.1667845331-1529863968.1667845331)
Gazebo: [Fortress 6.12](https://gazebosim.org/docs/fortress/install)
GPU: [Nvidia Pascal](https://en.wikipedia.org/wiki/Pascal_(microarchitecture)) architecture or newer (preferably with RT cores)
Nvidia Driver: [See RGL requirements](https://github.com/RobotecAI/RobotecGPULidar#runtime-requirements)
## Installation:
From RGLGazeboPlugin directory:
```shell
mkdir build
cd build
cmake ..
make -j
export IGN_GAZEBO_SYSTEM_PLUGIN_PATH=`pwd`/RGLServerPlugin
export IGN_GUI_PLUGIN_PATH=`pwd`/RGLVisualize
```
## Demo:

From RGLGazeboPlugin directory:
```shell
cd test_world
ign gazebo prius_world_RGL.sdf
```
1. start the simulation by pressing play
2. the lidar hits should be visible in the GUI
3. You can control the car using the Teleop plugin (preferably changing the steering to keyboard and upping the speed to 15)
## Using the plugin:
For the plugin to work properly, we need to include both RGLServerPluginManager and RGLServerPluginInstance(s):
## How to include RGLServerPluginManager in your sdf:
```xml
```
This is a global plugin and should be included only once per sdf, preferably inside the world entity.
## How to include RGLServerPluginInstance in your sdf:
```xml
```
Note that the lidar will be attached to the entity that the instance inclusion is inside and will ignore all children (recursively) of the entity as well as the entity that it is attached to.
## RGLServerPluginInstance settings:
The basic lidar parameters can be set in only one way (shown below), but the pattern can be created using 4 methods: (from basic to advanced) uniform, custom, preset and preset_path.
```xml
245
10
false
```
**range** - the maximum range that the hits will be registered
**update_rate** - the frequency at which the lidar will perform raycasting (in Hz)
**always_on** - determines whether the lidar is active when the simulation is paused
### Uniform Pattern
An analogue to the gpu_lidar configuration (angles in radians).
```xml
1800
-3.14159
3.14159
128
-0.436332
0.261799
```
### Custom Pattern
**lasers** argument defines the vertical angles of each layer (angles in radians), horizontal samples are uniformly distributed
```xml
3600
-3.14159
3.14159
```
### Preset
You can type in the name of a Lidar to use its pattern (all available patterns are shown below).
```xml
Alpha Prime
Puck
Ultra Puck
OS1 64
Pandar64
Pandar40P
```
### Preset Path
If you wish so, You can create your own preset by providing a binary file with the structure below repeated as many times as you fancy. Please note that an absolute path is required.
```c
/**
* Row-major matrix with 3 rows and 4 columns of 32-bit floats.
*/
typedef struct
{
float value[3][4];
} rgl_mat3x4f;
```

```xml
/home/some1/Downloads/lidars-for-gazebo/VelodyneVLS128.mat3x4f
```
## Level of detail
At [ROBOTEC.AI](https://robotec.ai/) we care about every little detail of our product, so our presets mimic the patterns exactly, 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](https://icave2.cse.buffalo.edu/resources/sensor-modeling/VLP32CManual.pdf).

## Ray pattern accuracy comparison of RGL (left) and gpu_lidar (right)
