Ardupilot2/ArduSub
2016-03-02 22:08:03 -08:00
..
AP_State.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
APM_Config_mavlink_hil.h Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
APM_Config.h Fence: enable altitude fences for sub 2016-03-02 22:08:02 -08:00
ArduSub.cpp Sub: Add surface and bottom detection capabilities 2016-03-02 22:06:43 -08:00
arming_checks.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
Attitude.cpp Fence: enable altitude fences for sub 2016-03-02 22:08:02 -08:00
baro_ground_effect.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
capabilities.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
commands_logic.cpp Sub: Change M_PI to match Copter. 2016-02-27 11:35:34 -08:00
commands.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
compassmot.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
compat.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
config.h Sub: Make surface_depth a parameter 2016-03-02 22:08:03 -08:00
control_acro.cpp Sub: Enabled control modes to operate at zero throttle 2016-01-18 22:08:55 -08:00
control_althold.cpp Sub: Make surface_depth a parameter 2016-03-02 22:08:03 -08:00
control_auto.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
control_autotune.cpp Sub: Changes to match Copter updates 2016-02-20 11:32:42 -08:00
control_brake.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
control_circle.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
control_drift.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
control_flip.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
control_guided.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
control_land.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
control_loiter.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
control_poshold.cpp Sub: Change M_PI to match Copter. 2016-02-27 11:35:34 -08:00
control_rtl.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
control_sport.cpp Sub: Enabled control modes to operate at zero throttle 2016-01-18 22:08:55 -08:00
control_stabilize.cpp Sub: Enabled control modes to operate at zero throttle 2016-01-18 22:08:55 -08:00
crash_check.cpp Sub: ensure that gcs and crash failsafes always happen 2016-02-20 22:39:48 -05:00
defines.h Sub: Make surface_depth a parameter 2016-03-02 22:08:03 -08:00
ekf_check.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
esc_calibration.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
events.cpp Sub: ensure that gcs and crash failsafes always happen 2016-02-20 22:39:48 -05:00
failsafe.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
fence.cpp Fence: enable altitude fences for sub 2016-03-02 22:08:02 -08:00
flight_mode.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
GCS_Mavlink.cpp Sub: Changes to match Copter updates. 2016-02-24 11:10:07 -08:00
inertia.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
land_detector.cpp Sub: Do nothing for update_throttle_thr_mix 2016-03-02 22:06:43 -08:00
landing_gear.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
leds.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
Log.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
make.inc Sub: Remove ADSB support 2016-02-23 08:35:01 -08:00
Makefile Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
Makefile.waf Sub: Update build script and added to build_ci.sh 2016-02-15 14:48:31 -08:00
motor_test.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
motors.cpp Sub: Top and bottom detection working for alt hold 2016-03-02 22:08:02 -08:00
navigation.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
Parameters.cpp Sub: Make surface_depth a parameter 2016-03-02 22:08:03 -08:00
Parameters.h Sub: Make surface_depth a parameter 2016-03-02 22:08:03 -08:00
Parameters.pde Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
perf_info.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
position_vector.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
precision_landing.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
radio.cpp Sub: Change gamepad controls for light brightness 2016-02-27 10:42:22 -08:00
README.md Sub: Change gamepad controls for light brightness 2016-02-27 10:42:22 -08:00
readme.txt Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
ReleaseNotes.txt Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
sensors.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
setup.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
Sub.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
Sub.h Sub: top and bottom detection working well 2016-03-02 22:08:02 -08:00
surface_bottom_detector.cpp Sub: Make surface_depth a parameter 2016-03-02 22:08:03 -08:00
switches.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
system.cpp Sub: Add surface and bottom detection capabilities 2016-03-02 22:06:43 -08:00
takeoff.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
test.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
tuning.cpp Sub: Remove heli support from sub. 2016-02-23 08:35:01 -08:00
UserCode.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
UserVariables.h Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
wscript Sub: Remove ADSB support 2016-02-23 08:35:01 -08:00

ArduSub Build Status Gitter

An ArduPilot-based project for remotely operated underwater vehicles.


Intro

The ArduSub project is a subsea vehicle control system designed primarily for ROVs and AUVs. It is based on the ArduCopter vehicle-type of the ArduPilot project.

The majority of code changes required for the ArduSub are held in the /ArduSub/ directory of this repository. Changes have also been made to a number of libraries:

  • AP_Baro: Added support for MS58XX pressure sensors for water depth measurement
  • AP_Motors: Added AP_Motors6DOF, AP_MotorsBlueROV6DOF, AP_MotorsVectoredROV classes
  • AP_RCMapper: Added "forward" and "strafe" input axes

Setup

Hardware

The ArduSub project currently supports the following hardware:

  • 3DR PixHawk Autopilot
  • Any reversible ESCs with PWM control and 1500 centerpoint (Blue Robotics Basic ESC and BlueESC)

Since this is based on the ArduPilot project and includes the ArduPilot Hardware Abstration Layer (HAL), it should also be able to run on a number of other autopilots including the following:

  • PixHawk variants (PXRacer, PX4V4)
  • Navio+, Navio2 from Emlid
  • Erle Brain 2 and PXFmini from Erle Robotics
  • BBBmini

The following autopilots are not supported:

  • APM 1 through APM 2.6+

Topside Control Software

The ArduSub project currently only supports topside control through QGroundControl using compatible joysticks and gamepad controllers. Please be sure to use the most recent daily build for bug fixes and improvements.

ROV Frame

The ArduSub project currently supports two frame types:

  • 6-DOF Thruster Configuration (for the BlueRobotics BlueROV)
  • Vectored Thruster Configuration with side-by-side vertical thrusters

The code must be compiled for the correct frame type using the commands below.

Compilation and Flashing

Please refer to the ArduPilot documentation for basic instructions on building the code.

To compile the ArduSub branch, first cd ArduSub to enter the directory and then use one of the following commands.

Command Function
make px4-v2-bluerov Compile for BlueROV thruster configuration
make px4-v2-vectored Compile for vectored thruster configuration

Add -upload to the end of the make target to upload. For example:

make px4-v2-vectored-upload

Initial Setup

  1. Compile and upload firmware to the autopilot
  2. Open QGroundControl
  3. Calibrate gamepad with throttle and yaw on right stick, pitch and roll on left stick.
    • Set to "full down is zero throttle"
  4. Calibrate radio using the joystick with the same inputs.
  5. Change parameters:
    • DISARM_DELAY to 0
    • ARMING_CHECK to Disabled
    • BRD_SAFETYENABLE to Disabled
    • AHRS_ORIENTATION to Roll90 (or applicable orientation)
    • ATC_ACCEL_Y_MAX to Disabled
    • EK_ALT_NOISE to 0.1
    • RATE_YAW_FILT_HZ to 30
  • PILOT_VELZ_MAX to 50 cm/s
  • PILOT_ACCEL_Z to 50 cm/s/s
  • POS_Z_P to 8.0 (above limit)
  • GND_PRIMARY to 2ndBaro
  1. Setup Power Tab
    • Analog Voltage and Current
    • 10000 mAh
    • Power Sensor: Other
    • Current pin: Pixhawk
    • Voltage pin: Pixhawk
    • Voltage multiplier: 9.174
    • Amps per volt: 14.70
  2. Flight Modes
    • Set all to stabilize
    • Set Flight Mode 6 to altHold (Learning mode)
  3. Set Up Camera Tilt (if desired)
    • Use camera tab to connect RC8 to Output Channel 7
    • Connect camera tilt servo or gimbal to Ch. 7
  4. Set up Lights
    • Use camera tab to connect RC9 to Output Channel 8
    • Set range to 1100-1900
    • Connect lights PWM signal to Ch. 8

Operation

The gamepad controls the ROV during operation. It has been tested with the Microsoft XBox controller and the Logitech F310. The following joysticks and buttons are used:

  • Left Stick: Forward and strafe input
  • Right Stick: Throttle and yaw input
  • Start Button: Arm vehicle
  • Back Button: Disarm vehicle
  • Y Button: Switch to althold (learning) mode
  • B Button: Switch to stabilize (manual) mode
  • Right Bumper: Increase light brightness
  • Left Bumper: Decrease light brightness
  • Buttonpad Up/Down Arrows: Tilt camera (if applicable and set up in QGC)
  • Buttonpad Left/Right Arrows: Increase/decrease roll trim (if IMU is not completely level)
  • Left Joystick Click: Reset camera tilt angle

Modes

In Stabilize (manual) mode, the ROV will attempt to remain level and will be easily controllable. Constant attention is needed to maintain depth.

In Althold (learning) mode, the ROV will stabilize and also hold its depth. Throttle input will cause the vehicle to ascend or descend and releasing the throttle will cause it to hold its current depth.

How To Get Involved

The ArduSub project is open source and we encourage participation and code contributions: guidelines for contributors to the ardupilot codebase.

Desired Enhancements and Bugs can be posted to the issues list.

License

Overview of license

Full Text