Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Updating numbered headings
Table of Contents
minLevel1
maxLevel6
outlinefalse
stylenone
typelist
printablefalse

1. Overview

This application note gives a quick introduction to the navigation concepts and the high-level architecture of the ROS2 navigation stack which is utilized in the I.MX 8MP NavQ+ software distribution. For in-depth description, please read the Nav2 documentation at https://navigation.ros.org/concepts/index.html .

The application note assumes that the reader has basic familiarity with the key concepts of the Robotic Operation System 2 (ROS2) such as Nodes, Services, Actions, or Topics. For more in-depth description, please read the ROS2 documentation at https://docs.ros.org/en/humble/Concepts.html .

2. Basic Navigation Concepts

The Nav2 navigation stack consists of these basic parts:

  1. Behavior Trees.

  2. Navigation Servers.

  3. State Estimation Components.

  4. Environmental Representation Components.

2.1. Behavior Trees

Behavior Trees provide a formal structure for navigation logic. They define what actions a robot shall undertake being in one or another situation while navigating to a target. Being a high-level component in the navigation stack, Behavior Trees match navigation actions with corresponding navigation servers.

For example, Behavior Trees define logic sequencing actions to compute a path to the goal position, then enact action to navigate along the computed path, enact recovery actions if the robot is stuck, and recompute the path if recovery doesn’t help or a new navigation goal has been activated.

2.2. Navigation Servers

Navigation servers are the heart of navigation stack. The navigation pipeline differentiates navigation servers by their respective purposes:

...

Due to a changing environment, following the path exactly can not always be achievable. When the controller can’t follow the path it signals about it with an error, which enacts various recovery behaviors such as re-compute the path from the existing location, spin robot, or move it back a bit, etc.

2.3. State Estimation Components

The navigation stack operates with different positioning data which coordinate frames. The frame could be thought of a coordinate system with a unique name which has a defined coordinate transformation relative to another frame called parent frame. Thus, frames can form hierarchies allowing to transform coordinates from one frame to another by applying transformations for each linked frame on the path between the two.

...

The local positioning (odometry) can come from many sources including LIDAR, RADAR, wheel encoders, VIO (Visual Inertial Odometry), IMUs (Inertial Measurement Unit), depth sensors or RGB cameras. The goal of the odometry is to provide a smooth and continuous local frame based on robot motion. The navigation stack provides components for working with many popular hardware options. VoxelBotics provides a software component for working with the PMD Flexx2 depth cameras.

2.4. Environmental Representation

The environmental representation is the way the robot perceives its environment. It also acts as the central localization for various algorithms and data sources to combine their information into a single space. This space is then used by the controllers, planners, and recoveries to compute their tasks safely and efficiently.

...

Costmap layers can be created to detect and track obstacles in the scene for collision avoidance using camera or depth sensors. Additionally, layers can be created to algorithmically change the underlying costmap based on some rule or heuristic. Finally, they may be used to buffer live data into the 2D or 3D world for binary obstacle marking.

3. Simultaneous Localization and Mapping (SLAM)

Simultaneous localization and mapping (SLAM) solves the computational problem of constructing or updating a map of an unknown environment while simultaneously keeping track of a mobile platform (i.e. the robot) location within it.

...

The navigation stack doesn’t provide default 3D SLAM implementation at the moment. Though, there are several 3D SLAM ROS2 compatible implementations available, none of them is mature enough to be included in the navigation stack.

3.1. Using SLAM on NAVQ+

In the context of NAVQ+, the software release provides ready-to-use SLAM-based navigation utilizing the navigation stack, Slam Toobox, iRobot Create3 mobile platform and SlamTeck RPLIDAR A1.

...

The following application notes describe how to prepare the NAVQ+, iRobot Create3, and other components for SLAM-base navigation with and without PMD Flexx2 camera.

4. Related Topics