I’m trying to build an ROV with my dad and I’ve decided to try and give it a much needed firmware upgrade. Until now, I’ve had a laptop in my control box taking controller inputs with a python script, and then sending those inputs to an arduino mega that does thruster mixing and gives motor commands to 7 BTS7960s, all being surface side in the control box. I had a raspberry pi 3 B+ lying around and got it running blueos, I’m wondering if there’s any way to get the pi to send pre-mixed motor commands to my arduino through Serial, without having to buy a flight controller, I don’t really care that it wouldn’t get gyro and pressure data because I’m trying to keep as much surface side as possible. Claude has told me that this is possible, but I have a general distrust in AI so I thought I’d ask here aswell. Is there any substance to this idea? I’ve seen that it should be with python scripts but I don’t know if not having any flight controller would change things. Some else along side this is that I do plan to run a cat-6 cable down the tether so that I could add just individual sensors on the ROV side, making the enclosure smaller and easier to deal with, so maybe if there’s any way to get the flight controller on the ROV side but the pi on the surface side I would buy one then, but if not than is there any way to get external IMUs or pressure sensors to talk to ardupilot or maybe have the arduino decode and send it the data? I know it’s a bit of an odd setup but I’m really trying to have something that can be very easily fixed, and that doesn’t have any potential leaking problems down the line, so I figured keeping as much as possible on the surface would make that easier, aswell as not having to invest in a good enclosure, even if my control box is a bit bulky.
Hi @ROVaddict567 -
Welcome to the forums!
Putting everything on the topside sounds quite challenging! While you may be able to vibe-code scripts that control ESCs directly, without a flight controller, you’ll be limited on the number of GPIO pins. The Navigator from Blue Robotics doesn’t actually have a microcontroller on it - it is just a breakout of peripherals for the Pi, that let it control more output channels and easily connect sensors to the I2C and serial ports.
IMU data inherently has to be measured onboard the vehicle, but sending that data a long distance is challenging. An Arduino could be setup to communicate with the Pi, which could then send telemetry long distances via ethernet!
As for your goal of sending motor commands from the Pi to the Arduino, this sounds possible, albeit not with the stock ArduSub firmware. You could try modifying the firmware to use the Mega as a new “board” definition, communicating with it via USB. Or, it may be interesting to try and run ArduSub on the Mega itself! Either of these approaches will take significant software development, so if you’re looking for minimal hassle a Navigator + Pi 4 or old Pixhawk (these can be quite affordable) is your best bet.
Hey! Thanks for the reply, there some very helpful info here.
As for the mega and its pins, you are definetly right on them being limited, though I can just barely get all the needed motor drivers their required signals, as this is kind of version 2 of the ROV, the first version had some problems with stability so I had to get some new cables for the tether, and that’s also why I’m switching to a 6 DOF design with 6 thrusters. I’m interested in the Idea of using the arduino as a board or somehow having it run ardusub, as I did not know something like this was possible, I’m very new to the software side of ROVs, though I have plenty of experience with the design aspects of it through the MATE competition, so I’m not really sure how ardusub works or runs. If there is a way to make it run on the arduino itself that would be great. As for just going with the pi 4 and pixhawk, I’m really trying to avoid buy any extra hardware for this project, and I don’t want to have to mess around with trying to get a good watertight enclosure to fit that stuff on, aswell my motor drivers take up a lot of space to the point where I’d have to look into a custom solution for the enclosure. Ideally I would just have the pi send the arduino motor commands via serial or something, and have as much handled by ardusub/blueos as I can get away with, to make troubleshooting and development faster. I’m open to any ideas someone may have.
Thanks!