-
Notifications
You must be signed in to change notification settings - Fork 2
The Pipeline
The pipeline is our way of managing state and which action the AUV should be taking at any moment. The pipeline is implemented in the triton_pipeline
package, with associated interfaces being defined in triton_interfaces
.
- pipeline type - A set of ROS2 component nodes which aim to complete a certain task
- pipeline- A ROS2 component node container meant to hold nodes associated to a pipeline type
- pipeline manager - A ROS2 standalone node for configuring and running the pipeline
- pipeline sequence manager - A ROS2 standalone node for managing the order of task to run in the pipeline
Suppose that we have the following sequence of tasks which we want to complete
To do this autonomously, we need a way to keep track of what task we are currently attempting to complete, and what task do we want to complete next. To do this, we use the pipeline, which is a ROS2 component node container in which we can load a set of ROS2 component nodes. Each set of nodes which is loaded into the pipeline represents a pipeline type, which is synonymous with a task we are trying to complete. For example, the gate pipeline type would load the nodes which recognise gate cartoons, detect the gate, estimate it's pose, and set the waypoints needed to pass through the gate. The pipeline sequence manager is responsible for managing the order of the pipeline types so that the tasks in our example above are ran in order. The pipeline manager is responsible for managing the pipeline by configuring it with the nodes used in the current pipeline type, and running the pipeline to completion. Running to completion means that the pipeline manager is notified by a node currently running in the pipeline that the task has been completed (or an unrecoverable error has occured). In the gate example, this would mean the way point set at the gate has been successfully reached.
The below diagram illustrates the pipeline architecture