Getting started with drones
paulstamatiou.com
paulstamatiou.com
To build "fully programmable," self-contained drones in a more open manner, I've started with an off-the-shelf flight control system (in my case, an ArduPilot knockoff) and then attached an Android phone as payload, wired in to provide some control input via UART. This way the off-the-shelf flight control system can handle the hard real-time PID loops without worry, and the Linux side can run a conventional kernel and userspace with whatever algorithms I need to run, providing me with softer timing requirements.
So far I've had good luck using ArduCopter, an older Nexus phone, and OpenCV via the NDK to implement a basic "follow a shape" quadcopter. My goal is to build a simple "follow me" functionality for recording cool car and sports videos.
I thought about something like the latter, but I had my ArduCopter setup working really well before I started the project.