Occupancy Map Generator

This extension allows occupancy grid maps to be generated for enclosed environments. Physics collision geometry is used for map generation.

The extension can be enabled by going to Window->Extensions and enabling the omni.isaac.occupancy_map extension.

To open the extension go to Isaac Utils -> Occupany Map and the extension ui will become visible

Main Occupancy Map Generator UI Window
  • Start Location: An open location inside of the area you wish to map. The Z height will be the height that mapping occurs

  • Lower/Upper Bound: Areas outside of these bounds will not be mapped. These are maximal bounds, the mapped area may be smaller than these limits

  • Degrees Per Ray: Mapping is done by shooting rays 360 degrees from each sample point, The smaller the value the more accurate the map but the longer it will take to generate

  • Cell size: the number of centimeters each pixel in the final image represents

  • Surface Offset: Once a ray hits an occupied space, this distance is used to offset from the hit location along the contact normal and generate another 360 degree sweep of rays. This value should be smaller than the cell size and ideally smaller than the smallest distance you want to map

  • Occupancy Threshold: The larger the value, the more rays need to hit a particular area for it to be considered occupied

  • Max Rays: The maximum number of rays to use for map generation.

  • Occupied/Freespace/Unknown Colors: These colors are used in the final generated image.

  • Rotation: Rotates the output image by the specified amount.

Note

If mapping does not work correctly make sure the start location is not occupied. You can view the physics geometry by clicking the Show/Hide (eye icon) in the viewport window and selecting Show By Type -> Physics Mesh -> All

Occupancy Map Generator Usage Example

Load the warehouse multiple shelves stage

Isaac/Environments/Simple_Warehouse/warehouse_multiple_shelves.usd

  • In the Occupancy Map Generator UI set the start location to an empty location in the stage (-200, 0, 120)

  • You will see a wireframe rectangle appear in the stage showing the bounds of area used to create the map

  • The center of this rectangle must be in unoccupied space

Setting origin of map generation
  • Increase the min and max bounds so they contain the area of interest. Lower bound (-1000, -1500), Upper bound (1500, 2000)

  • Press Generate Occupancy Map, the Generate Image button will appear

  • Note: While map generation occurs the UI will not update. See terminal/command prompt for updates on status

Setting bounds for map generation
  • Press Generate Image and a window showing the map will appear, Press the Save Image button and select the location where you wish to save the image.

Generating the image
  • The final stored image will look like the following

Sample Occupancy Map generated from warehouse stage

Python Bindings

See the API Documentation for usage information.