Ingesting ROS localization data

📘

This section is for ROS users

If you do not use ROS, feel free to move on to the next section: Ingesting from Python.

Localization is a unified datapoint type in Formant, which is meant to encapsulate data relevant to a robot's location and surroundings into a single datapoint.

Localization combines map, path, point cloud, laser scan, odometry, pose, and goal into a single telemetry stream.

ROS message typeFormant datapoint type
nav_msgs/OccupancyGrid
nav_msgs/Path
sensor_msgs/PointCloud2
sensor_msgs/LaserScan
nav_msgs/Odometry
geometry_msgs/PoseStamped
Localization

Adding a new ROS localization telemetry stream

To add a ROS localization stream,

  1. Open the Formant sidebar using the button in the top left of the screen
  2. Select Settings ⇒ Devices ⇒ Click on the device name
  3. Click the "Telemetry" tab
  4. Click "Add stream"
  5. Choose "ROS Localization"
526

ROS localization telemetry stream configuration

Odometry

Specify the odometry topic with type nav_mags/Odometry which estimates the position and velocity of the robot with type. Usually /odom.

Map

Specify an occupancy grid with type nav_mags/OccupancyGrid with information about the robot's surroundings, sometimes found on /map.

Point cloud or laser scan topics

Specify the sensor_msgs/PointCloud2 or sensor_msgs/LaserScan topics (separated by comma) to be part of the localization stream. Formant requires PCD format for point clouds.

Path topic

Specify the ROS topic that indicates the path with type nav_msgs/Path of the robot. The relevant topic name often varies by planner.

Goal topic

Specify the goal topic with type geometry_msgs/PoseStamped to display the goal of the robot. This topic also varies by planner.

World reference frame

Specify the world reference frame. This is used to visualize one's localization state without ingesting the entire /tf topic. Must be the name of a frame published on /tf that is a parent frame of both Map and Odometry topics.