Navigation Messaging System

The Navigation Messaging System (NMS) is built into the ARC framework. It allows skills to push data (location & obstacle detection) into the messaging system. Then, mapping/navigation SLAM skills can subscribe to the navigation events. The NMS was designed to provide transparent Navigation to the user in ARC. You do not have to write any complicated code because the robot skills will work for navigation and obstacle avoidance.



NMS Stack

The NMS stack consists of sensors that feed the messaging system, received by mapping skills.


Level #1 - Map & Navigation

This is how to view the sensor data and organize it into maps for navigating. There are a few skills that do this. They subscribe to the sensor event data and assemble a map. Then, they allow you to click on the map and instruct the robot where to navigate to (either way-point or any destination, depending on your sensor data). A few navigation skills are...



Level #3 - Sensor Groups

You require sensors that feed data into the messaging system that maps are made from. The navigation messaging system collects data by supporting two sensor input groups...

  1. Lidar/depth scanners: any sensor that can detect obstacles (laser, 360-degree lidar ultrasonic, IR, etc.). The sensor will detect objects and mark on the map where the robot cannot go (i.e., walls, sofa, chairs, etc.). Supported skills are...

  2. Localization telemetry pose navigation: Special sensors that keep track of the robot's position (pose) in the real world (IPS, wheel encoders, Roomba movement panel, intel realsense t265, etc.). *Note: only one Group #2 sensor can be active at one time. 


What Sensors Do You Need?

Depending on what NMS Level 1 mapping/navigation you will be using, the sensor requirements may differ. For example, using the mapping skill The Better Navigator will require a sensor from each group L3G1 and L3G2 (layer 3 group 1& layer 3 group 2). So check the mapping robot skill so you know what NMS layer 3 group sensors are required for it. 


Scripting Support

NMS commands are supported by the JavaScript and Python scripting compilers in ARC. The namespace is Navigation, and You can view more details in the Support section for JavaScript or Python. The script commands allow custom sending Level #3 Group #1/#2 sensor data into the NMS. As well as pausing and stopping any ongoing navigation by a Level #1 navigator.


Cartesian Coordinate System

This robot skill uses cartesian coordinates to reference the robot's starting position. The starting position is always 0,0 and is defined at startup. As the robot navigates, the skill measures the distance from the starting position. The unit of measurement is in CM (centimeters). Read more about the cartesian coordinate system on Wikipedia.

Further Reading

Many experts have researched and documented robotics's navigation, localization, and known pose positioning. While the Intel T265 has demonstrated the most significant success at inside-out localization, many other methods have been attempted over the years. The topic of reach into robot navigation is far too vast to be covered in this manual. However, we'll leave you with a few papers that have greatly influenced the robot industry in this field.


All Navigation Robot Skills

These are navigation robot skills that work with the NMS or assist with controlling the robot's movement.

Standalone autonomous navigation using Beitian BN-880 GPS/Compass with real-time map waypointing and offline map caching; requires Arduino.


Overhead camera tracks a glyph to give precise robot pose to ARC's NMS for multi-camera indoor/outdoor navigation and waypoint control


Displays SLAM maps in ARC NMS using LIDAR; proof-of-concept SLAM visualizer requiring Level #3 Group #2 telemetry, no navigation.


Hitachi-LG 360° LiDAR driver that feeds scans into ARC's Navigation Messaging System for obstacle detection, SLAM mapping, and navigation integration


Infrared indoor positioning for ARC robots: dual-camera tracks IR beacon, shows real-time heading, path and EZ-Script navigation variables


Connect Intel RealSense depth cameras to ARC NMS for depth-based distance detection, point-cloud mapping, video streaming, and navigation telemetry.


T265 VSLAM for ARC: SLAM-based mapping and precise way-point navigation, low-power tracking, and NMS telemetry.


Publishes Kinect (Xbox 360) obstacle distance scans to ARC NMS for SLAM/Navigator, using configurable detection area to ignore irrelevant depth.


Example NMS Level #1 navigation skill showing subscription to combined scan+location data, displaying position and scan info; source code included.


Estimate pose odometry from movement distance for robots without encoders, calibrated by speed. Suited for DIY navigation; pose drifts with lidar.


Pineapple Technology Industries Capstone plugin adds a secretive LiDAR unit to ARC for distance measurement.


Slamtec LiDAR driver that streams 360° scans to ARC NMS (Level 3, Group 1) for SLAM, mapping, and navigation with offset and COM configuration.


Better Navigator Hector SLAM-based NMS navigation that maps with LiDAR/depth, saves waypoints, plans paths and avoids obstacles for autonomous travel


Path-planning navigator using ARC NMS position and obstacle data to map, log trajectories, and autonomously follow waypoints.


Wavefront grid planner computes collision-free, deterministic paths from start to goal using known occupancy maps for indoor robots.


Arduino UNO wheel encoder interface: reads left/right encoder ticks, outputs wheel counts, configurable for accurate NMS pose telemetry and SLAM.


Real-time 2D mapping from Neato XV-11 360° LIDAR via GetSurreal controller; exports $LIDARDistance/$LIDARIntensity, configurable angles, color, zoom.