Ardupilot2/ArduSub
2016-02-03 21:19:26 -08:00
..
adsb.cpp Sub: Fix ADSB file for compilation. 2016-02-02 13:34:19 -08:00
AP_State.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -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 Change user config file for default options. Eventually these will be moved into the main config file as Sub defaults. 2016-01-08 21:49:55 -08:00
ArduSub.cpp Sub: Sub changes to match newest Copter changes 2016-02-03 15:05:23 -08:00
arming_checks.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
Attitude.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -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: Sub changes to match newest Copter changes 2016-02-03 15:05:23 -08:00
commands.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
compassmot.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
compat.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
config_channels.h Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
config.h Some more tweaks for water pressure. Change throttle_zero to mid stick. 2016-01-20 22:29:51 -05:00
control_acro.cpp Sub: Enabled control modes to operate at zero throttle 2016-01-18 22:08:55 -08:00
control_althold.cpp Some more tweaks for water pressure. Change throttle_zero to mid stick. 2016-01-20 22:29:51 -05:00
control_auto.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
control_autotune.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
control_brake.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
control_circle.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -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: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
control_land.cpp Update land mode to move up instead of down. 2016-01-23 00:57:40 -05:00
control_loiter.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
control_poshold.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
control_rov.cpp Sub: Enabled control modes to operate at zero throttle 2016-01-18 22:08:55 -08:00
control_rtl.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -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: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
defines.h Added frame type BLUEROV to configure use with the new AP_MotorsBlueROV class. 2016-01-08 21:49:55 -08:00
ekf_check.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
esc_calibration.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
events.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
failsafe.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
fence.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
flight_mode.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
GCS_Mavlink.cpp Sub: Sub changes to match newest Copter changes 2016-02-03 15:05:23 -08:00
heli_control_acro.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
heli_control_stabilize.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
heli.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
inertia.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
land_detector.cpp Sub: Set EK2_ALT_NOISE on startup according to baro sensors detected. 2016-01-23 22:20:07 -05: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: Sub changes to match newest Copter changes 2016-02-03 15:05:23 -08:00
make.inc Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
Makefile Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
Makefile.waf Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -08:00
motor_test.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
motors.cpp Sub: Set EK2_ALT_NOISE on startup according to baro sensors detected. 2016-01-23 22:20:07 -05:00
navigation.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
Parameters.cpp Sub: Complete motor reversing parameters. 2016-01-16 12:32:13 -08:00
Parameters.h Changed to ArduCopter as the base code. 2016-01-08 21:49:55 -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: Minor bug fix in radio. 2016-02-03 21:19:26 -08:00
README.md Sub: Updated README for setup and intro 2016-01-22 23:05:46 -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: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
Sub.h Sub: Sub changes to match newest Copter changes 2016-02-03 15:05:23 -08:00
switches.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
system.cpp Sub: Update camera mount for changes. 2016-01-25 20:18:31 -08:00
takeoff.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
test.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -08:00
tuning.cpp Sub: Refactor "Copter" to "Sub". 2016-01-14 11:30:56 -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 waf: Update Sub script to match others. 2016-01-18 23:07:46 -08:00

ArduSub

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 and AP_MotorsBlueROV 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
  • 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, defined in AP_MotorsBlueROV.cpp.

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
    • EK2_ALT_NOISE to 0.1
  6. 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
  7. Setup Pressure Sensor
    • Change primary baro to 2ndBaro
  8. Flight Modes
    • Set all to stabilize
    • Set last flight mode to altHold (Learning mode)
  9. Set Up Camera Tilt (if desired)
    • Use camera tab to connect RC8 to Output Channel 8
    • Connect camera tilt servo or gimbal 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
  • Buttonpad Up/Down Arrows: Tilt camera (if applicable and set up in QGC)

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