Z akcelerometru v zadnym pripade clovek nedostane rychlost, jak se tvrdi v clanku. Rychlost by se dala urcit prubeznymi vypocty (numerickou integraci meniciho se vektoru zrychleni - po zapocteni rotaci urcenych gyrem), ale to je prakticky "dead reckoning" s narustajici chybou.
Serial je celkove zajimavy, sem zvedavy, jak se autor popasuje se stabilizaci a reakcemi na ovladani - v podstate jde o tvorbu fly-by-wire systemu. Tak hodne stesti, chci videt tu mrsku ve vzduchu! :)
Tady si dovolim nesouhlasit, protoze ziskavani rychlosti a take drahy integraci dat z akcelerometru je velice bezny postup, pouzivany v realnem zivote. "Chyba" je zavisla od vhodneho stanoveni pocatecnich podminek, ovsem kdyz zacinam "v klidu" (rychlost a vzdalenost v case 0 je taky 0), neni zadnej duvod aby chyba narustala.
Numericka integrace je samozrejme zatizena nakou odchylkou, jenze jeji "smer" je nahodny, tudiz pri dostatcne dlouhem mericim intervalu (a dostatecne kratkem integracnim intervalu) spis statisticky klesa.
Pravdu máte tak trochu oba.
- Opravdu se to v reálném světě používá, ale
- opravdu je to učebnicový příklad "dead reckoning".
Počáteční podmínky jsou sice důležité, ale nevyřeší systematickou chybu nepřesnosti měření zrychlení (a jeho elektrického zpracování).
Záleží na aplikaci, jak precizně si s tím rozhodnete vyhrát a jak budete mít celý systém proměřen v různých podmínkách (může docela záležet na teplotě) a jak budete ve zpracování dynamicky potlačovat ty nepřesnosti.
Pokud má být získaná rychlost/poloha opravdu důležitá, tak se na akcelerometry rozhodně nespoléhá a doplní se to jiným systémem - např. GPS nebo inerciální navigace založená na gyroskopech. Respektive takto: dobré a drahé inerciální navigace obsahují i akcelerometry i gyroskopy.
Kdepak, dokonce ani v případě zcela náhodné chyby nelze přesnost udržet: http://en.wikipedia.org/wiki/Random_walk
Těch důvodů proč narůstá je mnoho. Stačí pohled do datasheetu jakéhokoli MEMS akcelerometru (změna zero g offsetu, gain, nelinearity, atd.).
MPU-6050 neobsahuje magnetometr takže chybí část informace k určení orientace v prostoru - raději bych zvolil MPU9150. Pak ale přibude problém kalibrace magnetometru.
Pokud chce autor integrovat GPS pro inerciální navigaci, čeká jej ještě hodně práce. A pokud nemá zkušenosti se zpracováním sigálů (a Kalmanovým filtrem wiki), ať rovnou zkusí nějaké hotové řešení. Už jen z důvodu bezpečnosti :).
Dokonce i Kalmanuv filtr predpoklada, ze chyba ma normalni rozdeleni.
PS: jinak doporucuju
Kdyby jen rychlost.. dokonce i poloha! :-) Samozřejmě nepřímo a v kombinaci s dalším čidlem. Sám používám akcelerometr + senzor tlaku na přesné měření výšky. Stačí to, co se změřilo akcelerometrem prohnat dvojí integrací a sloučit to se senzorem tlaku komplementárním filtrem (dolní propust na talkové čidlo, horní na akcelerometr), když chce být někdo víc hardcore místo komplementárního filtru na to poštve Kalmana. Chodí to hezky i s tím kompl. filtrem +-1cm. Samozřejmě nemusí jít jen o výšku, jde to zkombinovat podobným způsobem i s GPSkou, na to se teprve chystám.
K autorovi článku: Koukám, že někdo rozchodil DMP na MPU6050, to když jsem začínal programovat, tak to ještě nebylo. Předpokládám, že to je nějaký reverz engineering, protože pochybuju, že by k tomu Invensense pustil nějakou dokumentaci, když se k tomu neměl už tenkrát. Nevíš jak je to s tím externím magnetometrem přes slave I2C rozhraní? Rozchodil to někdo? Funguje to jen s nějakými?
Samozrejme :)
Na co sem narazel v puvodnim prispevku je, ze ve clanku je to uvedeno, jakoby k vycteni rychlosti doslo primo z akcelerometru. Coz je samozrejme blbost.
Nicmene vybavuji si, ze autor do toho casem hodla zakomponovat i GPS a podobny pristup kombinovani dat by byl urcite velice uzitecny.
Integrovaný teploměr určitě neslouží k měření pokojové teploty, ale měří teplotu substrátu čipu. Je dost možné, že sám čip jeho údaje používá k potlačení teplotní nestability (především gyra). Nebo může být použit ke korekcím ze strany uživatele.
Pokud by offset gyra nebyl průbežně korigován např. fúzováním s daty akcelerometru, tak se při létání v prostředí s velkými teplotními rozdíly (třeba v zimě) může offset změnit natolik, že quadcopter přestane být postupně ovladatelný. Pomocí v tomto případě může být právě korekce offsetu z údaje o teplotě substrátu.
Souhlasím, korekce offsetu bude asi hlavním využitím čidla. Mám ale vyzkoušené, že ta teplota se téměř neliší od teploty PCB. Ten čip topí minimálně a to málo tepla co vyprodukuje se zřejmě vytopí do mědi na desce. MS5611 i LSM303DLHC mají také teplotní čidla a všechny 3 se v jeden okamžik shodují na desetinu stupně..
Jsem potreboval spolehlive konektory na vysoky proud, co vydrzi 54 amper trvale bez rizika pozaru kdyz to bezi bez dohledu
Inspiorval jsem se temito clanky nasel jsem konektory co se tam pouzivaji melo to max. asi 30 amper coz mi bylo k nicemu tak jsem to vyresil vetsimi svorkovnicemi a vhodne dimenzovanymi tlustymi draty :)
tohle je odber male heliny s listy 500mm https://picasaweb.google.com/100461371072346770933/Jlog2#5679701006572814258
jeden modelar ma na goblinovi (700mm) spickove odbery k 10kW, coz je cca 200A, to uz je masakr.
Porad premyslim, proc a k cemu tam vlastne bude to Raspberry. Prece by stacil jednoduchy 4 kanalovy prijimac. Mozna i 3 kanalovy a dalsi AVR-ko. Dyt to je spousta elektroniky zbytecne a bude to hlavne hodne tezke. Tak trochu kanon na vrabce :)
Arduino by slo taky vyhodit a dat tam jen malou desticku s jednim Atmega328 a do ni zapajet modul s gyrem. Zbytecny polosnak a spousta konektoru.
Jak dlouho se to pak udrzi ve vzduchu? Lipolka max. 3000mAh, vice to neumese .... tipuju tak max. 10 minut s odrenyma usima.
Ale fandim, budu sledovat.
Podobné projekty ( alespoň pro mě ) jsou úžasné v tom že člověka nejen zabaví, ale zároveň naučí něco nového. Pokud by všichni nahlíželi na svět podobným způsobem tak bychom nejen neměli tušení o atomové bombě ale žili bychom pořád na stromech ;)
Taky o regulaci nic nevím, ale to mi nezabrání se do stavby koptéry pustit a něco se o regulaci dozvědět.
Adame už se těším na další díl.
Článků o Oppenheimerovi je víc než dost, chodil bych s dřívím do lesa. ;-)
Pokud jsem si všimnul, nikdo autorovi nevyčítal CO dělá a popisuje, ale JAK to dělá. Dokonce, pokud si dobře pamatuju, v diskusi k jednomu z předchozích dílů jsem autorovi sám vyjádřil podporu.
Nicméně myslím si, že vrhnout se do objevování něčeho a nepoučit se přitom z předchozích chyb ostatních je ... nemoudré.
Pro zajemce zde muzete najit inspiraci pro vase dalsi experimenty. Vsechno Atmel AVR
* KK-Control Board
http://code.google.com/p/kk-multicopter/wiki/GettingStarted
Obvykle Gyro, nektere desky maji i Accel. Nektere modely pouzivaji interni (ne moc presny oscilator), nektere maji krystal a dokonce maly graficky LCD.
* Multi Wii
Klon arduina (xtal 16Mhz) mnoho kombinaci s mnoha sensory rovnou na desce, pres I2C nebo serial
- ruzne Akceleratory a Gyra (i v clanku zminovane MPU-6050)
- barometricky vyskomer
- magnetometr
- GPS
- Ultrazvukovy sonar (pro pristavani)
* ArduPilot
http://www.diydrones.com/notes/ArduPilot
Hlavni rozdil od predeslych: 2 AVR procesory:
- 328 pro cteni dat z vysilacky a rizeni vystupnich pinu pro serva nebo motory
- Mega (1280, 2560) vlastni "mozek" pro vypocty.
Nezapomenout na http://aeroquad.com
Proti předchozím uvedeným je dle mého názoru nejméně vázaný na konkrétní proprietární HW, prostě stačí vzít arduino, některé z podporovaných senzorů a v konfiguraci odkomentovat odpovídající nastavení. Jimi dodávaná deska není nutná.
Tím nechci ty ostatní projekty shazovat, prostě každý má pro i proti.
Je to pak s veskeryma tema funkcema na let, gyro cidla, optical flow, i nejaky jednoduche objective-subjective reality kodek tam je, a pokud tam date i telicko se sykorky, mate to i s autoreplikaci.
Quadrokoptera a reprap v jednom.
Me ohromuje vzdy jak to v plne ryhlosti naperou do nejake percentimetrove diry ve krovi a spolehlive s ni prolitnou :)
Zdravím, pěkný a poučný díl seriálu. Za tento má ode mě autor pochvalu. Jen jedna drobnost, jednotka °/sec je úhlová rychlost, nikoliv zrychlení.
Pokud si s tím autor bude dále hrát, velmi by mě zajímal šum a drift údaje o úhlu náklonu, který vyčítáte z DMP. To jsou vlastnosti kritické pro řízení. Obzvlášť na driftu je závislé, jak dlouho bude Váš stoj schopný vydržet ve vzduchu (pokud si po 3 minutách začne myslet, že "vodorovně" je ve skutečnosti 10°, tak to bude bez externích korekcí špatně použitelné).
To souvisí s komentářem, který je kdesi výše: Prostou integrací hodnot např. z akcelerometru nedostanete přesnou hodnotu rychlosti, natož pak polohy. I kdybyste to integrovali spojitě (což tak jistě nebude, bude to např. 50x za sekundu (co ty chvíle mezi tím?)), tak ten senzor bude stejně šumět, tedy kecat. A integrací těchto "chyb" dojdete v čase ke vzrůstající chybě, která vyžaduje korekci z jiných zdrojů.
MPU-6050 jsem nikdy nezkoušel, protože nedůvěřuji Invensense a mám raději hardcore řešení. Pokud ale poskytuje MPU informace o skutečném náklonu, tak integruje data z akelerometru a gyr. Algoritmus pravděpodobně využívá nějakou z variant Kalmanova filtru. S akcelerometrem od Analog Devices, gyry od Melexisu a PNI magnetometrem jsem dosáhl celkově přesnosti odhadu cca +-1° - díky driftu akcelerometru, jinak do 0.2°. Měřeno po dobu 40 minut.
Předpokládám, že MPU-6050 na tom bude podobně.
S čím ale autor musí počítat jsou vibrace kvadrokoptéry které negativně ovlivní senzory. Může to dojít až tak daleko, že na výstupu senzorů budou "nesmysly".
Díky za info. Ptám se proto, že platforma Mikrokopter, kterou ve škole používáme, nevydrží s úhlem déle, než 10 minut bez rekalibrace, tak by mě zajímalo, jak jsou na tom jiné senzory.
Vibrace opravdu dělají hodně - už jen třeba ty produkované nevyváženými vrtulemi, to je potom špatně ovladatelné zlo.
Platformu neznám :(. Má elektromechanické gyro nebo MEMS gyra/akcelerometry? Přesnost a stabilita odhadu závisí na použitém algoritmu (něco se dá najít na netu). Ale také na kvalitě senzorů. A na stabilitě napájení senzorů - 10 mV (drift menší než 1% pro 3.3V) může samo o sobě vyústit v drift odhadu až o několik stupňů (záleží na rozsahu senzorů) - případně na stabilitě výstupu dodatečné napěťové reference... Být Vámi tak reviduji elektroniku mikrokoptéry.
PS: Na vibrace platí uložení do "lůžka" nebo alespoň gumové/molitanové podložky pod fixační šroubky. Dokáže to zázraky.
Nějak mi pořád nechce jet ten kód na gyroskop s přerušením, píše mi to pořád "DMP ready! Waiting for first interrupt..." a pak nic... Myslím si že mám špatně propojené piny arduina a gyroskopu. Moc jsem to nepochopil, může mi to sem prosím ještě jednou někdo napsat jak to má být? Dík :)