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ě!
Ta sestava a koncepce spíše vychází z mé počáteční úvahy a nebylo jí potřeba v průběhu stavby a vývoje moc měnit. Co se týče materiálu ke studiu, bylo mě velkou inspirací a pomocí práce Sebastiana Madgwicka co se týče fůze senzorů. Až na tuhle výjimku jsem se v tom spíše poplácal sám - když něco dělám, nerad nahlížím do jiných projektů - za prvé mám pak tendence je kopírovat, což mi kazí tu radost, že na něco mohu přijít sám a za druhé mě frustruje pocit marnosti, že podobnou věc už někdo udělal :-)
Jinak jsem ještě nezmínil mechanickou konstrukci - s tou mi pomáhá kamarád, protože já, ač schopen připájet QFN pouzdro 4x4mm, jakmile dojde na vrtačku, pilku, šroubky, klíče a podobné věci, jsem neuvěřitelně levej :-) Ale není to nic světoborného - hliníkové jekly 15x15x1,5 a středová část také z hliníku dělaná na CNC frézce.
Až se trošku přeženu přes ještě stále dost bouřlivou vlnu vývoje, tak se o celé stavbě určitě někde podrobněji rozepíšu a zdrojáky dám asi někam na github.
Jestli Vás teď zajímá něco konkrétního, ptejte se.
Slusna prace. Mam na cosi podobneho veci doma pod posteli v krabici a je to ve fazi "todo", v podstate podobne koncepce s tim ze bych chtel BLDC na ctyri motory a veskere zakladni fyzicke a komunikacni zalezitosti nacpat do jedne atmegy a prenaset to wifilinkem kamery jako seriovy kanal ke kamere a ovladani a inteligenci resit az v netbooku. Zajimalo by me jake tam mas typy motorku, kapacitu a typ baterie a nosnost celeho aparatku.
Ta atmega bude muset řešit minimálně stabilizaci - aby to nějak slušně fungovalo, je potřeba mít regulační smyčku alespoň 100Hz. To vzdáleně neuděláš. Ale pokud tou inteligencí v netbooku myslíš už nějakého autopilota starajícího se o translaci a výšku, příapdně rozhraní pro manuální řízení, tak si to představit dovedu, byť mám k wifině jisté výhrady, které jsem už popsal v příspěvku výše.
Na quadu mám baterku LiPo 3S 5000mAh, motory DT750 a vrtule APC SF 11x4.7 - tahle kombinace má tah 1,1kg na motor. Celé to pak váží cca 2kg.
tak, cetl jsem to pozorne. Myslel jsem wifi kameru se seriovym kanalem nebo vseobecne bezdratovou kameru se seriovym kanalem k prenosu telemetrie a rizeni. Leccos tam jde dohnat antenou. Ono tech kamer s RS232 nebo 485 na vystupu moc neni takze uvidime v dobe realizace pro co se rozhodnu. Nechci se ale vrtat v nejakym stacku a protokolech a vychazim z toho ze jedno zarizeni se vsim bude mit mensi spotrebu nez dve komunikacni+kamera a nebude se to ruzne tlouct. Jinak, mam nakoupeny 4 motory RAY CD3536/08 viz. napr. http://www.kostkamodelcentrum.cz/obchod.aspx?kategorie=100&polozka=1632&stranka=0&polozek=288 coz jsou silnejsi motory nez ty tvoje, slo mi o nosnost aby to uneslo tak dve az tri kila zateze. Pocitam ze tak kilo a neco bude mit samotna konstrukce, tah na motor pro 3D akrobaty je 900g, ale ty maji jen jeden motor a tihu baterek a letadla v podstate zhruba stejnou, plusminus takze tohle bude mit vetsi pomer watt/hmotnost protoze na cca stejnou zatez budou 4 motory. Jak dlouho ti to na ty akumulatory vydrzi letet v beznem rezimu, tj. presun a bodu A do mista B a kolik to zere kdyz to visi na miste?
Muzu se zeptat, co Te vedlo k nakupu techto motoru? Koukal jsem na ne taky, libila se mi cena a to, ze ma u sebe regulator (COMBO). Ale tady mi to kolegove-modelari sepsuli, ze mam radeji volit regulator s vetsim proudem nez max. proud motoru. Maji s tim spatne zkusenosti. Pak taky psuli na RAY regulatory obecne. (pozn. mozna, ze nadavaji na vse...). Nevis jak je to s tim 'preprogramovanim'? Predpokladam, ze se mysli jen zmena parametru.
Bral jsem jen jeden regulator, chci to cele nabastlit na jednu desku s ridici elektronikou i vlastnimi regulatory. Prece jen cca 4x300 za regulator je 1200 ktere muzu na desku nabastlit lip a za cca 400. Navodu jak udelat regulator BLDC motoru je pomerne dost. Motory jsem bral s ohledem na pozadovanou nosnost cca 2-3kg uzitecne nosnosti. Jestli to je dobra volba, nebo jsem vedle se ukaze az v praxi.
Původní rozpočet byl podobný, jako měl autor článků. Ale nějak se to zvrtlo :-) Hlavně proto, že jsem si nechával dělat desky a součástky kupoval jednotlivě tak po různu.Řekl bych, že v tom už bude přes 16k. Přestal jsem to radši počítat, čím více času nad tím trávím, tím více mi připadají ty finanční investice bezvýznamné :-)
Rozhodl jsem se ze si tez postavim podobny letajici stroj --- ale chtel bych mu dat kridlo (kolmo na rovinu vrtuli) takze po startu s vrtulemi vodorvne by se cely stroj pretocil a dal pouzival kridlo. Tim by mohl na jedno nabiti vydrzet dele ve vzduchu.
Takze barometricky sensor by se mi hodil. Kdyztak se mi ozvete s detaily sem:
klusacek at atrey . karlin . mff . cuni . cz Asi -- zalezi na cene -- bych vzal rovnou 2.
Je to jen holy sensor, nebo je uz pripajen na nejake desce (pro snadnejsi montaz)?
Jeste dotaz -- tu regulaci delate pomoci PID regulatoru, nebo nejak sofistikovaneji?
V kazdem pripade je Vase konstrukce je primo monumentalni --- klobouk dolu. Budu rad kdyz se k ni aspon trochu priblizim....
Zajímavý nápad s tím křídlem :-) docela by mě zajímalo, jestli to je realizovatelné.
Regulace je PID, resp. je implementovaná jako PID, ale v praxi se mi ukázala jako plně dostačující PI regulace. Těch regulátorů je tam na stabilizaci orientace celkem 6. Pro každou osu 2 řazené za sebou. Jeden reguluje úhlovou rychlost, jeho výstup jde na motory, jeho vstupem jsou data z gyroskopu. Druhý má jako vstup regulační odchylku polohy a jeho výstupem je úhlová rychlost pro ten první. Nic převratného. Spíš je zajímavější sloučení senzorů (gyro+acc+mag), aby bylo vůbec z čeho počítat tu regulační odchylku. Zde jsem částečně vycházel z práce Seba Madgwicka.
Nabídku na baro pošlu privátně.
Diky za ten odkaz. Zatim jsem to jen tak prolistoval a vidim, ze reprezentuje orientaci v kvaternionech --- to je rozumne a delam to tak taky. Nejdriv chci ale dokoncit sve rovnice a pak teprv si to prectu . Jinak by to nebyla takova zabava.
Jen se chci zeptat --- co udela to jeho reseni, kdyz nahle vypadne signal nektereho ze sensoru? Pozna to a pouzije aspon ty ostatni, nebo fuzuje stale vsechny, vcetne evidentne spatnych hodnot ktere lezou z porouchaneho sensoru?
U toho křídla bych měl trochu pochybnosti, zda to poletí.
Pokud máte 4 motory dost daleko od sebe - tak budou muset běžet nějak symetricky alespoň 2 - tj. křídlo bych vedl tak, aby 2 motory byly na křídle, 1 pod a 1 nad. Jinak by se musel moment kompenzovat nějakým "ocasem".
Možná bude jednodušší tam přidat 5. motor pro let v režimu s křídlem, a potom by se mi nejvíce líbila sestava, kdy 4 motory jsou zapuštěny do křídla a 5. kolmo na křídlo :-) Uřídit ale nějak automaticky takovou sestavu nemusí být úplně snadné, protože křídlo do toho bude přidávat svůj vztlak.
Puvodne jsem si to predstavoval jak pisete -- 2 motory v kridle a 1 pod a druhy nad. Ale posledni dobou si rikam, ze by mozna uplne stacily ty 2 v kridle. Kdyz budou pracovat protibezne tak se vykompenzuje moment, zmenou vykonu motoru to muzu stabilizovat v ose kolme na kridlo (v tom okamziku ale neni vykompenzovany moment, ale muzu ho dorovnavat kridelky na konci kridla, protoze motory na ne foukaji). V ose spojujici motor1 a motor2 by se to pak dorovnavalo kridelky --- asi by to ani nebylo moc narocne, protoze teziste bude pod rovinou vrtuli.
Prijde mi to takhle jednodussi (a hlavne levnejsi) nez tam davat 5 motoru.
Svisle by to pak letalo jen pri manevrovani uvnitr budov, startu a pristani. Jeste se musi domyslet jak tomu udelat podvozek nebo `nozicky' aby to po vypnuti motoru po pristani zustalo stat.
Ale bude to potrebovat 2 kamery -- jedna se bude divat vpred (pred trup -- pro vodorovny let) a druha kolmo na trup --- pro svisly let.