I thought I’d start a thread to document my progress and struggles in building a custom flight controller for my ROV. Unfortunately due to cost constraints and living in Australia I cant really justify the cost of the navigator flight controller so I decided to try giving it a shot to design/build my own. I’ve used the navigator schematics and integrated more easily available parts in my design.
So far I’ve cloned the ardupilot repo and modified all the navigator components in the code (I’ll be adding a new board section once its all working) to change the main sensors used and got it to build the custom firmware successful. I’ve also drawn a schematic heavily influenced by the navigator as well but am currently waiting on parts to arrive so I can build it, then start testing and troubleshooting any issues I encounter (I expect there to be a lot).
My main concern at the moment is how to integrate the controller with blueOS as I’m not too sure what the process will be to add a new controller. Will it be as simple as plugging the controller in and loading the custom firmware into blueOS or will I need to make an addition to blueOS core in the “flight controller detector”?
Any advice is greatly appreciated and I’ll continue to update this thread as I make progress if anyone else wishes to follow in my footsteps. I’ll also be creating a Github repo for all the schematics, designs and firmware modifications I make once I get some extra time.
Due to the required channel volumes, our flight controller is a stack of boards. We have a board that handles the communications and on it is a chip with a unique identifier/address. The detect.py looks for this identifier. If you look in the detect.py script, look for “argonot”, that’s how our board is identified.
We’re busy with the firmware. We’ve managed to fork the BlueROV2 and a Rover’s firmware that has us starting. We have to integrate stepper motor control that I believe would integrate with the firmware.
We’re using the same sensors as is on the Navigator, however, only some reflect—a work in progress. @williangalvani I believe is the person to support the firmware side.
Thankfully my “flight controller” isn’t that complicated and has most of the same functions as the navigator but using a different IMU (MPU9250). The main reason I didn’t go with the Navigator is cost, the whole budget for my project is around $1000aud, but I have plenty of time to spend on it and am willing to trial and error until it works.
I saw this in the source code and forked the repo to attempt to add my board’s identifiers but it failed to build after I made the changes. I ran out of time to try and diagnose the issue but the quick look I did didn’t seem to have any helpful pointers.