I have been following this site for a while now, I guess it is time to post something myself.
Above is a picture of my latest scratch-built quadcopter running an STM32 ARM processor board with home-brew software. This is my second quad, on the first one (you can sort of see it in my profile picture) I used a home-mode, dual Atmega 328 board.
So far, the quad features the following setup:
- Aluminium frame "Home-Depot" style
- Alpha 370 size motors (HobbyPartz)
- Salvaged 6dof sensor board from a Walkera XUFO 5 (4?)
- 2-axis magnetometer (I know, 3 axes would make my life a little easier)
- Maxbotix sonar range finder for low-altitude hold
- Mediatek LS20031 GPS
- Modified ADNS2610 optical mouse sensor for low-altitude position-hold
- Custom software, using ChibiOS RT OS (http://chibios.sourceforge.net)
- 72Mhz RC gear (Futaba TX, generic RX)
- XBee telemetry downlink
- Onboard data logging to SD/MMC card
- Oh, yes: taped on keychain-camera for onboard video ;-)
Here is picture of the (rather untidy) electronics setup (the Xbee is normally mounted on the inside of the canopy, the mouse sensor and ultrasound sensor are underneath the copter for obvious reasons):
The software features working so far are:
- Quaternion based attitude representation - tried Kalman filters at first, switched to a more DCM-like approach later
- Attitude-hold and aerobatic flight modes (can be switched in flight)
- GPS position hold (activated by channel 6 switch on TX)
- OR alternatively at the moment: Optical flow position hold via a downward-facing, modified optical mouse sensor with custom optics (NOTE: both GPS position hold and mouse sensor position hold work, but only on a good day - definitely requires more tweaking/PID tuning)
- Data logging to SD card (not very reliable atm - I do not really use this much since I have telemetry via Xbee)
- "Ground station software" for data logging and displaying the state of the quad in various graphical ways
The software is written pretty much in straight C, making use of ChibiOS' multithreading. The ground software is a collection of Perl/Tk scripts - all my development happens on Linux.
Below is a video of the quad in "mouse sensor" position hold mode in my driveway - apologies for the terrible video, I will try and shoot a better one soon...
If somebody finds any of this useful or interesting, I am glad to share some more details...