OBAL - A Simple Linux-based Raspberry-Pi Ardupilot FCB

This article describes a new Linux-based board for Ardupilot called Open-Board Architecture for Linux (OBAL). It is designed to be simple to build by professionals as well as hobbyists.

OBAL acts as a simple board with necessary sensors that can be upgraded easily. The board is built over Raspberry Pi. It can use Raspberry Pi 2,3,4 & zero.

Current Linux-based Ardupilot flight controllers that run on Raspberry Pi usually consist of a shield with built-in sensors on it. That cannot be removed or replaced easily. However OBAL is more like a test or development board, where you can remove sensors and replace sensors easily. Also sensors on the board are breakouts that you can solder easily.

OBAL does not use any closed source code, or specialized drivers. It is all open and can be compiled from scratch. Also schematic and board are all published and available to access.

OBAL can be the start step for understanding Ardupilot Linux-based boards and for building more complex boards.

The vision is to provide that:

  • Is a simple board that is easy to solder and assembled at home.
  • Can be customized and upgraded easily.
  • Acts as a developing and/or test platform to enable developers, engineer & hobbyist who are interested in understanding Ardupilot hardware/software.
  • Complete Open-Source Hardware/Software and works on native Ardupilot code with no extra drivers.

Technical Specification

The board is simple and contains only necessary sensors with no redundant components. However extra SPI & I2C sockets are available to extend board capability and connect more sensors.

The board also has a safety switch that prevents the motors from turning on. The switch is connected directly to output and is not connected logically to Ardupilot so it is an external safety mechanism.

The board enabled users to make it at home with simple soldering techniques. It uses breakouts that are famous and available worldwide.

Only two SMD resistors are required and it is not that hard to solder.

Board Schematic is very simple and you can clone and update easily . Also the code is at this branch and is submitted to Ardupilot master code in this PR.

More about the board is in the following manual

Below are some videos for flying the board.

video 1
video 2

OBAL name is inspired by OPAL Stone where there are many colors and shapes. OBAL can be customized in many ways. I hope people can make updates, upgrades share the learning experience and have fun with Autopilot.


Great to see this. I hope it’s OK I moved a picture to the top to make the blog prettier when viewed from ardupilot.org.

1 Like

Have you built with standard kernel or a RT Preempt like I did a few years ago ?

1 Like

I didnt use a RT kernel on RPI-Z… And it works fine… Sure your post was an inspiration for me.

1 Like

The issue with these type of boards is their dependency on RCInput_RPI, It had a bug that made the system randomly crashed. This bug was solved in this PR a year ago.

1 Like

BTW I tried 10DOF – GY-91 4-in-1 MPU-9250 and BMP280 Multi-Sensor Module to access baro & MPU on the same board. but for unclear reason the SPI access of Baro with MOU didnt work well with me. I guess the key is the IMU_INT that you use in your configuration. I am still investigating into this point.

If I remember well this unit was only working correctly in I2C mode

I could make it work on SPI but if and only if I disable the baro. otherwise the baro affect the MPU readings and starts to report dropped readings.

I tested the board on RPI-4 in this video
My next step is to switch to Linux-RT for now I am running it using normal RPI-OS.
I will also look into make one of the core dedicated to ardupilot … if someone can help here he/she is welcome.

Another way for installing OBAL board.

I used Female pins like this one. The result is that you all RPI pins exposed. You can connect and modify as you wish.

1 Like

I think this project is really cool!

I think there’s a lot of complementarity with Stephen’s Rpanion Server project. ping @stephendade

By the way, the default OBAL RPI image could be a version of Rpanion Server… (flight controller + linux + networking management)

As @ppoirier pointed, an RT Kernel in the future would really be interesting. I would like to have more confidence that the Ardupilot code won’t lose space for scripts/programs in the OS would be interesting. If you wish, you could test some flights while running something like sysbench or geekbench.

I’ve had problems using RPi Zero as companion computers when it was some interpreted code… Today I prefer to use RPi 4 to be able to use pyhton and pymavlink at will.

I really enjoyed it, and I hope to build a unit when I have time.

1 Like

RT: I didnt have luck when I run RT. It crashed every time I used it !!!

Non-RT-RPI-4: It flies well when running on isolated cpu
check this AP-Hal_Linux: CPU Affinity by HefnySco · Pull Request #18684 · ArduPilot/ardupilot · GitHub
and I liked this solution. there is nothing special, no complex setup or special compiling. only very few parameter to set.

RPI-Zero: with normal raspberry image on Linux RPI-Zero it flew well also but 1 out of +15 I had an issue -not sure if it was because of the OS or not-.

The only issue I have now is that if I installed a camera on RPI-4 it does affect the readings of baro on I2C and causes some spikes. but anyway I dont believe that FCB and other devices such as cameras should share the same board. This is what companion boards for.

1 Like

I have www.andruav.com … I will release the linux version soon… it is pretty powerful.

1 Like

This is a video that describes how to setup OBAL board on RPI.

This is a playlist of all technical video related to OBAL.

I hope you find them useful and please execuse my English :frowning:

Hi, can I install and compile Ardupilot completely on Raspberry pi Zero W without using a second computer?
I’m using windows 10 and don’t really have much programming skills.

I followed the instructions from here: https://github.com/HefnySco/OBAL/blob/main/SourceCode.md
I get an error like this while running the command : “make obal”

What should I do next?

And I not really understand this
“For Raspberry-Zero you can download its cross-tool from here”

Does this mean that I will have to download “Raspberry Pi GCC Toolchains Files” to the memory card of the Raspberry Pi Zero W?

Sorry for asking too many questions, I’m just a newbie and don’t have any experience with programming, but I’m very curious to learn about Ardupilot and OBAL Broad

Do you have a group chat on Discord, Telegram or something … I really want to know more and can learn from you faster

No module named 'future'
You need to install this python module.
pip3 install future

For RPI-Zero you need to install another compiler.
then to make the board you need.

./waf clean
./waf configure --toolchain=/opt/cross-pi-gcc/bin/arm-linux-gnueabihf --board obal
./waf copter

the above path “/opt/cross-pi-gcc/bin/arm-linux-gnueabihf” is for Linux and you need to replace it with your Window’s path of the compiler.

Another option is that you compile the code directly on your RPI-Zero.

Finally I can compile it and send it to you :slight_smile:

Is it possible to use sbus or ibus with the raspberry? And when yes, how? Thx

Please follow this video 05 - OBAL - Tech How to use PPM instead of PWM for Ardupilot on Raspberry-PI - YouTube
RCInput_RPI driver should support pwm, ppm & sbus.