Code Monkey home page Code Monkey logo

alpha_std_auv's Introduction

ALPHA Standard AUV.

Introduction

This repository includes configuration for standard ALPHA AUV.

  • This repository is built based on our previous vehicle repositores, alpha_sci_auv and alpha_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 used navsat_transform node to anchor odom to a specific gps coordination. Then, the robot_localzation fuses the IMU, DVL, GPS odometry(output from the navsat_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

Directory structure

  • 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 the Stonefish simulator.

Instllation

Install the Stonefish 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!)
      1. Install SDL2 library from the repository.
      2. cd /usr/lib/x86_64-linux-gnu/cmake/SDL2/
      3. sudo vim sdl2-config.cmake
      4. Remove space after "-lSDL2".
      5. 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

Setup ALPHA Standard Repo

  • Clone alpha_std_auv repo

    git clone https://github.com/GSO-soslab/alpha_std_auv
    cd alpha_auv
    git submodule update --init --recursive
  • Install pip and setup python3 as default

    sudo apt install python3-pip
  • Clone [alpha_core] repo which include other hardware related source code, sensor drivers, and other utilities.

    git clone --single-branch --branch noetic-devel https://github.com/uri-ocean-robotics/alpha_core.git

Install ROS-MVP

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/uri-ocean-robotics/stonefish_mvp

stonefish_mvp is a wrapper modified from stonefish_ros for ROS interface with ROS-MVP.

Install Dependencies

Install dependencies

rosdep install --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} -y

Compile the code

go back to the ROS Workspace dir (e.g., catkin_ws), then do

catkin_make

Quick test

  • 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.

Citation

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}
}

Funding

This work is supported by the National Science Foundation award #2154901 and award #2221676

alpha_std_auv's People

Contributors

mzhouuri avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.