Set Up a Sensor#
Create a sensor, select a complete pattern and read its first capture. Start with a simple direct-return layout so each valid contribution has a clear geometric interpretation before adding more rays, bounces or receivers.
Before you start. Read Your First Lidar Sensor for the shared workflow and have the Python example or C example available.
Choose a complete pattern#
The base layer leaves the transmitter, receiver and ray arrays empty. Complete it with Sample a Depth Grid or one of the other configuration recipes. A complete recipe makes four choices:
Place the transmitter elements relative to the sensor.
Assign a ray bundle to the stored transmitter pattern. Every element of that pattern emits the bundle in its own transmitter frame.
Place the receiver elements relative to the sensor. Their poses are authored separately from the transmitter poses.
Choose which receivers are evaluated for each transmitter’s paths through the receiver mapping.
The depth recipe starts with matching transmitter and receiver grids, one ray per transmitter and paired receivers. Refer to patterns and selection for the relationship between stored patterns and the active capture.
Author the stage units, up-axis and time-code rate on the root layer; sublayers do not supply stage metadata. Keep the referenced layers together.
The runnable examples compose the recipe with a steel enclosure. Its walls are
11 m from the sensor along world X/Z and 12 m along world Y. The scene uses the
steel label.
Refer to Non-Visual Sensor Materials
for authoring labels.
Render and read a capture#
Load the composed root into an attached stage, complete its writes, and step
its RenderProduct. The examples’ one-tile, one-bounce configuration allocates
numTx * raysPerTx * groupSize slots. Read the output dimensions and
Valid before consuming their payloads. A slot identifies one transmitter,
one emitted ray and one receiver connection at the single allowed bounce.
Only a valid slot supplies a contribution to your application’s processing.
The sensor returns paths rather than a completed detector result. For the depth recipe, the first useful processing step is to derive range from a valid direct path whose emission and receiver origins coincide. The conditions for that calculation are in Sample a Depth Grid and the channel descriptions.
Refer to the Python example and C example for the complete applications and their run commands. Attribute meanings are on USD Attributes; complete types and defaults are in Sensor API Schemas.
Verification#
Run the
depthrecipe and inspect the accepted dimensions and nonemptyValidtensor.Read valid path distances as described in Sample a Depth Grid.
A zero-length tensor is an empty output, not an allocated capture with no valid returns.
Potential issues#
Use the Generic wpm checks for confirming checks and recovery.
No capture. Required patterns may be empty or the output request may be missing. Refer to USD Attributes and Outputs.