Home        Store        Docs        Blog

ArduSub or DIY control system without computer

Hi all,

I am designing a DIY ROV based off the BlueROV2 design and could use some input on the control system. For some background, I want to make an ROV setup capable of being taken on short hikes to bodies of water and taken on small boats. In the water (salt and fresh < 20 m), I want to be able to dive to the bottom to explore and search and retrieve small items.

My original intentions for control were to use analog joysticks and an arduino on the surface to send commands through rs-485 to an onboard arduino which would mix and send pwm values to each thruster. Analog video would be sent through a twisted pair of wires to eventually my phone. Ideally with this setup, the surface components could be packaged in something small and portable, maybe similar to the DJI mavic controller, with my phone as the video monitor. The control code would be done by me.

However, recently I have discovered ArduSub and am drawn by the control capabilities. I come with experience from the multirotor world and know how well ArduCopter performs. I also have experience with Pixhawk and Mission Planner (similar to QGroundControl). Unfortunately, after doing much research, I do not think I can make my surface setup of analog joysticks and arduino work with ArduAub. Correct me if wrong, but it appears there is currently no plug n play way to avoid using a computer on the surface, as the pixhawk can only receive input via MavLink. This is undesirable for me, as I would like to keep the whole setup as portable as possible, and am thinking of using the ROV is situations that would be risky for a laptop (from a kayak, light rain, etc).

I am confident I can make both options work, but I know if I write my own code the control will not be nearly as good (no stabilization, only simple movements). But then again I do not know if I need more than simple motor control for general flying around and exploring. If I go with ArduSub, I will have to plan for more items to pack and setup on the surface. So I would like your opinions on each option, and any advice you may have from your experiences.

Thank you!


Hello Sam,

You should be able to send MANUAL_CONTROL messages using the arduino. We only have a Python sample code, but Arduino should work fine too.

You could also try to run QGC using a tablet, but that will also take some work (mostly on joystick support and networking setup)

If you are willing to troubleshoot QGC and maybe do some coding for it, I would follow the tablet route, as that gives you FHD video

If you want to keep things simpler, I suggest you follow the Arduino route. I am not sure of how simpler that will be, though. You may need to handle additional messages to make sure everything is ok, such as HEARTBEAT and STATUS_TEXT.