Generic 3D Lidar
The main purpose of this Prefab is to let the user define their own specifications for a standard mechanical 3D lidar. The term mechanical here means that it's a laser rotated by a dc motor. A 3D lidar is a lidar that scans on several planes with multiple beams.
Generic 3D Lidar with FoV
The sensor library provides a second Prefab using the same system graph to demonstrates how to use the Horizontal FoV property to emulate lidars with non-360 horizontal field of views.
Implementation details
Warning
This sensor has a node that uses DXR and will not function without a compatible graphics card. See requirements for more details. For a lidar implementation that does not require DXR, see Camera-Based Lidar.
This lidar samples the scene using path tracing. The initial position (0 degree) of the lidar is toward its positive Z axis. The rays orientation is interpolated using the previous rotation and the current rotation. This interpolation is driven by the sampling rate. The heuristic algorithm in the shader assumes the photosensor will rotate on itself.
It's possible to sample all beams at the same time (all at the same orientation) or interpolate the rotation between each sample (see IsCellsSync input below).
When the scene is sampled, the photosensor rotates on itself but everything else is static (including the photosensor position). To avoid having too many samples sampling a static scene, it's important to keep the simulation update time (dt) as small as possible.
Inputs
Input | Description |
---|---|
SamplingRate | Defines the number of samples per second the photosensor must take. |
RotationSpeedHz | The photosensor rotation speed represents the number of turns per second the object will rotate on itself around the Y axis. |
Horizontal FoV | The azimuth angle between 0 and 360 degrees that the lidar covers. |
MinRange | Sets the minimum range registered by the device. |
MaxRange | Sets the maximum range registered by the device. Every sample outside the max range will have a distance of 0 meters. |
sensitivity | Sets a minimum radiant energy threshold in watts/m^2. Under this threshold, the measurement is considered invalid. A threshold value of 0 means no threshold. |
MotorSpeedVariation | The standard deviation of the motor speed. |
MotorTimeConstant | The time required to reach 63% of the max RPM for the motor. |
MotorTurnCW | When selected, indicates the motor turns clockwise. |
Outputs
Output | Description |
---|---|
PointCloud | A render texture with the (x, y, z) position for each pixel. The lidar frame is spread from left to right in the texture. To know the point count, one can look at the count value in this structure. |
Intensity | A corresponding render texture with the perceived intensity for each pixel. |
OutTranscode | Provides a context for executing sampling custom passes, which then passes through the GPU processing pipeline. |