Skip to content

dsor-isr/Paper-PathFollowingSurvey

Repository files navigation

Paper - A review of path following control strategies for autonomous robotic vehicles: theory, simulations, and experiments

This repository implements a simulation playground for performing path following experiments with the Medusa clas of marine vehicles. It implements and supports the algorithms described in the survey paper "A review of path following control strategies for autonomous robotic vehicles: theory, simulations, and experiments".

The equivalent matlab control toolbox developed in the scope of this paper is available at Github Matlab-toolbox.

Ackowledgment

If you are using this code research and development for your publication, please cite:

@article{https://doi.org/10.1002/rob.22142,
author = {Hung, Nguyen and Rego, Francisco and Quintas, Joao and Cruz, Joao and Jacinto, Marcelo and Souto, David and Potes, Andre and Sebastiao, Luis and Pascoal, Antonio},
title = {A review of path following control strategies for autonomous robotic vehicles: Theory, simulations, and experiments},
journal = {Journal of Field Robotics},
volume = {n/a},
number = {n/a},
pages = {},
keywords = {autonomous cars, autonomous marine vehicles (AMVs), autonomous surface vehicles (ASVs), control, guidance, over-actuated vehicles, path following, under-actuated vehicles, underwater autonomous vehicles (UAVs), unmanned aerial vehicles (UAVs), unmanned ground vehicles (UGVs)},
doi = {https://doi.org/10.1002/rob.22142},
url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/rob.22142},
eprint = {https://onlinelibrary.wiley.com/doi/pdf/10.1002/rob.22142}
}

Requirements

This code stack was developed with ROS1 in mind. In order to use, you are required to have:

  • Ubuntu 20.04LTS (64-bit)
  • ROS1 Noetic
  • Python 3

This repository assumes that you already have a machine running ubuntu 20.04LTS and a working installation of ROS1 (Noetic) and Gazebo 11. If you do not have ROS installed, please follow the steps available at the ROS installation guide.

Setup the ROS workspace

Running the following commands will clone this repository and setup a clean ROS workspace

cd ${HOME} && \
git clone --recursive git@github.com:dsor-isr/medusa_base.git catkin_ws_paper/src

Run the following lines to add required environment variable to your .bashrc file

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
echo "export CATKIN_ROOT=${HOME}" >> ~/.bashrc
echo "export ROS_WORKSPACE=${CATKIN_ROOT}/catkin_ws_paper" >> ~/.bashrc
echo "export MEDUSA_SCRIPTS=$(find ${ROS_WORKSPACE}/src/ -type d -iname medusa_scripts | head -n 1)
echo "source ${ROS_WORKSPACE}/devel/setup.bash" >> ~/.bashrc" 

Installing library requirements and compiling the code

Run the following bash script to install external library requirements:

bash ./install_script.sh

Source your bashrc file and compile the code

source ~/.bashrc
catkin build

Run a simulation experiment

  • Start the 3D gazebo simulation along with all the control and navigation algorithms. The 2 supported vehicles in this demo are 'myellow' and 'mvector'. The latter can be actuated in 'surge', 'sway' and 'yaw/yaw-rate', while the 'myellow' vehicle can only be controlled in 'surge' and 'yaw/yaw-rate'. If gazebo visual mode is too heavy, you can disable the 3D simulation gui 🤓!
roslaunch experiments_bringup start_gazebo_simulation.launch name:=myellow gui:=true
  • Start a pre-defined path following mission. The name of the vehicle must match the previous one. The supported paths in this demo are 'bernoulli' and 'lawn_mower'.
roslaunch experiments_bringup start_mission.launch name:=myellow path_type:=bernoulli controller_type:=aguiar
Supported Vehicles:
  • myellow
  • mvector
Supported Controllers:
  • samson (method 1)
  • lapierre (method 2)
  • fossen (method 3)
  • brevik (method 4)
  • aguiar (method 6)
  • romulo (method 6, but control surge and sway and leaves yaw as degree of freedom)
  • relative_heading (method 6, but we can specify the heading relative to the tagent to the path)
  • pramod (like fossen, but with integral term)
Supported Paths:
  • bernoulli
  • lawn_mower

Note: If running the last command does not seem to work, check if the vehicle name selected is the same as the one in the first launch command.

Implementation Structure

The C++ code that implements the controllers logic can be found at the package:

medusa_base/medusa_control/outer_loops_controllers/path_following

The C++ code that implements the paths equations can be found at the package:

medusa_base/medusa_planning/dsor_paths

Literature Revision and Theoretical Overview

Path Following Coders

Mechanics for Water Trials with the Real Vehicles

License

This repository is open-sourced under the MIT license. See the LICENSE file for details.

About

Paper: A review of path following control strategies for autonomous robotic vehicles: theory, simulations, and experiments

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published