Tuesday 11 August 2015

Getting started

I've decided to start a hobby project: build a quadcopter from scratch. It'll take a long time to complete as I only have limited time and resources to dedicate to this thanks to my work and kid :-) I'm targeting a year to complete the project, maybe more.

I have a background in software engineering, but I've been doing program management for 7 years... so my technical skills are a bit rusty. One of my friends - an electrical engineer - offered to help on the electronics side.

The development approach will pretty much be ad-hoc, as I know nothing about flight dynamics, PIDs, control systems, etc. A lot of iterative ramping up will be required.

Here's a summary of top-of-mind requirements / objectives for this project:

  1. QuadCopter must be fully autonomous and AI-controlled.
  2. Communication of altitude, waypoints, commands, etc. will be done through a Windows 10 universal app running on any MSFT platform. Transmission can be WiFi, BT4.0, GSM, etc. but no traditional RC control.
  3. Software will be written in C/C++ (because why not :-))
  4. Software will run on a Raspberry Pi 2
  5. QuadCopter frame will be hand built instead of using retail components
  6. As often as possible, electronics will be built from the ground up using base components instead of using pre-assembled boards and extensions (like Adafruit, shields, etc.)
The Raspberry Pi v2 has a quad core 900MHz CPU so it should be adequate to do quasi-realtime processing compared to v1. But it has only 1 PWM output, so I may need to rely on external ICs to drive the motors. I could have gone with Arduino as many people do (or even Intel Edison - CPU + MUC on the same package !) but I wanted a challenge, didn't I ? :-)

Going with C/C++ may also be a challenge in terms of interfacing with the hardware layer. There seem to be way more libraries and examples in Python... Hopefully choosing C/C++ will be its own reward by achieving better performance instead of ease of development.

I'll try to provide details and vulgarize as many steps as possible in the hope that this blog can help other n00bs like me ramp up.



No comments: