π© 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.
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.
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.
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 |
β |
β |
β |
NavigateThroughPoses Usage#
The NavigateThroughPoses Navigator implements a BT-based point-through-points action server.
For more information on the NavigateThroughPose Waypoint Navigator , please refer to Nav2 Official Documentation.
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.
NavigateThroughWaypoints Usage#
The pal_bt_navigator_through_waypoints implements a Waypoint Navigation strategy that offers a combination of the functionalities implemented in the previous ones. Both behavior trees and action plugins are supported, allowing the user to define complex navigation behavior as well as providing a set of tasks that could be performed upon reaching each waypoint. This allows for the creation of more complex patrolling tasks in which the robot should apply recovery strategies through the usage of a Behavior Tree and should execute various, different actions upon reaching each waypoint. Also in this case, the actions that the robot can perform upon reaching each Waypoint are Waypoint Task Executors plugins.
See also#
To continue learning about the Waypoint Navigation, how to implement it and how to create your own behavior trees and plugins, check the following sections: