GOAL
Historically, ArduSub has been targeted for higher-end, commercial underwater ROVs tehered to a land/boat based GCS. Recently, ArduSub has been more fully documented in ArduPilot’s WIKI (ArduPilot Sub — Sub documentation) in order to expand its access to more users, especially hobbyists. In addition, RC and FPV capability has been added to the firmware to facilitate hobbyist use.
To that end, this project attempts to develop a simple, inexpensive DIY underwater ROV reference design that an existing ArduPilot plane/copter/rover RC FPV user could build with the following goals:
- Low Cost
- Materials to be easily obtained from hardware and online stores.
- RC control with telemetry
- FPV OSD operation
- Utilize electronics a hobbyist might have on hand as much as possible
- Maximum depth 30feet to minimize waterproofing issues
General Design
The structure has two sections: a propulsion frame for the thrusters and an electronics section for the battery,autopilot, ESCs, and FPV camera. The intent is to allow future variations on the electronics section. Material is common PVC piping with 1/2inch pipe used for the propulsion frame, and a 2-inch PVC pipe for the electronics section.
The simplest configuration for bi-directional thrusters is used: Simple3ROV, with two horizontal thrusters for forward/back-right/left yaw, and one for the vertical axis (depth control). Roll and Pitch stability is obtained by having the keel-like ballast to put CG below the center of buoyancy, and making its fore/aft placement adjustable.
Since un-tethered control and video were desired, a tethered RF buoy is used for the radio control link and 5.8GHz video link back to the pilot.
Parts List for Frame, Bouy, and Enclosure Structure
- 1/2" PVC Pipe
- 2’" x 1ft PVC Pipe for Electronics Enclosure
- 3/4" x 1ft for buoy electronics tube
- 2" Mechanical Test Plug
- 10mm PVC pipe for tether and esc wiring exits (Amazon.com: MECCANIXITY PVC Rigid Tube Round Pipe Tubing Hardware Tubing 8mm ID 10mm OD 8" Length White High Impact for Water Pipe, Crafts : Industrial & Scientific)
- 2" end cap (test cap is thinner than normal cap and flat)
- 4 - 4 way 1/2" PVC fittings for the thruster center arm, velcro strap mounts, and buoy float cross
- 3 - 3 way 1/2" PVC fittings for horizontal thruster mounts and vertical thruster arm
- 3/4" x 3/4: x 1/2" coupler for sliding balast/trim tube
- 5 - 1/2" end caps for ballast tube, and buoy float
- 2- 3/4" end caps for buoy electronics tube
- Two Velcro straps to hold the electronics enclosure to the propulsion frame
- 12 - 3mm x 5mm hexhead bolts for thruster attachments and ballast slip tube
- PVC cement
- RTV silicon cement for waterproofing ESC and tether exits
- “pool noodle” float
- action cam underwater case to house FPV camera (more on that later)
Electronics
- ArduPilot compatible autopilot. I chose one with the following features for future expansion and to get battery telemetry easily:
- H7 based to enable future LUA scripting if I desire
- Integrated current sensor
- Integrated analog OSD for FPV
- SD card for logging for long durations.
- 3 Underwater thrusters: Amazon.com: DNYSYSJ Brushless Motor Underwater Thruster Motor,12V-24V 4 Blades Ship Model Propeller for Underwater Robot RC Bait Boat (Positive) : Toys & Games
- 3 small 12A reversing brushless ESCs. Any 3D BLHeli or AM32 ESC should be dynamically reversible. I used these:Amazon.com: ZMR Bidirectional Brushless 12A 2-4S ESC with 1A 5V UBEC Output for RC Vehicle and Ship Models : Toys & Games
- Small RC receiver. I used an ELRS to get telemetry on my radio.
- Small 5.8Ghz VTX. Should be capable of 25mw setting to reduce heat in the buoy tube. Consider the antenna mount placement. Since I used 3/4" PVC for my buoy, I luckily had a thin enough one to fit (more on that later)
- 30ft thin CAT6 ethernet cable for buoy tether: Amazon.com: Lysymixs Cat6a Slim Ethernet Patch Cable 50ft Outdoor & Indoor, Flexible 10G Cat6 Internet Network Cable Waterproof LLDPE UV Jacket, Pure Copper Cat 6 Ethernet Cable for POE, Black : Electronics
Component Photos
Build Notes
Nothing is very critical. However, making sure that the horizontal thrusters are equidistant from the frame center is necessary to avoid yaw with forward/back thrust and the vertical thruster should be just that, vertical. Adequate sealing of the wiring exits in the Electronics tube to prevent leaks is obviously important (ie dont spare the RTV!)
Propulsion Frame
- Mount horizontal thrusters on 3 way tee by drilling mounting holes through both sides and enlarging one side to let the tightening tool pass. Add a bolt (self-threaded in PVC) to allow the tee to rotate to adjust trim but be secure with light tightening.
- Similarly, with the vertical thruster mounted directly on the vertical PVC riser
- I used bullet connectors on the thruster leads to allow easy change of the Electronics Tube in the future, but this is problematic for saltwater use. Better to solder and insulate the connections for that use.
- I used lead shot in a forward compartment of the ballast tube (3d printed a little plug that I slid in), but anything like fishing or tire weights could be used. The ballast can be attached in any manner; water dynamic shape is not a consideration since this moves slowly in the water. Since the Electronics Tube is air-filled, the structure is normally buoyant and needs ballast. You want it to be neutral to just a little bit buoyant.
- I used small sections of 10mm PVC to exit the motor wires and the tether; these were waterproofed with generous amounts of RTV silicone glue.
Electronics Tube
I used a 3S1P Li-ion battery. I mounted it on the end of a piece of wood,
followed by the autopilot, which slides into the tube, allowing access to the battery connector to power up and down the system, and to the autopilot USB for GCS connection to make setup changes.
2" tubing makes for a fairly tight fit for the ESCs, autopilot, and battery, but it worked. Next, I am going to make a 3" tube since I will be adding peripheral sensors next, and it will allow more room. 3" removable compression end plugs are also available.
I initially just used the removable plug and glued just a PVC end test cap without the FPV case for initial experiments.
Wiring exits were via 30mm long 10mm PVC tubes to allow the generous application of RTV for waterproofing.
I then added an unused action cam underwater case i had ( available on Amazon for ~$13 if you don’t have one already)for the analog FPV camera by sanding the PVC and the case lightly and using a copious amount of E6000 to glue it to the tube. Then I drilled a hole for the camera wire and hot-glued in the camera.
I glued some short 1/2" PVC segments to it to prevent rotation on the propulsion frame since the velcro straps alone still allow rotation. Rotation is not an issue in the water, but when carrying it to the water.
The Tether
The thin CAT-6 cable has 4 twisted pairs. I used one for ELRS RC TX and RX, one for RC power (4.5V pad/gnd), one pair shorted for video, and one pair for 9V/Gnd VTX power.
Buoy
The surface buoy design is not critical, and many variations are possible. All that is required is to terminate the tether and attach the RC receiver and Video transmitter to the tether in a waterproof fashion. I did not glue the top cap or waterproof it, since the design is “un-tippable” and it will allow easy future access. I tie-wrapped the 3/4" buoy tube to the flotation cross frame. The cap with the tether exit was loaded with RTV before gluing as well as externally.
Wiring diagram
Parameter setup
The Wiki section on First Time Setup is a good reference for more details.
- Assuming you have flashed the “latest” version of Sub on the autopilot, next
- Calibrate the autopilot accelerometers.
- Disable Compass since we currently don’t use GPS or compass (next version of the frame will) COMPASS_ENABLE = 0. Compass calibration is unnecessary.
- Enable the RC, RC_PROTOCOLS = 1, and reboot with radio active. It should be detected
- Set RCMAP_YAW to the TX stick channel to control yaw, the RCMAP_THROTTLE to the channel which will control depth up/down, and RCMAP_FORWARD to the channel controlling forward/back. I used the ail stick for yaw, the pitch stick for forward/back, and the throttle for stick up/down, and it feels natural to me.
- Calibrate the RC. Note that the GCS sliders will move according to normal channel mapping since it does not take into account changes to the RCMAP.
- Set the FRAME_CONFIG to SimpleROV-3
- Assign the appropriate SERVOx_FUNCTION to MOTOR!,2,3 to match your connection
- Set up the FLTMODE_CH to match your flight mode selection channel in your RC TX.
- Setup at least the MANUAL and SURFACE flight modes using the FLTMODEx parameters, like any other ArduPilot vehicle.
- I suggest using an RC channel switch for the ARM/DISARM Auxillary function since the idle for throttle is center, not full low (which is full down on the vertical thruster)
- Set up the OSD screen and options as you would for any other vehicle according you your taste. I just use the mode, RSSI/LQ, battery status as being the only meaningful items as this point.
- Other params:
- FS_THR_ENABLE 2 (SURFACE on RC failsafe)
- RC_OPTIONS 11040 (Check idle throttle,passthru CRSF telem, suppress rate messages,use LQ for RSSI, use ELRS baud rates)
- RSSI_TYPE 3 (RSSI in RC stream)