Usage of ultrasonic sensors

Hello,

I’m trying to get ultrasonic sensors to work in my own configuration.
However, the documentation for them is very scarce and i get a lot of errors and crashes.

Could you please explain:

  • What the adjacency matrix actually does and how to use it. Why do the first and last entries in the example only consist of two emitters which are repeated in the following or previous entry (eg. [0, 1], [0, 1, 2],)?
  • What the emitter and receiver modes are.
    My guess would have been that they switch the emitter and receiver functions on and off, but since in the example there is data from sensors 7, 8 and 9 which have different emitter and receiver modes this can’t be the case.
    Also I’m kind of confused as in the receiver modes section in the example, there are some emitters which are only mentioned once (eg. (0,1)) and some which are mentioned twice (eg. (1,0), (1,1)).

I tried writing my own code based on the example, which often leads to Isaac Sim crashing. Usually there is no apparent reason, sometimes the code works and sometimes the same code leads to a crash. After Isaac Sim has crashed on the following startups i get lots of “Failed to create change watch for xyz: errno=28, No space left on device” errors, which disappear only after a reboot of the system.
You can find a logfile with both errors attached: kit_20211027_103508.log (210.9 KB)

Thanks a lot for your help!

Added a task to make sure the USS sensors are explained in more detail to clarify the firing modes and adjacency parameters.

Can you provide a usd scene with the ultrasonic sensor sensor prim that reproduces the crash?

Hello and thank you for adding that task!

First of all, i could resolve the “No space left on device” errors by raising the maximum value of inotify watches (linux - Kernel inotify watch limit reached - Unix & Linux Stack Exchange). Unfortunately this didn’t resolve the issue with Isaac Sim crashing.

Regarding the usd scene: I used a bit of a different approach and modified the code of the ultrasonic sensor example, so I’ll upload the modified code instead: ultrasonic_info.py (15.8 KB)

To run it just change the file under /home/user/.local/share/ov/pkg/isaac_sim-2021.1.1/exts/omni.isaac.range_sensor/omni/isaac/range_sensor/scripts/samples/ultrasonic_info.py and then run the example under “Isaac Examples” → “Sensing” → “Ultrasonic”.

It’s quite hard to tell you how exactly to reproduce the error but I’ll try:

  • If you follow the three steps of the example without moving the view in the viewport, Isaac Sim will crash in most cases after clicking on the “get data” button.
  • If you spawn the obstacles, start the simulation and then move the view before clicking on “get data” it will work in most cases. However sometimes it still crashes. Nevertheless i think there is a strong correlation between not moving the view and Isaac Sim crashing.

I tried to reproduce that with the original example code but using that Isaac Sim runs stable.

Something else i noticed: With the original code the values returned by the ultrasonic array in empty space are 4.5 (meters), with my code it returns 0. Not sure if that plays a relevant role here, this could also be caused by different emitter/receiver modes.

Thanks a lot for your efforts!

Regards,
Chris

Thanks for the info
Filing a bug report now that our release is out and we have more bandwidth for bugfixes :)
We weren’t able to put an in-depth guide for USS sensors in 2021.2.0, but we have a bugfix release in a few weeks and it might be possible to get it in for that.

Alright, thanks and looking forward to this. :)