Navigation Stack by ROS into Omniverse

Hi ,
I tried to implement the ROS Navigation Stack on Omniverse.
I found on the forum that the “ros_to_navigation_unity3d” sample application also works on Omniverse.

I tried the same , but it didn’t work as expected.
I confirm that it is working fine in Unity.

I looked at the rqt_graph and could see that some topics were not communicating between nodes.

I used carter_warehouse_with_forklifts.usd.(Navsim application Worked)
What I did was to convert the “virtual_test_warehouse_1” map to ROS, create a yaml and json file, and pass it to the Isaac application.
virtual_test_warehouse_1.pgm (244.4 KB)
virtual_test_warehouse_1.yaml (130 Bytes)
virtual_test_warehouse_1_map_transformation.config.json (232 Bytes)

Isaac application launch
bazel run packages/ros_bridge/apps:ros_to_navigation_unity3d -- --more apps/assets/maps/virtual_test_warehouse_1.json --config ros_navigation:packages/ros_bridge/maps/virtual_test_warehouse_1_map_transformation.config.json,ros_navigation:packages/ros_bridge/apps/ros_to_navigation_turtlebot3_waffle_pi.config.json

ROS launch
TURTLEBOT3_MODEL=waffle_pi roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$(realpath packages/ros_bridge/maps/virtual_test_warehouse_1.yaml)

I received the following error from ROS.
[ WARN] [1611044070.335597565]: No laser scan received (and thus no pose updates have been published) for 1611044070.335575 seconds. Verify that data is being published on the /scan topic.
[ WARN] [1611044072.502877035]: Timed out waiting for transform from base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist… canTransform returned after 0.101038 timeout was 0.1.

It seems that the map_server node is not communicating properly.
Is there any configuration that I’m missing?

Thanks.

The rqt ROS node graphs for Unity and Omniverse versions are unexpectedly different (/isaac_bridge is not receiving /move_base/result but getting an /amcl_pose instead, /map_server is disconnected), but none of that would necessarily explain the silent /scan topic from /isaac_bridge, I think. Of the three parts to launch (Sim, Isaac App, and ROS graph), was there any error from Isaac? Perhaps a TCP port misconfiguration in navsim_navigation.subgraph.json or something else where Isaac was not connecting to Sim?

@dlan @OguzSaglam if you have any insights.

Hi,

It has an error in Isaac when run isaac, omniverse, ros together.

  • isaac and omniverse only
  • bazel run apps/navsim/navsim_navigate – --map_json apps/assets/maps/virtual_test_warehouse_1.json (no error)

2021-01-22 10:39:13.794 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘websight/isaac.sight.AliceSight’ was not added to scheduler because no tick method is specified.
2021-01-22 10:39:13.794 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘map/isaac.map.Map’ was not added to scheduler because no tick method is specified.
2021-01-22 10:39:13.794 WARN packages/navigation/NavigationMap.cpp@34: Could not find a DistanceMap component for the OccupancyGridLayer in this map. Creating one automatically now using ObstacleAtlas node ‘navigation.obstacle_atlas/obstacle_atlas’.
2021-01-22 10:39:13.794 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘map/map’ was not added to scheduler because no tick method is specified.
2021-01-22 10:39:13.803 INFO packages/sight/WebsightServer.cpp@117: Server connected / 1
2021-01-22 10:39:13.824 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘map/occupancy’ was not added to scheduler because no tick method is specified.

  • isaac and ros only
  • bazel run packages/ros_bridge/apps:ros_to_navigation_flatsim – --more apps/assets/maps/virtual_test_warehouse_1.json --config ros_navigation:packages/ros_bridge/maps/virtual_test_warehouse_1_map_transformation.config.json,ros_navigation:packages/ros_bridge/apps/ros_to_navigation_turtlebot3_waffle_pi.config.json
    (has error, but the communication/navigation works)

2021-01-22 11:13:27.437 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘map/isaac.map.Map’ was not added to scheduler because no tick method is specified.
2021-01-22 11:13:27.437 ERROR packages/navigation/NavigationMap.cpp@29: Could not find a DistanceMap component for the OccupancyGridLayer in this map and could not add one automatically as the app does not contain a single ObstacleAtlas node. The occupancy grid map layer will not be available for obstacle avoidance.
2021-01-22 11:13:27.437 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘map/map’ was not added to scheduler because no tick method is specified.
2021-01-22 11:13:27.442 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘map/occupancy’ was not added to scheduler because no tick method is specified.

  • isaac, omniverse and ros
  • bazel run packages/ros_bridge/apps:ros_to_navigation_unity3d – --more apps/assets/maps/virtual_test_warehouse_1.json --config ros_navigation:packages/ros_bridge/maps/virtual_test_warehouse_1_map_transformation.config.json,ros_navigation:packages/ros_bridge/apps/ros_to_navigation_turtlebot3_waffle_pi.config.json (error, no navigation)

2021-01-22 10:42:33.549 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘websight/isaac.sight.AliceSight’ was not added to scheduler because no tick method is specified.
2021-01-22 10:42:33.549 WARN external/com_nvidia_isaac_engine/engine/alice/components/Codelet.cpp@53: Function deprecated. Set tick_period to the desired tick parameter
2021-01-22 10:42:33.549 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘map/isaac.map.Map’ was not added to scheduler because no tick method is specified.
2021-01-22 10:42:33.549 ERROR packages/navigation/NavigationMap.cpp@29: Could not find a DistanceMap component for the OccupancyGridLayer in this map and could not add one automatically as the app does not contain a single ObstacleAtlas node. The occupancy grid map layer will not be available for obstacle avoidance.
2021-01-22 10:42:33.549 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘map/map’ was not added to scheduler because no tick method is specified.
2021-01-22 10:42:33.579 WARN external/com_nvidia_isaac_engine/engine/alice/backend/codelet_canister.cpp@229: Codelet ‘map/occupancy’ was not added to scheduler because no tick method is specified.

Hi,

I also get the same error as dlan.
> 2021-01-26 10:53:46.348 ERROR packages/navigation/NavigationMap.cpp@29: Could not find a DistanceMap component for the OccupancyGridLayer in this map and could not add one automatically as the app does not contain a single ObstacleAtlas node. The occupancy grid map layer will not be available for obstacle avoidance.

After trying a few things, I think that the Isaac application and RobotEngineBridge may not be working well together.
I’m working on another way to navigate using PoseTree and JointStates.