../_images/tiagopro-icon.png ../_images/kangaroo-icon.png ../_images/tiago-icon.png ../_images/ari-icon.png ../_images/talos-icon.png ../_images/mobile-bases-icon.png

🚩 Waypoint Navigation#

The Waypoint Navigation is a functionality that enables a robot to autonomously navigate through a series of poses, eventually performing one or more actions upon reaching each waypoint.

../_images/waypoint_intro.svg

The Waypoint Navigation is a very common feature for mobile robots and, due to the multiple user requirements and diverse applications, multiple, alternative, implementations are already available for you to choose from. The purpose of this chapter is to introduce the available Waypoint Navigation implementations, their strengths, and weaknesses so that you can choose the one that best fits your needs.

Some Waypoint Navigation implementations, for example, support Behavior Trees. The advantage of using behavior trees is that they allow the user to define the robot’s navigation logic in a more flexible way, assigning it a behavior to perform in specific situations. For example, if a waypoint is not reachable, the robot can skip it and try to reach the following one. Alternatively, the robot can decide to wait for a while and then retry reaching the same waypoint or eventually, it can decide to abort the waypoint navigation task.

../_images/behavior_tree.svg

In other cases, users might prefer to have a more hardcoded navigation logic, where the robot just follows a predetermined list of waypoints and performs one or more actions upon reaching each waypoint. These actions are implemented as plugins, allowing for versatility. For example, in patrolling tasks, the robot might take a photo at the first waypoint, then wait for a certain amount of time at the second waypoint, and so on.

../_images/patrolling.svg

All the different implementations of the Waypoint Navigation can be grouped as follows:

Nav2

PAL Navigation

NavigateThroughPoses

Waypoint Follower

NavigateThroughWaypoints

Flexible Waypoint Navigation logic and recoveries through Behavior Trees

βœ…

❌

βœ…

Execution of Actions upon the reception of each Waypoint through Plugins

❌

βœ…

βœ…

Execution of different Actions upon the reception of each Waypoint

❌

❌

βœ…

Execution of multiple Actions upon the reception of each waypoint

❌

❌

βœ…

Waypoint Follower Usage#

The Waypoint Follower implements an hardcoded Waypoint Navigation logic in which the robot tries to reach each Waypoint once, eventually skipping it in case of failure. It implements the /follow_waypoints and supports the execution of a certain task upon reaching each waypoint. The available tasks that the robot can perform at each Waypoint are implemented as Waypoint Task Executors plugins.

Note

Using this Waypoint Navigation implementation only allows to perform one action per Waypoint. The same for all the waypoints.

For more information on the Waypoint Follower Navigation, please refer to Nav2 Waypoint Follower.