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->Extension Manager and enabling the omni.isaac.occupancy_map extension.

To open the extension go to Window->Isaac->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.

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 (-1875, 5600, 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, -2500), Upper bound (1500, 1000)

  • Add a physics scene using Physics->Add->Physics Scene if a physics scene doesn’t already exist

  • Press Play

  • 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

April Tags

We provide a simple mdl material that can index into a April Tag mosaic image.

To use, navigate using the content window and add the following material to your stage.

/Isaac/Materials/AprilTag/AprilTag.mdl

Then create a mesh cube using Create->Mesh->Cube and assign the AprilTag material to that prim

The material has the following parameters which need to be configured:

  • Mosaic texture The path to the texture that contains the grid of april tag images

  • Tag Size The width/height of the tag in pixels

  • Tags Per Row The number of tag images per row in the mosaic

  • Spacing The number of padding pixels between each tag image

  • Tag ID The index of the tag to use.

Some sample mosaic textures are provided in /Isaac/Materials/AprilTag/Textures/

The figure below shows example usage using /Isaac/Materials/AprilTag/Textures/tag36h11.png

April Tag Example Usage

Inspect Physics

This extension visualizes information for a dynamic rigid body.

To use the extension go to Window->Isaac->Inspect Physics and the ui will become visible. Select a usd prim with a physics API applied and while the editor is simulating (Play is pressed)

The UI will show the following information:

  • Mass

  • Moment of inertia

  • Position

  • Rotation

  • Linear Velocity

  • Angular Velocity

  • Linear Acceleration

The Velocity Coordinate Frame can be set to Global or Local to visualize the respective velocity

Inspect Physics Usage Example

  • Load the Carter URDF sample under Isaac Robotics->URDF->Carter

  • Press the Load Robot button

  • Press the Configure Robot Button

  • Select /carter/left_wheel_link

  • Press Play

Once simulation starts you can see the current physics state of the rigid body in the window.

Inspect Physics UI