ROS LaserScan to FlatScan Conversion : Nvidia ISAAC

I want to interface RPLidar A1M8 with Nvidia Isaac. Is there a direct solution to convert ROS : LaserScan to ISAAC: Flatscan ?

Could you describe a bit more about how you plan to interface the RPLidar A1M8 between Isaac and ROS? You’re planning on running a component in Isaac SDK that interfaces with the driver to capture laser scans and then emits an Isaac Flatscan. Then another bridge component to take the Flatscan and emit it as a ROS LaserScan?

There are utilities to convert FlatscanProto to ROS LaserScan in //sdk/packages/ros_bridge/components/FlatscanToRos.cpp, but it should be straightforward to write the reverse transform.

I need to do the following.

  1. Use an RP LiDAR A1M8 to read l;aser scans
  2. Create a map using Gmapping or cartographer with the turtlbot-2 platform I have.
  3. Implement autonomous navigation using turtlebot-2, Nvidia Isaac, RP Lidar a1 M8 and Jetson Nano ( for deployment )
  4. Study the difference in performance in performance from that of native ROS implementation.

I am stuck at feeding the ROS messages of type LaserScan ( pointcloud2D) to Isaac as flatscan. I couldn’t.t find any implementations/tutorials for the same. Also same for turtlebot 2 interfacing. Could you advise ?

Are you trying to collect the laser scans using a ROS node that connects to the RP LiDAR on the Turtlebot to create your map, and then offline feed the ROS bags of LaserScaninto an Isaac app after the fact, or is the Isaac app running and connected over a bridge so you can compare results online? The key point I gather here is that the RP LiDAR data is first captured as a ROS LaserScan here.

If you need to get from ROS LaserScan to Isaac Flatscan, there is only implementation/tutorial for the other direction. You will have to implement an inverse transform by reading through //sdk/packages/ros_bridge/components/FlatscanToRos.cpp, but it is not difficult.

See ROS Bridge for more details.

There are too many unknowns ( pardon my low experience ) .

There is no tutorial i could find to make use of a ros bridge and isaac gems together with additional codelets that are custom made. ANy thought in this direction would be really helpful.

The tutorials on ROS Bridge all apply whether you use the Isaac built-in codelets (GEMs) or write your own. You’re launching a ROS graph and an Isaac app (including your own codelets) where one of the Isaac codelets (the RosNode codelet) connects to a running ROS master and pretends to be a ROS node, receiving messages and sending them back. Tutorials on launching your ROS app and Isaac app respectively all apply in addition to the one about setting up the ROS Bridge mentioned earlier.

In writing that “ROS Bridge” Isaac codelet, you will need to implement the inverse of what is in FlatscanToRos.

I hope that gives you some direction here. You are trying to bridge two different systems here to reuse the same RP LiDAR scans from your ROS node if I follow correctly.