There’s been a lot of activity in a number of threads about Quadcopters and building one on the Fez platform.
See http://www.tinyclr.com/forum/2/4291/#/3/ for the latest one going.
This is my attempt to focus the discussion in a specific direction by defining an architecture for such a flying machine and to discuss each aspect of the architecture individually and to conclusion.
The idea is to take the discussion happening here (and on the other threads) and combine it into a wiki where someone can then build a flying Fez.
So to start things off, attached is a stab at a loosely coupled architecture for Fluzi.
The design goals behind this architecture are:
- Loose coupling - so you can slot your own blocks into the system.
- Technology agnostic - so you can use a hardware Razor IMU or a Mongoose AHRS or your own rolled in RLP. It shouldn’t matter.
- Service orientation and Seperation of concerns - or just the idea that each block does its own thing, autonomously, but in a standard way.
- Simple. Most of all it must be simple (but still work!)
After some digging around other UAV architectures, I think these building blocks should cover what is needed (see diagram):
- CPU: Does all the main controlling and logic.
- IMU: Measures intertia (pitch, roll, yaw)
- ARU: Adds intelligence to resolve inertial measurements to solve attitude and heading.
- APU: Adds absolute positioning information - usually a GPS, compass and altimeter.
- ICU: Consolidates various sensor inputs I can’t think about right now but need to cater for.
- IQU: Queues work for the system on a scheduled and predictable basis. This is basically the very accurate task scheduler for the system.
- MCU: Controls motion - e.g. motors, servos etc.
- FRU: Records flight and debugging information.
- PMU: Makes sure the batteries are full and the copter is humming nicely.
- DPU: Makes sure the poo doesn’t hit the propellers by invoking Plan B in case of failure.
- CLU: Handles comms with the outside world over whatever medium.
- GLU: Glues it all together.
- GCS: Deals with the dangerous carbon-based object twiddling the sticks on the ground.
So go for it! Let me hear your ideas around things like interfaces, protocols, abstraction, timing etc.