[Isaac Sim 6.0.1] Solid-state OmniLidar always renders emitterState:s001 and does not advance additional emitter states #818
Replies: 1 comment 1 reply
|
I reproduced the fixed-first-state behavior with a generated two-state, 32-emitter scene on a local Isaac Sim Both states passed There are two separate problems:
The USD authoring mechanism is the multi-apply emitter-state API, as shown in the LiDAR extension documentation. The separate I will create an internal ticket for your issue. I have not verified a supported way to change the live solid-state pattern without rebuilding the profile. Internal ticket: 6758724 |
Uh oh!
There was an error while loading. Please reload this page.
Description
I am trying to model a non-repetitive solid-state LiDAR pattern in Isaac Sim
6.0.1 by authoring multiple
OmniSensorGenericLidarCoreEmitterStateAPIinstances on oneOmniLidarprim.The additional states are present and accepted by the sensor checker, but RTX
continues to render only
emitterState:s001.This first appeared in a Livox Avia profile with 40 states. I then reduced the
test to one
OmniLidar, two states, 32 emitters, no ROS, no robot, noarticulation, no external scan data, and a closed box around the sensor. The two
states use clearly separated azimuths (-20 degrees and +20 degrees), so the
active state can be identified directly from the spherical GMO output.
Environment
isaacsim.sensors.experimental.rtx1.4.6omni.sensors.nv.lidar3.0.0/renderer/multiGpu/enabled=false)What I configured and tested
OmniLidarusing the current experimental RTX LiDAR API.OmniSensorGenericLidarCoreAPIand two emitter-state API instances,s001ands002, before creating theLidarSensorrender product.azimuthDeg,elevationDeg,fireTimeNs,channelId, andbankin both states.scanType=solidState,stateResolutionStep=1,scanRateBaseHz=10,patternFiringRateHz=10, andomni:sensor:tickRate=10.accumulateOutputs=trueand automatic Writer scheduling, following thecurrent RTX LiDAR and multi-tick documentation.
IDEALIZEDray type with zero divergence so that every ray has avalid geometric return in the closed test scene.
SensorCheckerUtil.validateParams()returns no error and itsvalidated parameters contain both
s001ands002, including all fiveemitter arrays.
instances were present and accepted.
omni:sensor:Core:emitterStateCountandomni:sensor:emitterStateCount, because the LiDAR extension documentationdescribes
emitterStateCount; neither changed the behavior.patternFiringRateHzwith matching in-periodfireTimeNs; it did not activate the second state and is not the documentedrecommendation for solid-state LiDAR anyway.
Actual result
With the two-state profile, eight consecutive complete 10 Hz GMO outputs all
matched the -20 degree directions from
s001(direction RMSE approximately0.02 to 0.05 degrees). No output used the +20 degree directions from
s002.With the 40-state profile, six consecutive complete outputs also all matched
s001(approximately 0.07 degree direction RMSE). There were no invalid GMObuffers and no sensor-checker errors.
Changing the arrays of the active
s001instance at runtime changes therendered directions, which confirms that the angle data itself is valid.
However, repeatedly editing those arrays causes RTX profile rebuilds, long
stalls, file-descriptor exhaustion, and native crashes, so runtime rewriting is
not a usable workaround.
Expected result
With two emitter states and
stateResolutionStep=1, the sensor should advancebetween
s001ands002according to the documented emitter-state mechanism.For the full profile, the 40 states should advance without changing USD
attributes during simulation.
Documentation/schema inconsistency found while investigating
The installed
omni.sensors.nv.lidardocumentation says thatemitterStateCountis the number of different emitter states and must bechanged for multiple states. The public 107.3.1
OmniSensorGenericLidarCoreAPIschema containsstateResolutionStepand themulti-apply emitter-state API, but it does not define an
emitterStateCountUSD attribute.The Isaac Sim 6.0.1 JSON-to-USDA converter reads
emitterStateCountfrom JSON,but only copies top-level values that have a matching USD attribute, so the
state count is not authored. Its API-creation loop also skips JSON state indices
0 and 1; the Core schema supplies
s001, but nots002, sos002is absentunless it is explicitly repaired after conversion.
The schema also exposes
emitterStatesFile, but the installed schema and LiDARextension documentation both state that this field is not supported yet.
Questions
emitter states on an
OmniLidarUSD prim?scanType=solidStatein 6.0.1?emitterStateCountschema attribute, the converter behavior,or the fixed
s001runtime behavior a known defect?mechanism for changing solid-state firing patterns without rebuilding the
RTX sensor profile at runtime?
I can provide the generated USD, full logs, and exact parameter values if the
sensor team needs them, but the same behavior occurs in the reduced 32-emitter,
two-state test.
All reactions