I’ve been kicking around the idea of a raspberry pi compute module based autopilot board for a bit and I’d appreciate any feedback or thoughts you all might have on the idea. This would basically be a drop-in alternative to the current raspberry pi sbc + navigator autopilot hat. The design I’m working on will be open sourced as well, so if you have similar, but slightly different needs, the kicad design files will be freely available to tweak to your needs. I’m going through all this effort, so the more who can benefit the better.
If you’re not familiar, this is a compute module. Basically a tiny raspberry pi you can plug into a custom carrier: https://www.raspberrypi.com/products/compute-module-5/?variant=cm5-104032
Why am I so interested in a compute module based autopilot? The raspberry pi single board computer is a great little device, but as I’ve gone down the rabbit hole of creating my own systems, I’ve been struggling with a few core limitations. Specifically:
- Power: The raspberry pi SBC has always required 5V input. Depending on the platform, this can be a bit constraining as much of the marine world uses 12-24V power. Not only that, but the pi 5 in particular is a power hungry device, using a niche 5A usb PD profile. On the other hand, with a custom compute module-based carrier, I can build in a wide input regulator system and, if powered by >12V, resistive losses/heat between the BEC & FC will be reduced over half due to the drop in current needed for maximum performance.
- Form Factor: The desktop-grade connectors on the raspberry pi can be helpful when working at a desk, but they really constrain the overall design of the board. This is why most flight controllers swap USB/ethernet interfaces for JST-GH or similar compact connectors. Additionally, the raspberry pi foundation frequently shifts their connectors around slightly between generations. This makes upgrading an existing platform a little more complex as your USB & ethernet may need to swap internally for the new footprint. By using a compute module, the port mappings (aside from the WiFi antenna potentially) will stay the same as long as they keep using the current form factor.
- 2in Diameter Watertight Enclosure Compatibility: this one may be specific to me. I’ve wanted a narrower pi that can fit the smaller enclosures for a few random projects such as a scuba tank mounted ctd.
In short, I’m looking to build a more streamlined autopilot/data logging system while maintaining the software strengths of the BlueOS ecosystem. My current USV project uses a cube pilot and, while the hardware is robust for robotics projects & well supported, it lacks the flexibility of a full linux environment. A properly designed carrier board could go quite a ways to bridging that gap.
If you’re still reading and are interested, I’ve included a preliminary layout study to give a rough idea of what this would look like. While I can’t guarantee that every comment/suggestion makes it into this version, I do appreciate any thoughts you all have and it’ll be interesting to see what other folks have on their flight computer wishlist. Feel free to comment in this thread and you can also check out the design repo (with more info on potential specs) here: compactPi/README.md at main · loganrf/compactPi · GitHub
This isn’t my full time job, so the timeline is pretty fluid. That being said, I tentatively plan to finalize the initial design and get it prototyped through macrofab later this year (spring/summer). Once these prototypes are in-house, that’ll open up a second opportunity to help. If you’ve got an interesting application (or are willing to use your bluerov/boat as a testbed), I’d be happy to send out some of the spare prototypes for free in exchange for additional feedback/software help. After that, I may explore selling complete boards through the reef program or crowdsupply, but regardless, the design files will be available to build or modify your own!
Key Challenges:
- Routing: I’m going to try to keep it to a 4 layer stackup (maximum compatibility with turnkey board houses like macrofab, jlpcb, etc), but this is shaping up to be a pretty dense board, so 6 layers may be needed to get this out in a reasonable time/with reasonable performance.
- Software: I’m gratuitously copying the BR navigator board sensor selection & connections to minimize the amount of software modification necessary, but I expect the translation to the CM5/carrier board will still cause some issues.
- Mechanical Compatibility: I still need to do a CAD export & see how this layout would fit in the current bluerov2 design. The proposed layout is 105mm long (about 20mm longer than a pi) and it’d require a custom some adaptions to the current bluerov harnessing.
Thanks in advance!
