This is an old revision of the document!
The aim of this project is to construct Quadcopter.
We have three functioning quadcopters in brmlab (niekt0, pasky, ruza). Also, zviratko has several quadcopters of different design and helps us a lot.
Currently, we are learning the basic control of the quadcopters and investigating computer control options.
AX-2210N - brushless, AC (3-phase star) motor, 2-3S (7-12V), “150W”
TODO: measure dimensions and screw hole positions
We have these goals:
Manually controlled flight. The default control board is HobbyKing Multi-Rotor Control Board V2.1, offering only limited stabilization, but it suffices for this, especially if we add accelerometers.
Basic autopilot functionality - automated takeoff, go to points, land. We can split this to separate subgoals in order of priority:
Extended autopilot functionality - some cooperation with other subjects and objects etc. - too early to sketch details.
Swarm functionality - multiple quadcopters cooperating and coordinating their movement and task execution. This is the main goal for some of us. The most important implication is that price matters - we need to keep the price for electronics on manageable scale in order to be able to build a larger swarm. An alternative is using microquadcopters or coordination of normal and micro quadcopters.
Ardupilot-mega / Arducopter and family
The most promising platform appears to be ArduPilot-Mega (APM). It offers a sophisticated autopilot software ArduCopter (v2.4 ATM) and an ATMega-based control board ArduPilot. The most current board APM 2.0 contains two microcontrollers: ATMega32U as PPM encoder, failsafe control (not applicable to multirotors) and USB interface and ATMega2560 as main Autopilot chip, and sensor array: MPU-6000 gyro+acc IMU (no offloading ATM), MS5611 barometer, HMC5843 magnetometer. Optional minishield with magnetometer or GPS or SD card slot. Priced around 200USD.
The most interesting variant of the hardware is MegaPirateNG. It is the same functionality as APM and uses the same ArduCopter software, but with a more open and modular design than ArduPilot, using a separate uC board (for example Flyduino - Arduino Mega with smaller footprint and RC-standard form factor - 50x50mm) and sensor board (for example AllInOne IMU or Drotek IMU). The cumulative cost is similar (around 200USD), but you can upgrade both boards separately. Disadvantage is more space used, no failsafe chip (not applicable for multirotors) and probably more hassle in general. MegapirateNG is done by a party of russian hackers “Syberian” “Sir Alex” and a Megapirate-ready hardware called “Blackvortex” is sold by csg_and_rc_extreme (ebay, based in Latvia). Usual sensor combination in APM clones is IDG3200 gyroscope, BMA180 accelerometer, HMC5883 magnetometer, BMP085 or MS5611 barometer and uBlox or Mediatek GPS (both serial-NMEA and I2C available).
(News: Much cheaper sensor board)
In the first iterations, the autopilot functionality can reside fully on the ATMega. Later, we will want to add some ARM board (should have LPC11U14 handy but something with hardware floating point like Raspberry Pi would be better) and offload any computationally intensive tasks there.
Still not decided whether ArduPilot or MegaPirateNG is the way to go. Big issue with this plan is the price; we will not be able to build a swarm with so pricey electronics.
A de-facto standard in RC UAV controllers, uses GCS (Ground Control Station) or phone connected through wireless serial or TCP/UDP to control unmanned operations - waypoint navigation, mission planning. Implementations and GCS features differ wildly for the moment. Ardupilot-mega has its' own GCS which works for AC2 or MegapirateNG software out of the box.
Could be used for communication between stock Mavlink-ready autopilot (APM, openpilot, uavp-ng…) and our ARM-based brain.
RC sets are usually one-way, at best with telemetry for sensors but without true two-way communication. We still have to keep them for manual control override. (We MUST be able to take over at any time!)
We need to get some kind of MEMS protocol capable wireless module (i.e. essentially wireless serial). TODO investigate, not included with Arducopter by default, most likely will use XBee. About extra 40-50 USD (for a whole pair).
Note: XBee is AFAIK very expensive, more like $70 for one piece, $140 for a pair, take a look at APC220 - $40 for a pair, but limited bandwidth (19200bps) and range (1km tops, not tested), delivery and integrity not guaranteed by protocol
Camera streaming will need to be solved separately, and is perhaps a rather ad-hoc wish so no need to make big design decisions to allow this now, I guess.
Standard RC FPV gear is analog (on a digital carrier) with S-Video in/out - digital kits are very expensive. For ad-hoc use, UHF transceiver and a television set/card or an Android phone streaming over wifi/3G could do
3D gyro - provides counter-rotation capabilities, basic reaction to outside force and an accurate control by RC, essential. Usually IDG-3200.
3D accelerometer - provides autoleveling, basic space positioning, optional for operation. ADXL345, BMA180, BMA080…
Magnetometer - functions like compass, provides heading hold, very sensitive to RF noise (ESCs, TX…). HMC5883L.
Barometer - mid-precision, terrain independent height estimate. BMP085 or MS5611 (up to 10cm accuracy). Vulnerable to prop wash and light!
Sonar - high-precision, low-range (~5m), terrain dependent height estimate, must be added separately, not reliable over water surfaces, high grass.
GPS - absolute position, anything with NMEA serial will do. 25USD for a bare chip (FMP04).
Optical flow sensor - absolute position hold, under developement. ADNS3080 is $40 from DIYDrones.
Camera - RC cameras are inexpensive, wireless transmitter is a problem. Cheap chinese stuff can work. Ask jam about cheap IP (wifi enabled) cams from ebay (lt. 1000 CZK). Should be a different band from RC equipment (not 2.4Ghz) - but will work in close range fine. Any setup must be tested together using RC Range Check function!!!
MiniWii / Arduino / HK control board + TomSuch budget sensors + Android phone
MiniWii is ATMega328 board with gyros and accelerometer on-board. Not so cheap.
An alternative is regular Arduino plus very cheap sensors acquired by TomSuch. (The question is whether they have sufficient precision, we must find out. .)
Another alternative is reusing our current HK board for the control platform, but it is frustrating to extend it since it is missing full pinout.
This board cannot do autopilot and servicing too many other sensors. It can be an interesting option only when combined with cheap sonars and magnetometer+GPS from a budget Android phone that will also serve as the autopilot platform.
We would have to do significant software development work for this - probably combining and porting pieces of MultiWii and ArduPilot codebases.
TODO: Detailed budget.
We considered and currently did not embrace:
MultiWii: Limited capabilities, focus on piloting, not UAV, works on AT168p and up. Minimal setup - Aduino Pro Mini + Nintendo WMP+ gyroscope (Nintendo Nunchack Accelerometer optional). Support for compass, barometer. Preliminary GPS support (Return to landing only). Terrible codebase ;)
UAVP-NG: Non-commercial, proprietary, high-end, fairly expensive. No personal experience. ATM not UAV-ready, slow to no progress.
OpenPilot: constant backorder keeping “RTF
seekers” away. Has ARM on board but unclear if any boards can be currently ordered. ATM not UAV-ready
Aeroquad: proprietary connection shield, opensource, mature, many features but not UAV-ready. No personal experience.