Deriving a 2D Map Representation from a 3D Scenario

Following the warehouse-navigation-with-carter sample I would like to modify e.g. the position of a forklift an run the navigation considering the new obstacle position.
However, the 2D occupancy grid (see Isaac Sight map view) seems to depend solely on the apps/assets/maps/virtual_test_warehouse_1.json file instead real-time derivation from the 3D Scenario since the new occupied space is not updated in the occupancy grid.

Two Questions:

  1. Is there a way to automatically derive the occupancy grid in real-time from the present, and potentially modified, 3D scenario?
  2. How can one derive a 2D map (e.g. for the Nav-Sample or also FlatSim) from a corresponding 3D scenario?

Hi,

I have done the same thing.
I added a new dolly with some blocks on top of it in a warehouse scene. Then I generated the occupancy map at a level that includes all the obstacles on it. Occupancy Map Generator — Omniverse Robotics documentation
I then modified the JSON file to address the new image of the occupancy map I generated.
Hope this helps.

1 Like

Hi and thanks for your reply!
I also guessed that the Occupancy Map Generator might be the key for addressing the 3D>>2D derivation of #2. Did you simply add a hard-coded position of the new object in the JSON file or can the png (from the generator) also be used somehow for updating the JSON file?

Yeah I just used the png to replace the virtual_test_warehouse_1 and then when you run the navigation application you will see that in Websight the new map is visible.
this is what you should modify

 "config": {
    "map": {
      "occupancy": {
        "filename": "apps/assets/maps/<name_of_the_saved_occupancy_map_image",

and before generating the occupancy map make sure that the added obstacle has Physics mesh. to check that go to eye icon-> Show By Type-> Physics Mesh-> All.

hope this helps!

Thanks! Definitely will check out your approach.

1 Like
  • We might not get to the first feature in time for the next release but it is on our roadmap, we would like to expose 3d occupancy map realtime via python api and possibly as a ROS octomap message.
  • The second will be in the next release, you will be able to specify ± Z bounds from the origin to consider for mapping, the 3d occupancy map then gets flattened into 2d. Specifically useful for the warehouse scenario where there are empty gaps in the shelves but you don’t want it to navigate through them.