5️Nav2

Nav2 is the professionally supported spiritual successor of the ROS Navigation Stack deploying the same kinds of technology powering Autonomous Vehicles brought down, optimized, and reworked for mobile and surface robotics. This project seeks to find a safe way to have a mobile robot move to complete complex tasks through many types of environments and classes of robot kinematics. Not only can it move from Point A to Point B, but it can have intermediary poses, and represent other types of tasks like object following and more.

The diagram below will give you a good first-look at the structure of Nav2. Note: It is possible to have multiple plugins for controllers, planners, and recoveries in each of their servers with matching BT plugins. This can be used to create contextual navigation behaviors. If you would like to see a comparison between this project and ROS (1) Navigation, see ROS to ROS 2 Navigation.

It has tools to:

  • Load, serve, and store maps (Map Server)

  • Localize the robot on the map (AMCL)

  • Plan a path from A to B around obstacles (Nav2 Planner)

  • Control the robot as it follows the path (Nav2 Controller)

  • Smooth path plans to be more continuous and feasible (Nav2 Smoother)

  • Convert sensor data into a costmap representation of the world (Nav2 Costmap 2D)

  • Build complicated robot behaviors using behavior trees (Nav2 Behavior Trees and BT Navigator)

  • Compute recovery behaviors in case of failure (Nav2 Recoveries)

  • Follow sequential waypoints (Nav2 Waypoint Follower)

  • Manage the lifecycle and watchdog for the servers (Nav2 Lifecycle Manager)

  • Plugins to enable your own custom algorithms and behaviors (Nav2 Core)

  • Monitor raw sensor data for imminent collision or dangerous situation (Collision Monitor)

  • Python3 API to interact with Nav2 in a pythonic manner (Simple Commander)

  • A smoother on output velocities to guarantee dynamic feasibility of commands (Velocity Smoother)

Last updated