I’m currently planning to build a wireless, remote-controlled underwater ROV, and I’m hoping someone here can guide me through the process, especially on the electronic components I might still need.
Here’s my current plan:
I’m thinking of placing a floating buoy on the surface with a receiver module to ensure stable wireless communication with the remote transmitter on land.
The ROV will operate underwater and communicate through this buoy, but I’m unsure which electronic modules (power module, remote controller, communication interface, etc.) are best suited for this type of setup.
So far, here’s what I already have:
Pixhawk (unsure of the exact model – open to recommendations)
Raspberry Pi 3 Model B
8 thrusters
FS-i6 Transceiver
I have a few questions:
What other modules/components should I add to complete the setup?
Is QGroundControl compatible with this configuration?
Any advice on long-range wireless communication setups for ROVs?
I’d really appreciate any insights, suggestions, or examples from your own projects. Thanks in advance!
This can sometimes be impractical, but it’s definitely a neat application!
I’m aware that Henry Wurzburg from ArduPilot is in the process of making a vehicle like this, and just recently got a pull request merged that makes radio style control actually possible (previously there were critical functionalities missing from ArduSub for RC, like arming and changing flight modes). You may wish to sync up with him in the ArduPilot forums or Discord group.
At a minimum you’ll need some kind of power supply (e.g. a battery, and/or power from a solar panel on the buoy that goes through a tether to your vehicle), and
it would generally be recommended to have a power monitor (especially if you have a battery).
Beyond that, you’ll need speed controllers (ESCs) to convert the motor commands from the flight controller board to the thrusters, and
underwater vehicles are typically more useful if they have a depth sensor, for both situational awareness and depth-holding behaviour
Our Bar30 is a common choice, although there is ongoing work to enable using our Bar02 sensor instead, for vehicles that are staying within relatively shallow depths
A camera may be advisable, although I’m not sure how the video stream would be transferred live, so it may just be useful for recordings that you look at after your dives.
Lights can make a camera able to see more effectively (assuming they’re not too bright, in particle-filled water), and can also make it easier to see where the vehicle is from the surface
If you want to run autonomous missions then you’d need some kind of positioning sensor
There are likely other relevant considerations, but it’s not a usecase we’ve tried, so you may end up discovering some challenges on your own.
Possibly, although that’s hard to say given ArduSub vehicles have until recently only supported MAVLink telemetry, with standard joystick control typically using the MANUAL_CONTROL MAVLink message (so that may be all QGC is set up for - I’m not sure).
Considerations would be similar for this as for a boat - radio signal will be worse when the water is choppy, and the antenna is short or not particularly sensitive. For your control radio it may be helpful to use a directional antenna, as high as practical, that’s kept pointed towards the buoy, but given buoys can generally rotate you’ll likely need an omnidirectional antenna installed there.
Hi @itsJayMendoza -
Chiming in to recommend you update to a more modern autopilot and Raspberry Pi - the Pi 3B can struggle a bit with BlueOS, and generally using a Navigator autopilot with ArduSub and BlueOS unlocks things like Lua scripts - it’s generally a huge update over the Pi3/Pixhawk approach. The BlueROV2 updated from this way back in June of 2022!
Thank you so much for your responses, suggestions, and support so far. I truly appreciate the time and help you’ve all shared.
That said, I’m still quite new to this and honestly a bit overwhelmed. I’m not entirely sure which path to take, so I’d really appreciate any guidance on the simplest or most beginner-friendly setup to help me get started with my wireless underwater ROV project.
Here are a few specific questions I have:
Raspberry Pi – What model would you recommend for this kind of project?
Autopilot – Is Pixhawk a good option? If so, which model would be best suited? Or are there other beginner-friendly alternatives?
ESCs – What model of ESCs should I use for my 8 thrusters?
Software/Firmware – Should I use ArduSub or something like BlueOS? Which one is easier to work with for someone new?
Transceiver – I currently have an FS-i6. Is it compatible, and is it enough for reliable communication?
Ground Control Software – Will I need tools like QGroundControl or similar? If so, which one do you recommend?
Learning Resources – Are there any good documentation sites, guides, or beginner-friendly tutorials that you’d recommend?
Ease of Setup – Ideally, I’m looking for a solution that’s as plug-and-play as possible, or something that requires minimal coding/setup.
Thank you again for your patience and help. I’m excited to learn and get this project off the ground with your support!
I’d recommend a Pi4, but Pi5 support is coming very soon. For a basic ROV, a Pi4 will have more than enough computing power, and offers serial ports and support for lua scripts (when used with a Navigator.)
A pixhawk may be the cheapest option, but sourcing one that is composed of reliable hardware can be difficult! The most beginner friendly version that BlueOS and ArduSub support out of the box, and that will receive the most support from Blue Robotics (as we developed and sell it) would be the Navigator.
The important thing to look for in an ESC is that is bidirectional so the thruster can run in both directions. This is the case for the Blue Robotics Basic ESC! This is also true for some ESCs meant for RC cars, and some support flashing firmware modifications to support bidirectional operation, but this means additional work…
You can think of BlueOS like Windows or MacOS, and ArduSub a program that runs within it. This could be ArduRover, for the case of surface vessels, or ArduCopter for aerial drones! In general, BlueOS is designed to be easy for all skill levels - read more [here].(BlueOS Documentation)
As Eliot mentioned, support for RC transmitters in ArduSub is very new and experimental, and generally I would recommend against it. If you have an xbox or other bluetooth game controller, this can be paired to your computer and used to control the system. It would require that instead of a low frequency RF link, a WiFi link to your buoy and the ROV, however this is fairly straightforward and also gets you enough bandwidth to run a camera through (at least at low resolution / short range.) The BlueBoat Mikrotik radios could be well suited for this - or any WiFi router for your buoy, with your laptop acting as a client.
QGround Control is the original solution that Blue Robotics developed support for, for over a year now we have been pushing users to Cockpit, the GCS we developed in-house for maximum customizability!
The BlueROV2 setup and software setup guides, as well as the documentation already linked for BlueOS (that includes Cockpit documentation, found in the top menu) should be all you need to get going!
No coding is required to setup an ArduSub / BlueOS ROV!
Thank you for your straightforward comments and suggestions — I truly appreciate your help. I just have a few follow-up questions regarding the BlueBoat MikroTik radios:
Since the MikroTik radios are installed on the buoy, how do they connect to the internet?
Do they connect via hotspot to a main Wi-Fi router onshore?
Or do they have a SIM card slot for mobile data connectivity?
I’ve been reviewing the BlueROV2 setup and noticed it uses the Fathom-X Tether Interface Board.
Will I also need this board for my setup?
Are there any alternative modules, especially if I’m planning to use the Navigator Flight Controller?
Do you happen to have a diagram or example setup showing how to connect the BlueBoat MikroTik radios to the tether board and the Navigator Flight Controller?
I couldn’t find this configuration in the BlueROV2 assembly guide, and I’m having a bit of trouble visualizing the complete wiring and integration.
Once again, thank you so much for your guidance, time, and patience!
The Mikrotik radios don’t connect to the internet. One would act as a Wireless AP (the BaseStation radio) and the other would act as a WiFi client (on your buoy, like the BlueBoat.) This is like running a tether from your computer to your surface buoy through the air. No SIM card is available, and 4G would not likely provide sufficient bandwidth to operate the ROV (video stream is heavy!)
The Fathom-X tether interface is used to run TCP/IP data over the tether using only a single twisted pair. Since Fathom tether does not meet Cat5 spec, this is necessary for lengths greater than ~30-50 meters. You would need one of these boards in your topside buoy, connected to the WiFi radio, and it would link to a corresponding board in your ROV at the other end of the tether (subsea side.) Other modules are available.
We do not have a diagram or example, as we haven’t done this before! Generally, your surface buoy would need to provide power to the WiFi radio (see technical details for input voltage range, on the product page.) You’d connect the Fathom-X to power as well, and run an ethernet cable from it to the WiFi radio. The ROV tether would connect to the green screw terminals on the Fathom-X. From there, you should have network access to the Raspberry Pi in your ROV running BlueOS, and be able to operate the vehicle from there!
Thank you once again for your continued support — I truly appreciate it.
I just wanted to confirm if I’ve understood everything correctly. I’ve attached a diagram that I created based on your explanation to help me visualize the setup. Could you kindly review it and let me know if everything is correct?
Hi @itsJayMendoza -
That diagram is correct! The tether cable that goes from your laptop to the WiFi radio is a simple ethernet connection, and you’ll need a POE injector for a Mikrotik radio there - or whatever power supply is used by your WiFi Radio.
You’ll also need to power your WiFi radio on the Buoy, and the tether cable that goes from it to the ROV should be using a Fathom-X tether interface on both ends of the connection to send data over a single twisted pair. You’d likely want a dedicated battery in the Buoy side for powering things, rather than waste ROV battery energy going down the long tether to your float…
Hello everyone, I really appreciate all the valuable insights and input!
For this ROV project, the goal is to control the vehicle remotely over Starlink internet, effectively creating an IoT-enabled ROV. The idea is to allow the operator to control the ROV from anywhere in the world, as long as they have an internet connection, rather than being near the shore or on-site.
My question is:
Is this technically feasible with BlueOS, Cockpit, and ArduSub firmware?
Specifically, does the current software and hardware support remote operation over the internet, with live camera streaming and full control of the ROV?
Hi @itsJayMendoza -
Yes, this is possible, and has already been accomplished (at least with the BlueBoat.)
You’ll definitely face bandwidth limitations that may affect the video stream performance from the vehicle, and the latency of control, but with ZeroTier you’ll be up and running in no time!
So with Cockpit, the live camera feed can still be viewed remotely using ZeroTier, right? Also, is the BlueBoat’s MikroTik WiFi radio still necessary for this setup, or would a different module work better? Could I even use a regular WiFi router for this purpose?
Hi @itsJayMendoza -
Yes, Cockpit should be able to receive the video stream over the ZeroTier connection.
The MikroTik Wifi radio is not required - you would simply put the Starlink Mini on the buoy and be all set! If putting the Starlink on shore, the Mikrotik on the buoy could still be used, and configured as a client to connect to the AP it produces. The Mikrotik unit is a “regular” WiFi device, not sure what you’re asking with your last question…