How to use navigation_rosbridge?

I’m following the example reported in:

https://docs.nvidia.com/isaac/isaac/apps/samples/navigation_rosbridge/doc/ros.html?highlight=ros%20bridge

I’m able to run the example using:

bazel run //apps/samples/navigation_rosbridge

and I’m able to see two topics, namely /isaac_navigation2D_request and /isaac_navigation2D_status listed by rostopic list.

Now, I have some confusion about its usage. Let’s suppose, for example, that I want to see the robot position published on /isaac_navigation2D_status. For this purpose, I’m starting a simulator in another terminal, i.e.

bazel run //apps/flatsim

My first question is: are the two processes expected to communicate each other?

If my understanding of codelet is correct, the answer I expect is: “no, you have to put
the navigation_rosbridge codelet inside the flastim app”.

I thus tried to clumsily integrate the bridge in flatsim.app.json but with no success. For example, I tried to add it to the components section:

{
 "name": "isaac.rosbrdige.NavigationRosBridge",
 "type": "isaac.rosbridge::NavigationRosBridge"
}

but then I got an error complaining that the system cannot load the component. I thus tried to edit the “modules” section, but I’m not sure about what to put there. Can you tell me if my workflow is correct?

The RosBridge Sample is really intended to show how a developer could integrate ROS with their application.

There are a couple of work flows by which you could proceed.

  1. Do what you’re trying to do and integrate the bridge codelet into another application, in which case you are doing the right things here. You’ll want to take a look at BUILD file in the rosbridge sample, the module you’ll want to use is the one defined in that file for the bridge codelet. Also take a look at the rosbride sample’s app json file and confirm you have the right modules from that. If you make your own bridge customized to your ROS needs you’ll want to generally follow the same steps.

  2. The demo we made for GTC used a ros bridge that was a stand alone app. In this case, that codelet talked to ROS on the local machine running ROS, then would use our TCP message passing code to send network communications to another Isaac application running on a device. In the case of that demo it was PC<->Xavier communication over wireless.

Hope that helps clarify a few things.