This repository includes configuration for standard ALPHA AUV.
-
This repository is built based on our previous vehicle repositores,
alpha_sci_auv
andalpha_auv
. The major change is that we have gone through the TF setup for the vehicle to make urdf and stonefish are consistent and representing the same frames in the correct orientation. -
The readme content is an updated version of the previous readme here, created by Emir Cem Gezer.
-
The standard ALPHA AUV uses AHRS/IMU, DVL, GPS to localize itself.
-
ALPHA uses our mvp_control and mvp_mission for low-level pose control and vehicle guidance.
-
The localization configuration we have here runs a single
robot_localization
stack. We usednavsat_transform
node to anchorodom
to a specific gps coordination. Then, therobot_localzation
fuses the IMU, DVL, GPS odometry(output from thenavsat_transform
node) for localzation. When the AUV is resurfaced, sudden position jump is visible, similar to a real mission. -
Currently, we only have simulation configured. Later, the physical system configuration will be included and the standard vehicle could be launch using another launch file.
-
A TF configuration setup guide is currently in preparation, and will be made available here soon.
-
This repository is actively maintained by the Smart Ocean Systems Laboratory, GSO, URI.
-
ROS version Noetic,
-
Ubuntu 20.04
-
alpha_std_auv
: Meta package for the standard ALPHA AUV. -
alpha_std_bringup
: Launch files to bring the vehicle/simulation up runnning -
alpha_std_config
: Configuration files for helm, controller, and devices.mvp_mission
state machine is configured in/mission/config/helm.yaml
. Parameters for different behaviors program for the helm is located in/mission/param
.mvp_control
configuration is under/config/control.yaml
. -
alpha_std_description
: URDF files, rviz configuration, and vehicle mesh -
alpha_std_stonefish
: ALPHA scenario files for theStonefish
simulator.
-
We use Stonefish Simulator. You can clone it from here, a fork from the original_repo.
-
Download the stonefish simulator to another location outside your ROS workspace
git clone https://github.com/uri-ocean-robotics/stonefish
-
Install dependencies using
sudo apt install
(instruction from the Stonefish)- OpenGL Mathematics library (libglm-dev, version >= 0.9.9.0)
- SDL2 library (libsdl2-dev, may need the following fix!)
- Install SDL2 library from the repository.
cd /usr/lib/x86_64-linux-gnu/cmake/SDL2/
sudo vim sdl2-config.cmake
- Remove space after "-lSDL2".
- Save file.
- Freetype library (libfreetype6-dev)
-
Build and install the stonefish
cd stonefish mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) sudo make install
- Clone
alpha_std_auv
repogit clone https://github.com/GSO-soslab/alpha_std_auv cd alpha_std_auv git submodule update --init --recursive
- You can run the similar commands for other AUVs.
- Install pip and setup python3 as default
sudo apt install python3-pip
Currently MVP packages should be build from the source. Target platform must be Ubuntu 20.04 because of the dependencies.
Pull repository and other dependencies
git clone --single-branch --branch noetic-devel https://github.com/uri-ocean-robotics/mvp_msgs
git clone --single-branch --branch noetic-devel https://github.com/uri-ocean-robotics/mvp_control
git clone --single-branch --branch noetic-devel https://github.com/uri-ocean-robotics/mvp_mission
git clone --single-branch --branch noetic-devel https://github.com/GSO-soslab/mvp_utilities.git
git clone --single-branch --branch noetic-devel https://github.com/uri-ocean-robotics/stonefish_mvp
stonefish_mvp is a wrapper modified from stonefish_ros for ROS interface with ROS-MVP.
-
Clone [mvp_core] repo which include other hardware related source code, sensor drivers, and other utilities.
git clone --single-branch --branch noetic-devel https://github.com/GSO-soslab/mvp_core.git
Install dependencies
rosdep install --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} -y
Install dependencies for alpha_core
cd alpha_core
git submodule update --init --recursive
go back to the ROS Workspace dir (e.g., catkin_ws), then do
catkin_make
- Bring up the ALPHA Standard AUV with the Stonefish simualtor.
roslaunch alpha_std_bringup bringup_simulation.launch
- Enable the controller in a separated terminal
rosservice call /alpha_std/controller/enable
- Start a path following mission in local frame where your waypoint is defined in
alpha_std_config/mission/param/path_local.yaml
rosservice call /alpha_std/helm/change_state "state: 'survey_local'"
- OR, try path following in a global frame where your waypoint is defined in latitude and longitude in
alpha_std_config/mission/param/gps_wpt.yaml
rosservice call /alpha_std/helm/change_state "state: 'survey_global'"
- You can put AUV in idle anytime by changing the state of the helm
rosservice call /alpha_std/helm/change_state "state: 'start'"
- Note: Make sure you selected the correct topics for the Markers in the RViz window.
The ALPHA paper:
@inproceedings{
ALPHA_PAPER,
title = {Acrobatic Low-cost Portable Hybrid AUV (ALPHA): System Design and Preliminary Results},
author={Zhou, Mingxi and Gezer, Emir Cem and McConnell, William and Yuan, Chengzhi},
booktitle={OCEANS 2022: Hampton Roads},
year={2022},
organization={IEEE}
}
The MVP paper:
@inproceedings{
ALPHA_PAPER,
title = {Working toward the development of a generic marine vehicle framework: ROS-MVP},
author={Gezer, Emir Cem and Zhou, Mingxi and Zhao, LIN and McConnell, William},
booktitle={OCEANS 2022: Hampton Roads},
year={2022},
organization={IEEE}
}
This work is supported by the National Science Foundation award #2154901 and award #2221676