https://github.com/clydemcqueen/orca4

ROS2 AUV based on the BlueROV2, ArduSub and Navigation2

https://github.com/clydemcqueen/orca4

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.9%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

ROS2 AUV based on the BlueROV2, ArduSub and Navigation2

Basic Info
  • Host: GitHub
  • Owner: clydemcqueen
  • License: mit
  • Language: C++
  • Default Branch: main
  • Size: 6.56 MB
Statistics
  • Stars: 135
  • Watchers: 7
  • Forks: 41
  • Open Issues: 6
  • Releases: 0
Created over 3 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

Orca4 ROS2 CI

Orca4 is a set of ROS2 packages that provide basic AUV (Autonomous Underwater Vehicle) functionality for the BlueRobotics BlueROV2.

Orca4 uses ArduSub as the flight controller and mavros as the GCS.

Orca4 runs in Gazebo Harmonic using the standard buoyancy, hydrodynamics and thruster plugins. The connection between ArduSub and Gazebo is provided by ardupilot_gazebo.

Sensors

The BlueROV2 provides the following interesting sensors: * An external barometer provides depth * An IMU provides attitude

Orca4 adds a simulated down-facing stereo camera and ORB_SLAM2 to generate a 3D pose as long as the camera has a good view of the seafloor. The pose is sent to ArduSub and fused with the other sensor information.

If there is no view of the seafloor a synthetic pose is generated based on the last good pose and a simple motion model.

See orca_base for details.

Navigation

Orca4 uses the Navigation2 framework for mission planning and navigation. Several simple Nav2 plugins are provided to work in a 3D environment: * straightlineplanner3d * purepursuit3d * progresschecker3d * goalchecker_3d

See orca_nav2 for details.

Installation

See the Dockerfile for installation details.

Install these packages: * ROS2 Humble * Gazebo Harmonic * ros_gz for Humble + Harmonic (ros-humble-gzharmonic) * ArduSub

Build ArduSub for SITL: ~~~ cd ~/ardupilot ./waf configure --board sitl ./waf sub ~~~

Populate the workspace: ~~~ mkdir -p ~/colconws/src cd colconws/src git clone https://github.com/clydemcqueen/orca4 vcs import < orca4/workspace.repos ~~~

Get dependencies: ~~~ rosdep update rosdep install -y --from-paths . --ignore-src ~~~

MAVROS depends on GeographicLib, and GeographicLib needs some datasets: ~~~ wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/installgeographiclibdatasets.sh chmod a+x installgeographiclibdatasets.sh sudo ./installgeographiclibdatasets.sh ~~~

Build the workspace: ~~~ cd ~/colcon_ws colcon build ~~~

Simulation

In a terminal run: ~~~ source src/orca4/setup.bash ros2 launch orcabringup simlaunch.py ~~~

This will bring up all of the components, including the Gazebo UI. The surface of the water is at Z=0 and the sub will be sitting at the surface. The world contains a sandy seafloor 10 meters below the surface.

GAZEBO GUI

You should see ArduSub establish a connection to the ardupilotgazebo plugin: ~~~ [ardusub-2] JSON received: [ardusub-2] timestamp [ardusub-2] imu: gyro [ardusub-2] imu: accelbody [ardusub-2] position [ardusub-2] quaternion [ardusub-2] velocity ~~~

At this point SLAM is not running because the seafloor is too far away, but the sub can still move using dead-reckoning. The base_controller node will send default camera poses to ArduSub to warm up the EKF and the manager node will request attitude information at 20Hz. Initialization completes when there is a good pose from the EKF:

~~~ [mavrosnode-8] [INFO] [mavros.imu/handleattitudequaternion]: IMU: Attitude quaternion IMU detected! [manager-9] [INFO] [manager/operator()]: EKF is running [base_controller-10] [INFO] [basecontroller/changestate]: EKF is running, state => RUNNOMAP [base_controller-10] [INFO] [basecontroller/UnderwaterMotion]: initialize odometry to {{-2.52304e-05, -3.28182e-05, -0.228547}, {0, 0, -5.00936e-05}} ~~~

Execute a mission in a second terminal: ~~~ source src/orca4/setup.bash ros2 run orcabringup missionrunner.py ~~~

RVIZ2_GUI

The default mission will dive to -7m and move in a large rectangle. At -6m the cameras will pick up a view of the seafloor at and ORBSLAM2 will start: ~~~ [orbslam2rosstereo-13] New map created with 571 points [basecontroller-10] [INFO] [basecontroller/changestate]: map created, state => RUNLOCALIZED ~~~

You should notice a loop closure sometime during the 2nd run around the rectangle. The adjustment is very small.

~~~ [orbslam2rosstereo-13] Loop detected! [orbslam2rosstereo-13] Local Mapping STOP [orbslam2rosstereo-13] Local Mapping RELEASE [orbslam2rosstereo-13] Starting Global Bundle Adjustment [orbslam2rosstereo-13] Global Bundle Adjustment finished [orbslam2rosstereo-13] Updating map ... [orbslam2rosstereo-13] Local Mapping STOP [orbslam2rosstereo-13] Local Mapping RELEASE [orbslam2ros_stereo-13] Map updated! ~~~

Packages

Owner

  • Name: Clyde McQueen
  • Login: clydemcqueen
  • Kind: user
  • Location: Seattle

Xoogler ramping up on all things computer vision, ROS and maritime robotics.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "McQueen"
  given-names: "Clyde"
  orcid: "https://orcid.org/0009-0007-9179-318X"
title: "orca4: ROS2 AUV based on the BlueROV2, ArduSub and Navigation2"
version: 0.1.0
date-released: 2022-06-17
url: "https://github.com/clydemcqueen/orca4"

GitHub Events

Total
  • Issues event: 6
  • Watch event: 58
  • Delete event: 10
  • Issue comment event: 5
  • Push event: 7
  • Pull request event: 23
  • Fork event: 11
  • Create event: 9
Last Year
  • Issues event: 6
  • Watch event: 58
  • Delete event: 10
  • Issue comment event: 5
  • Push event: 7
  • Pull request event: 23
  • Fork event: 11
  • Create event: 9

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 4
  • Total pull requests: 9
  • Average time to close issues: about 7 hours
  • Average time to close pull requests: 18 days
  • Total issue authors: 3
  • Total pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.22
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 8
Past Year
  • Issues: 4
  • Pull requests: 9
  • Average time to close issues: about 7 hours
  • Average time to close pull requests: 18 days
  • Issue authors: 3
  • Pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.22
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 8
Top Authors
Issue Authors
  • clydemcqueen (3)
  • figuernd (2)
  • Wakatunde (1)
  • jshenns (1)
  • ben1tdsx (1)
  • JMadhup (1)
  • Abinesh-Thankaraj (1)
  • dependabot[bot] (1)
Pull Request Authors
  • dependabot[bot] (13)
  • clydemcqueen (1)
  • steven-craig-sagentia (1)
Top Labels
Issue Labels
dependencies (1)
Pull Request Labels
dependencies (13) github_actions (5)

Dependencies

.github/workflows/build_test.yml actions
  • actions/checkout v3 composite
  • ros-tooling/action-ros-ci 0.2.7 composite
docker/Dockerfile docker
  • osrf/ros humble-desktop build