All Projects → clydemcqueen → orca3

clydemcqueen / orca3

Licence: MIT license
ROS2 AUV based on the BlueRobotics BlueROV2 and Navigation2

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to orca3

riptide setup
The software packages which power The OSU Underwater Robotics Team's AUV.
Stars: ✭ 31 (-27.91%)
Mutual labels:  auv
iknet
Inverse kinematics estimation of ROBOTIS Open Manipulator X with neural networks
Stars: ✭ 27 (-37.21%)
Mutual labels:  ros2
Nindamani-the-weed-removal-robot
Nindamani, the AI based mechanically weed removal robot
Stars: ✭ 73 (+69.77%)
Mutual labels:  ros2
stoqs
Geospatial database visualization software for oceanographic measurement data
Stars: ✭ 31 (-27.91%)
Mutual labels:  auv
dynamixel control
ros2_control packages for ROBOTIS Dynamixel
Stars: ✭ 69 (+60.47%)
Mutual labels:  ros2
vscode ros2 workspace
A template for using VSCode as an IDE for ROS2 development.
Stars: ✭ 527 (+1125.58%)
Mutual labels:  ros2
bluerobotics.github.io
Blue Robotics product documentation site.
Stars: ✭ 34 (-20.93%)
Mutual labels:  bluerov2
Micro-XRCE-DDS-Agent
Micro XRCE-DDS Agent respository
Stars: ✭ 58 (+34.88%)
Mutual labels:  ros2
DDS-Router
The DDS Router is an application developed by eProsima that allows, using Fast DDS, to communicate by DDS protocol different networks.
Stars: ✭ 34 (-20.93%)
Mutual labels:  ros2
ros msft camera
This ROS node uses Windows Media Foundation's frame server to efficiently process camera frames.
Stars: ✭ 17 (-60.47%)
Mutual labels:  ros2
ros-tritech-micron
🔊 Tritech Micron SONAR ROS driver
Stars: ✭ 19 (-55.81%)
Mutual labels:  auv
li slam ros2
ROS2 package of tightly-coupled lidar inertial ndt/gicp slam
Stars: ✭ 160 (+272.09%)
Mutual labels:  ros2
dockerfiles
Dockerfiles I use for development
Stars: ✭ 64 (+48.84%)
Mutual labels:  ros2
auv gnc
Guidance, Navigation, and Control library for AUVs
Stars: ✭ 34 (-20.93%)
Mutual labels:  auv
ros-docker-gui
ROS Docker Containers with X11 (GUI) support [Linux]
Stars: ✭ 137 (+218.6%)
Mutual labels:  ros2
Underwater-obstacle-avoidance
The underwater robot obstacle avoidance project with the method of deep reinforcement learning
Stars: ✭ 23 (-46.51%)
Mutual labels:  bluerov2
SubjuGator
SubjuGator 8 on-board software
Stars: ✭ 31 (-27.91%)
Mutual labels:  auv
transport drivers
A set of ROS2 drivers for transport-layer protocols.
Stars: ✭ 41 (-4.65%)
Mutual labels:  ros2
kvaser interface
A Kvaser CAN interface ROS abstraction layer.
Stars: ✭ 72 (+67.44%)
Mutual labels:  ros2
isaac ros dnn inference
Hardware-accelerated DNN model inference ROS2 packages using NVIDIA Triton/TensorRT for both Jetson and x86_64 with CUDA-capable GPU
Stars: ✭ 67 (+55.81%)
Mutual labels:  ros2

Orca3 example branch parameter

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

Update 17-June-2022: work has shifted to Orca4, which uses ArduSub as the flight controller.

Orca3 includes a base_controller node that responds to 3D 4DoF /cmd_vel messages and generates thrust and odometry. The BlueROV2 barometer sensor is used to hover at the target depth. See orca_base for details.

Orca3 supports two SLAM (Simultaneous Localization And Mapping) systems:

  • fiducial_vlam looks for ArUco markers in the environment using the forward-facing camera.
  • orb_slam2_ros looks for ORB features along the seafloor. It is currently configured to use a custom down-facing stereo camera, but the underlying ORB-SLAM2 system also works with depth and monocular cameras.
  • Localization details

Orca3 uses the ROS2 Navigation2 framework for mission planning and navigation. Several Nav2 plugins are provided to work in a maritime environment:

  • straight_line_planner_3d
  • pure_pursuit_3d
  • progress_checker_3d
  • goal_checker_3d
  • Nav2 plugin details

Orca3 is simulated in Gazebo 11. Several Gazebo plugins are provided to support a maritime environment:

Orca3 includes experimental hardware drivers that run on a modified BlueROV2:

  • BarometerNode reads the barometer and sends /barometer messages
  • DriverNode responds to /thrust, /lights and /camera_tilt messages
  • Hardware driver details

Installation

Orca3 has been tested on ROS2 Foxy and Galactic. See the Dockerfile for installation instructions.

Simulation with fiducial_vlam

In a terminal run:

cd ~/ros2/orca_ws
source src/orca3/setup.bash
ros2 launch orca_bringup sim_launch.py gzclient:=True rviz:=True slam:=vlam world:=ping_pong

This will start Gazebo, Rviz2 and a bunch of ROS2 nodes. If everything started correctly, you will see Gazebo and Rviz2 GUIs like this:

Gazebo GUI RVIZ2 vlam GUI

The surface of the water is at Z=0 and the AUV will be sitting at the surface. There's one ArUco marker directly in front of the AUV to provide a good initial pose. There are two more AUV markers 2 meters below the surface, facing each other 10 meters apart.

Execute a mission by calling the FollowWaypoints action in a second terminal:

cd ~/ros2/orca_ws
source src/orca3/setup.bash

# Arm sub, turn on hover and vertical pid controller
ros2 topic pub --once /teleop orca_msgs/Teleop "{armed: true, hover_thrust: true, pid_enabled: True}"

# Aligns with markers on the ping-pong map
ros2 action send_goal /follow_waypoints nav2_msgs/action/FollowWaypoints "{poses: [\
{header: {frame_id: 'map'}, pose: {position: {x: 4, z: -2}}},\
{header: {frame_id: 'map'}, pose: {position: {x: -4, z: -2}}},\
{header: {frame_id: 'map'}, pose: {position: {x: 4, z: -2}}},\
{header: {frame_id: 'map'}, pose: {position: {x: -4, z: -2}}},\
]}"

This mission will dive to -2 meters, then ping-pong between the two submerged markers. The AUV will only trust a marker pose if the marker is within 2 meters, so it will run dead-reckoning ~7 meters between the markers. As the AUV approaches a marker and gets a good pose, the dead-reckoning error is added to the map->odom transform.

Mission vlam

Simulation with orb_slam2_ros

In a terminal run:

cd ~/ros2/orca_ws
source src/orca3/setup.bash
ros2 launch orca_bringup sim_launch.py gzclient:=True rviz:=True slam:=orb world:=empty

This Rviz2 configuration is tuned for orb_slam2_ros:

RVIZ2 ORB_SLAM2 GUI

The surface of the water is at Z=0 and the AUV will be sitting at the surface. The world contains a rocky seafloor 4 meters below the surface, indicated by the blue marker in Rviz2. The pointcloud shows the ORB features recognized by orb_slam2_ros.

Execute a mission by calling the FollowWaypoints action in a second terminal:

cd ~/ros2/orca_ws
source src/orca3/setup.bash

# Arm sub, turn on hover and vertical pid controller
ros2 topic pub --once /teleop orca_msgs/Teleop "{armed: true, hover_thrust: true, pid_enabled: True}"

# Run a 6m x 6m box 1.5m above the seafloor, will do a loop closure
ros2 action send_goal /follow_waypoints nav2_msgs/action/FollowWaypoints "{poses: [\
{header: {frame_id: 'map'}, pose: {position: {x: 3, y: 3, z: -2.5}}},\
{header: {frame_id: 'map'}, pose: {position: {x: -3, y: 3, z: -2.5}}},\
{header: {frame_id: 'map'}, pose: {position: {x: -3, y: -3, z: -2.5}}},\
{header: {frame_id: 'map'}, pose: {position: {x: 3, y: -3, z: -2.5}}},\
{header: {frame_id: 'map'}, pose: {position: {x: 3, y: 3, z: -2.5}}},\
]}"

Mission ORB_SLAM2

This mission will dive to -2.5 meters and move in a 6m x 6m square. The AUV has a good view of the seafloor, and orb_slam2_ros runs at the camera frame rate so the map->odom transform is published at 30fps. There is some odometry error which accumulates in the map->odom transform. You should notice a loop closure when the square is completed. The adjustment is very small.

[orb_slam2_ros_stereo-12] Loop detected!
[orb_slam2_ros_stereo-12] Local Mapping STOP
[orb_slam2_ros_stereo-12] Local Mapping RELEASEStarting Global Bundle Adjustment
[orb_slam2_ros_stereo-12] 
[orb_slam2_ros_stereo-12] Global Bundle Adjustment finished
[orb_slam2_ros_stereo-12] Updating map ...
[orb_slam2_ros_stereo-12] Local Mapping STOP
[orb_slam2_ros_stereo-12] Local Mapping RELEASE
[orb_slam2_ros_stereo-12] Map updated!

Packages

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].