Také jsem se necelý rok zpátky rozhodl pro stavbu quadu totálně from scratch. Původně zamýšlený koncept byl vlastně podobný tomu tvému - tzn. chytrý autopilot a řízení, telemetrie a přenos obrazu přes WiFi. Po důkladném zvážování jsem ale nakonec od WiFi upustil.
Prvním důvodem je, že kdybych chtěl využít té výhody, že wifi je dostupná v každém mobilu a tabletu, tak narazím dost tvrdě s použitelným dosahem, protože k takovému zařízení si těžko bez zásahu připojím externí anténu. Druhý důvodem je, že wifi není moc vhodná na nějaké realtime řízení, kde se vyžaduje nízká a zaručená latence - nedovedu si například představit takové řízení v rate módu (tzn. přímé ovládání úhlové rychlosti ve všech třech osách) a tudíž akrobacii. Navíc do toho by se stejným kanálem přenášelo poměrně dost dat kvůli obrazu, což celou věc ještě zhoršuje.
Pak jsem ještě chvíli přemýšlel nad tím, že by se dala wifina brutálně znásilnit - obvzláště pod linuxem, kde jsou otevřené zdrojáky k driverům není problém donutit wifi dongle k tomu, aby vysílal do éteru co chci já a vůbec to přitom nemusí být 802.11 :-) Tím by se obešla celá 802.11 MAC vrstva, která přináší nemalou režii a celé syrové pásmo pro daný kanál bych měl ve své vlastní režii. Přecijen mi to pak ale přišlo až moc násilné.
Nakonec jsem se rozhodl pro XBee radiomodemy a myslím, že jsem udělal dobře. Spolehlivost je perfektní, latence zanedbatelná, dosah taky super (při pozemním testu mi fungoval spoj na 2,1km jen s těmi nejobyčejnějšími a nejmenšími pendreky. Navíc bez packetlossu. Část spoje vedla městem.
Co se týče živého přenosu videa, tím, že odpadla wifi a RaspberryPI-like počítač na quadkoptéře, byla volba jednoznačná - analogový přenos přes klasické modelářské vysílače v pásmu 5.8GHz a kamera GoPro, která zároveň kromě živého videovýstupu v PALu umí offline nahrávat ve FullHD. Má to své výhody, po krátkodobém rušení/výpadku se obraz okamžitě zase chytne, narozdíl od digitálního přenosu s kompresí, kde se čeká na další keyframe. Navíc latence prakticky nulová.
Na řízení motoru jsem použil hotové regulátory z HobbyKingu. Sice jsem koketoval s myšlenkou navrhnout a naprogramovat si svoje, ale vzhledem k tomu, za jak směšné ceny se dají koupit (byť kvality čínské a na HW se neskutečně katovaly kosty) a že pro ně existuje svobodný FW (google: simonk esc), upustil jsem od toho. I když je pravda, že ten simonův firmware jsem si už taky trochu ohackoval :-)
Hlavní řídící deska je komplet můj výtvor. Je osazená MCU STM32F103, senzory MPU-6050, LSM303DLHC a MS5611 - speciálně za ten jsem dal toho času neskutečný prachy, protože ho v té době měl jen jeden distributor a musel jsem jich vzít rovnou 5 kousku (čti: mám 4 volné, prodám :-) ). Holt co se týče senzorů, chtěl jsem mít to nejlepší, co bylo zrovna na trhu. SW je psaný klasicky v C a používám RTOS ChibiOS. Procesor bezproblémů stíhá honit regulační smyčku, ve které je cca 180 násobení single-precision float čísel na 500Hz a zbývá mu dost času na další méně náročné úlohy. Problém je spíše RAMka, což je způsobeno zvoleným konceptem kdy se používá hodně vláken a každé musí mít logicky svůj stack.
Na quadkoptéře je pak mimo desku ještě ultrazvukovej sonar, GPSka a power distribution board vlastního návrhu - kromě rozvodu tlustoproudu pro motory a měření proudu hallovým snímačem je na ní ještě spínaný zdroj na +3.3V a MOSFET na spínaní osvětlení.
Tu řídící desku hodlám v nejbližší době dost redesignovat. Procesor vyměním za STM32F4 (168MHz a FPU, halda RAM i FLASH). Ale hlavně chci mít modul GPSky a slot pro XBee přímo na desce. K tomu tam bude dost GPIO abych mohl vyvést hřebínky jak pro 10 serv/motorů, tak pro případné použití modelářského přijímače. Chci toho na tu desku narvat co nejvíc, protože nejhorší co může být je, když je všechno rozfrcané po modulech a pospojované haldou drátů jako teď, to moc na spolehlivosti nepřidá. K tomu se chci úplně vyhnout I2C sběrnici a všechny senzory připojit na SPI - důvodem je opět spolehlivost.
Na zemi to řídím malinkým notebookem, v USB připojen XBee modul přes adaptér a joystick Logitech Extreme 3D (umožňuje otáčet celou rukojetí a tím ovládat i yaw osu). Řídící program je multiplatformní a psaný v Qt. Umožňuje samotné řízení, telemetrii (umělý horizont, 3D náhled quadkoptéry, napětí na baterce, proud, souřadnice, výšku atd. atd.) , nastavování, zobrazování a vykreslování grafů prakticky čehokoliv (díky tomu jak to mám navržené není problém si nechat streamovat, zobrazovat a měnit téměř jakoukoliv vnitřní strukturu v řídícm FW, dost to zjednodušuje ladění).
Souačasný stav projektu je takový, že "ono to lítá" :-) Autopilot a fail-safe módy ještě hotové nejsou. Vrhnu se na to hned, jak dokreslím a osadím novou řídící desku.
Celkově to hodnotím tak, že je to běh na dlouho trať, ale užiješ si u toho hodně zábavy a hlavně - první start a úspěšný let něčeho, co jsi sám postavil a také naprogramoval (protože to je opravdu na tom celém asi 88% objemu veškeré práce) přináší neskutečně euforický pocit. Kdo nezažil ty nervy před prvním letem a následně nával emocí, když se stroj vznese a drží attitdude stabilní, nepochopí. Přeji Ti, abys ho zažil :-) A také hodně úspěchů ve stavbě!