At first, we need to choose which platform to build the drone on. As for the software platform it’s pretty clear: we want to use Linux! Why not bare-metal or a proprietary RTOS? Because the former has too limited capabilities making programming harder and the latter 1) is not free 2) is not portable 3) has less support from the community. Yes, “pure” Linux is not a hard real-time system, but for our purposes compiling the kernel with CONFIG_PREEMPT should be enough. If it is not, we can apply CONFIG_PREEMPT_RT patch. If it’s still not enough, we’ll try Xenomai.
Regarding the hardware, it’s a little bit harder. ARM core (any of them) seems to be a good choice in terms of power consumption and performance. But which ARM-based SoC to choose? Given size, extensibility and price constraints, the most evident options are BeagleBone Black (BBB) and Raspberri Pi 2. Wandboard also looks pretty good, but it’s a little bigger, more expensive and has way less (10) GPIO pins.
While Raspberry Pi 2 has more powerful CPU (Broadcom BCM2836 Cortex-A7 Quad Core @ 900MHz vs BeagleBone’s AM335x 1GHz ARM Cortex-A8) and more RAM (1Gb vs 512Mb), it has only 1 PWM pin vs 8 on BBB, and has a number of features that we don’t need, e.g. full-size HDMI, stereo audio and composite video output. Also, BBB is an open source hardware which is nice So it was decided to give it a go.
Also we’ll need an accelerometer, a gyroscope (in the image on the right side you can see how the seller described it):
a ground sensor:
a GPS module:
and, at some later stage, a camera (or two: for collision avoidance and for video capture).
After assembling and programming all these, it’s supposed to be mounted on top of this frame: