https://github.com/clydemcqueen/orca4
ROS2 AUV based on the BlueROV2, ArduSub and Navigation2
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
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
Metadata Files
README.md
Orca4 
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.

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

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
- Repositories: 14
- Profile: https://github.com/clydemcqueen
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
Pull Request Labels
Dependencies
- actions/checkout v3 composite
- ros-tooling/action-ros-ci 0.2.7 composite
- osrf/ros humble-desktop build