All Projects → clydemcqueen → orca

clydemcqueen / orca

Licence: BSD-3-Clause license
ROV and AUV based on the BlueRobotics BlueROV2

Programming Languages

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

Orca

Orca is a ROS driver for BlueRobotics BlueROV2. Version 0.1.0 supports basic ROV functions.

Orca requires hardware modifications to the BlueROV2. It does not use the Pixhawk controller that comes with the BlueROV2, and does not support mavros, ArduSub or QGroundControl.

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

Tested hardware

Simulation

Orca runs in Gazebo, a SITL (software-in-the-loop) simulator. Use the instructions below to install ROS, Gazebo and Orca on your desktop or laptop.

Install ROS Melodic. Select ros-melodic-desktop-full; this will install Gazebo 9 as well.

Install these additional packages:

sudo apt install ros-melodic-imu-tools ros-melodic-robot-localization

Create a catkin workspace:

source /opt/ros/melodic/setup.bash
mkdir -p ~/orca_catkin_ws/src
cd ~/orca_catkin_ws/
catkin_make
source devel/setup.bash

Download and compile Orca:

cd ~/orca_catkin_ws/src
git clone https://github.com/clydemcqueen/orca.git
cd ..
catkin_make

Run the simulation:

roslaunch orca_gazebo gazebo.launch --screen

Plug in your gamepad, hit the menu button to arm the thrusters and start driving around. Here's how the buttons are mapped:

  • Left stick up/down is forward/reverse
  • Left stick left/right is yaw left/right
  • Right stick up/down is ascend/descend
  • Right stick left/right is strafe left/right
  • Menu button: arm
  • View button: disarm
  • A button: manual
  • X button: hold heading
  • B button: hold depth
  • Y button: hold heading and depth

Design

I considered 3 ways to ROSify a BlueROV2:

  • Use the existing hardware (Pixhawk) and software (ArduSub), and use mavros to move messages from the MAV message bus to/from ROS. See BlueRov-ROS-playground for a good example of this method. This is the fastest way to integrate ROS with the BlueROV2.
  • Port ROS to the Pixhawk and NuttX, and run a ROS-native driver on the Pixhawk. I don't know of anybody working on this.
  • Provide a ROS-native driver running on Linux, such as the Raspberry Pi 3. You'll need to provide a small device controller, such as the Pololu Maestro, and an IMU, such as the Phidgets IMU. This is the Orca design.

There are 7 projects:

  • orca_msgs provides message types
  • orca_description provides robot description files
  • orca_driver provides the interface between the hardware and ROS (not required for simulations)
  • orca_base provides the ROV functionality
  • orca_topside provides the topside environment (rviz is used instead of QGroundControl)
  • orca_gazebo provides the simulation environment
  • orca_vision provides a stereo vision system (experimental)

Hardware modifications

This is rough sketch of the hardware modifications I made to the BlueROV2. YMMV.

  • Remove the Pixhawk and Pixhawk power supply
  • Install the Maestro and connect to Pi3 via USB; set the jumper to isolate the Maestro power rail from USB-provide power
  • Install the IMU and connect to the Pi3 via USB
  • Connect the Bar30 to the Pi3 I2C and 3.3V power pins
  • Connect the ESCs to the Maestro; cut the power wire on all but one ESC
  • Connect the camera tilt servo to the Maestro
  • Connect the lights signal wire to the Maestro; provide power and ground directly from the battery
  • Connect the leak detector to a Maestro digital input
  • Build a voltage divider to provide a voltage signal from the battery (0-17V) to a Maestro analog input (0-5V)

Orca power budget:

  • The BlueROV2 5V 3A regulated power supply provides power for the RPi (2.5A), the Maestro (50mA), the leak detector (20mA), the Bar30 (2mA), the IMU (55mA) and the RPi camera (250mA)
  • The Fathom-X, LED lights and ESCs are powered directly from the battery
  • The camera tilt servo is powered from the 5V 500mA regulator on one (just one!) of the ESCs. Set the jumpers on the Maestro to isolate the servo rail from the USB-provided power

Notes on the RPi3 power needs:

  • The RPi3 needs a 5V 2.5A power supply. It can provide 1.2A to all USB devices
  • The RPi3 can provide 50mA across all GPIO pins, but just 16mA for any particular pin
  • Note that the RPi3 pins are 3.3V, not 5V
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].