Skip to content

jhlenes/complete_coverage

 
 

Repository files navigation

complete_coverage

This is a collection of packages for the Robot Operating System (ROS).

Together, these packages provide an implementation of an online complete coverage maneuvering system for unmanned surface vehicles (USVs).

Details can be found in my Master's thesis:

Lenes, Jan Henrik. "Autonomous online path planning and path-following control for complete coverage maneuvering of a USV." Master's thesis, NTNU, 2019. http://hdl.handle.net/11250/2622919

See the code in action at: https://www.youtube.com/watch?v=hqOUKtosnFw

Installation

Navigate to the src/ folder in your catkin workspace, e.g. cd ~/catkin_ws/src. Then run the following (the command sudo rosdep init will print an error if you have already executed it since installing ROS. This error can be ignored.)

git clone https://github.com/jhlenes/complete_coverage.git --recurse-submodules
cd ..
sudo apt update
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
catkin_make
source devel/setup.bash

Guidance

The guidance package implements a line-of-sight (LOS) guidance for path following of curved paths.

The launch file sets up everything required for path following. It starts nodes for SLAM, map inflation, and LOS guidance. Furthermore, it sets up rviz for visualization. For simulation:

roslaunch guidance sim_guidance.launch

For actual USV:

roslaunch guidance real_guidance.launch

The USV is now ready start moving, all it needs is a path from one of the two complete coverage path planning methods.

Complete coverage path planning

There are two different implementations of complete coverage. coverage_binn implements a bio-inspired neural network (BINN) approach. coverage_boustrophedon implements an approach based on boustrophedon (lawnmower pattern) motions. coverage_boustrophedon is currently the best performing method.

roslaunch coverage_binn coverage_binn.launch
roslaunch coverage_boustrophedon coverage.launch

Once either of these are started while the guidance is running, the USV should start moving.

Simulation

To simulate the USV, use the usv_simulator package.

Sensors

This system will connect to several sensors. In order to know which sensor is at which USB port (/dev/ttyUSB*), we need to set up some udev rules. These rules are defined for RPLIDAR, and Xsens IMU. Apply them by:

sudo cp etc/rplidar.rules /etc/udev/rules.d
sudo cp etc/xsens.rules /etc/udev/rules.d

Unplug and replug your devices, and you are finished.

If you would like to add other sensors as well, you can find the ATTRS{idVendor} and ATTRS{idProduct} with the lsusb command. If the names are cryptic, just disconnect and reconnect your devices to see what is changing.

Map inflating

The map_inflating package uses a costmap in order to inflate nearby obstacles.

SLAM

The slam package performs simultaneous localization and mapping (SLAM) with Cartographer.

About

ROS implementation of online complete coverage maneuvering for unmanned surface vehicles

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published