The Navigation Stack consists of several modules that work together to enable autonomous navigation:

  • Odometry Estimator: Estimates the robot’s odometry using wheel and IMU measurements. It uses an Extended Kalman Filter (EKF) to provide an estimate of the robot’s position and orientation, which is used by other modules for localization and planning.

  • 2D Localizer:Uses LIDAR measurements to localize the robot within an occupancy map. The module uses a particle filter to estimate the robot’s position and orientation with respect to the map.

  • Behavior Executor: Uses a behavior tree to coordinate downstream navigation modules like planners. Generates tasks for regional path planner and the speed decision maker.

  • Global Route Planner: Creates a high-level plan for the robot’s navigation. The planner uses a waypoint graph to generate a coarse sequence of waypoints connecting the robot’s current location to its destination.

  • Regional Path Planner: Generates a local plan for the robot’s navigation. The planner uses a hybrid A* search on a locally constructed graph to find a path for the next 50 meters. This path also takes into account dynamic obstacles that are not seen on the map.

  • Speed Decision Maker: Consumes the path from regional path planners and determines the speed to send to trajectory planner.

  • Trajectory Planner: Gnerates a trajectory for the robot to follow based on the local plan from the Regional Path Planner. The planner uses an iLQR algorithm to generate a trajectory for the next 5 meters.

  • Controller: Instructs the robot to follow the trajectory generated by the Trajectory Planner. The controller adjusts the robot’s velocity and steering to keep it on the desired path.

flowchart TD Odom[Odometry Estimator] Loc[2D Localizer] Gp[Global Route Planner] Rpp[Regional Path Planner] Tp[Trajectory Planner] Controller[Controller] IRobot[Robot Hardware] ORobot[Robot Hardware] BEX[Behavior Executor] MC[Mission Client] SRE[Semantic Region Extractor] SDM[Speed Decision Maker] IRobot --> |Imu Measurement| Odom IRobot --> |Wheel Measurement| Odom Odom --> |Odometry| Loc Odom --> |Odometry| Tp Loc --> |Robot Pose| Gp BEX --> |Maneuver| Rpp Loc --> |Robot Pose| Rpp Loc --> |Robot Pose| BEX Loc --> |Robot Pose| SRE Gp --> |Route| BEX MC --> |Action| BEX SRE --> |Semantic Regions| BEX BEX --> |Maneuver| SDM Rpp --> |Path| SDM SDM --> |Speed Directive| Tp Rpp --> |Path| Tp Tp --> |Trajectory| Controller Controller --> |Command| ORobot

Fig. 1 Overview of the modules in the navigation stack.

© Copyright 2018-2023, NVIDIA Corporation. Last updated on Oct 30, 2023.