.. | ||
adsb.cpp | ||
AP_State.cpp | ||
APM_Config_mavlink_hil.h | ||
APM_Config.h | ||
ArduSub.cpp | ||
arming_checks.cpp | ||
Attitude.cpp | ||
baro_ground_effect.cpp | ||
capabilities.cpp | ||
commands_logic.cpp | ||
commands.cpp | ||
compassmot.cpp | ||
compat.cpp | ||
config_channels.h | ||
config.h | ||
control_acro.cpp | ||
control_althold.cpp | ||
control_auto.cpp | ||
control_autotune.cpp | ||
control_brake.cpp | ||
control_circle.cpp | ||
control_drift.cpp | ||
control_flip.cpp | ||
control_guided.cpp | ||
control_land.cpp | ||
control_loiter.cpp | ||
control_poshold.cpp | ||
control_rov.cpp | ||
control_rtl.cpp | ||
control_sport.cpp | ||
control_stabilize.cpp | ||
crash_check.cpp | ||
defines.h | ||
ekf_check.cpp | ||
esc_calibration.cpp | ||
events.cpp | ||
failsafe.cpp | ||
fence.cpp | ||
flight_mode.cpp | ||
GCS_Mavlink.cpp | ||
heli_control_acro.cpp | ||
heli_control_stabilize.cpp | ||
heli.cpp | ||
inertia.cpp | ||
land_detector.cpp | ||
landing_gear.cpp | ||
leds.cpp | ||
Log.cpp | ||
make.inc | ||
Makefile | ||
Makefile.waf | ||
motor_test.cpp | ||
motors.cpp | ||
navigation.cpp | ||
Parameters.cpp | ||
Parameters.h | ||
Parameters.pde | ||
perf_info.cpp | ||
position_vector.cpp | ||
precision_landing.cpp | ||
radio.cpp | ||
README.md | ||
readme.txt | ||
ReleaseNotes.txt | ||
sensors.cpp | ||
setup.cpp | ||
Sub.cpp | ||
Sub.h | ||
switches.cpp | ||
system.cpp | ||
takeoff.cpp | ||
test.cpp | ||
tuning.cpp | ||
UserCode.cpp | ||
UserVariables.h | ||
wscript |
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
- Compile and upload firmware to the autopilot
- Open QGroundControl
- Calibrate gamepad with throttle and yaw on right stick, pitch and roll on left stick.
- Set to "full down is zero throttle"
- Calibrate radio using the joystick with the same inputs.
- 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
- 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
- Setup Pressure Sensor
- Change primary baro to 2ndBaro
- Flight Modes
- Set all to stabilize
- Set last flight mode to altHold (Learning mode)
- 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.