čtvrtek 2. července 2009

Robotic rover video

úterý 16. června 2009

Konečně (téměř) hotovo

Tak už před nějakou dobou jsem ukončil práce na bakalářce. Teď už mě čeká jen spousta odříkání a učení. Co je nového od minule? Nové moduly pro ovládání motorů (možná bude článek), regulátor ujeté vzdálenosti (na požádání z PC robot ujede zadanou vzdálenost), zprovozněný kompas, zrychlená komunikace (mezi moduly i s PC) a vychytaná spousta drobných chyb. K obhajobě BP se chystám natočit nějaké video, takže ho sem potom určitě dám. Níže pár posledních fotek z vývoje a odkazy na (zatím neobhájenou) bakalářskou práci a přílohy k ní.




Na tomhle místě v laboratoři jsem se něco naseděl a kolikrát se z toho zakouřilo už ani nepočítám... Ale co si tak pamatuju, zničil jsem 1x L6203, 1x programátor, vypařilo se několik cest na DPS... No zkrátka samá legrace :-)

Výše prosím ukázka displeje zobrazujícího stav regulátoru ujeté vzdálenosti. LS je ujetá vzdálenost pro levou stranu robotu (průměr ze vzdálenosti předního a zadního kola), RS to samé pro pravou stranu, LE a RE jsou odchylky (žádaná vzdálenost - aktuální), RD je požadovaná vzdálenost a ST je stav (READY / RUNNING). Zdá se, že to funguje docela dobře. Dodělat otočení o zadaný úhel jsem bohužel už nestihl. Kompas ale funguje, takže to nebude zas tak náročné.

BP Elektronická část mobilního robotu
Přílohy k BP (DPS, zdrojové kódy atd.)

pátek 20. března 2009

Stav projektu k 20.3. 2009

Tak robot už je víceméně pohromadě. Proběhly první jízdní testy a přišlo se na závažné mouchy. Tak předně se robot nebyl schopný otočit na místě. A nebylo to jednou chybou, ale šlo o synergii chyb několika.

Předně byla chyba v programu a to v kódu modulu MotorControl. Byl špatně nastavený režim PWM. Místo režimu, kdy TOP odpovídá ICR1 tam byl 10 bitový režim. Takže místo 2500 byl vrchol čítače 1024, což znamená, že to muselo přetékat... Moc nechápu jak to mohlo fungovat, ale na stole se prostě chyba neprojevila, regulátor si s tím nějak poradil.

Druhý problém vězí v použitém h-můstku L298. Při proudu kolem 2A je na něm úbytek téměř 4V. To jsem bohužel zjistil až teď. S tímto budičem jsem pracoval už dřív, ale ne s takovými proudy a tak se tato nepříjemná vlastnost neprojevila. Pokusně jsme ji odstranili napájením robota z laboratorního zdroje cca 16 volty - čili na motorech pak bylo napětí 12V a robot se točil jak o život (ale jen chvíli - než zapůsobila ochrana proti přehřátí v L298). Zrovna teď pracuju na návrhu DPS nového modulu, tentokrát s unipolárními budiči L6203. Až bude hotový, dám sem opět schéma a DPS.

Při testování se naštěstí vyskytly i pozitivní okamžiky. Nechali jsme robota ujet rovně 750 cm a výsledek z odometrie byl 740 cm, což mi nepřipadá jako úplně špatné. Kolega má už také dobře zpracované ovládání joystickem. Funguje to opravdu perfektně.







středa 11. března 2009

Stav projektu k 11.3. 2009

Elektronika už má většinu plánované funkčnosti. Z těch podstatných věcí, které by měla umět a zatím neumí jsou to: ujet zadanou vzdálenost rovně, otočit se o daný úhel (na to je potřeba dopsat obsluhu pro kompas). Řídicí program v PC se už také rýsuje. Nyní je v něm možné ručně poslat paket vybraného typu a sledovat odpověď. V nejbližší době přibude pravidelné čtení dat z pohonů a ze senzorů. V další fázi pak bude možné ručně vytvořit mapu a budeme pracovat na tom, aby se v ní robot dokázal pohybovat. Tomu ale musí předcházet montáž modulů a senzorů na podvozek. Nyní je vše pro testovací účely řešeno systémem vrabčí hnízdo.


Na fotce níže jsou k vidění dva moduly MotorControl. Na jednom z nich je bohužel už třetí atmega8. Pokaždé odešel pin OC1B (nebo A, teď nevím). Poprvé to bylo zřejmě díky nepořádku na stole (vznikl nějaký šlus), podruhé z neznámého důvodu. Pro jistotu jsem na všechny cesty mezi procesor a budič L298 umístil ochranné odpory 1k. Uvidíme, teď už snad procesor vydrží.


Na fotce níže je lcd zobrazující stav levého předního motoru. RS značí požadovanou rychlost, AS aktuální, LO zátěž motoru v procentech (činitel pwm), TM teplotu, CU proud motorem a DI ujetou vzdálenost. Jakmile bude elektronika nějak rozumně upevněná na podvozku, provedeme testy k určení přesnosti odometrie. Výsledky měření na stole vypadají zatím dobře :-)


Níže displej zobrazující statistiky komunikace s podřízenými moduly. SE je počet odeslaných paketů, RE značí počet přijatých, FE počet chyb rámce, BR počet špatně přijatých paketů (chyba CRC), TO počet timeoutů při příjmu a SY je počet chyb synchronizace.




neděle 8. března 2009

Stav projektu k 6.3. 2009

Dnes jen stručně. Poslední z nezbytných modulů - SensMod je téměř hotový. Už se umí postarat o ultrazvuk i infračervená čidla - obojí kupodivu ukazuje téměř shodné hodnoty. Teď mě ještě čeká dopsání obsluhy pro kompas, který budeme používat pro otočení robotu o zadaný úhel. V souvislosti s kompasem - zatím počítáme s tím, že robot bude jezdit rovně a zatáčet o 90˚. Důvod je prostý - odometrie.

Zdrojový kód je, jako obvykle, na cvs, ale není to žádný zázrak. Na wiki projektu je již popsán způsob, jakým se PC dostane k údajům ze senzorů, zbývá ještě doplnit popis komunikace mezi MainMod a SensMod (je to ale téměř stejné).


Dále kolega zahájil práci na řídicím programu a provedli jsme nějaké testy komunikace mezi PC a elektronikou. Vše už je tedy téměř připraveno na první "jízdní" testy. Nejvíce práce zřejmě dá umístění všech senzorů a desek na podvozek :-)

Zatím to vypadá, že pro (budoucí) bezdrátové spojení použijeme XBee, právě studuju možnosti.

sobota 14. února 2009

Test modulu MotorControl

Konečně se mi podařilo odladit poslední chybičky v modulu MotorControl a tak jsem natočil krátké video. Je na něm vidět jak modul zajišťuje plynulý rozjezd a zastavení. Omlouvám se za velice špatnou kvalitu.



Brzy už budu mít hotový i druhý modul a tak nastane čas pro první "jízdní" testy.

sobota 7. února 2009

Stav projektu k 7.2.2009

Z Hobbyrobotu konečně dorazil podvozek MOB-03. Konstrukce je opravdu masivní a oproti prototypu, který jsem viděl u jednoho týmu na Robotour má nějaká vylepšení. Zatím mám pouze jeden modul MotorControl (ovládá dva motorky), takže joystickem ovládám jen jednu polovinu budoucího robotu. Modul M.C. se stará o čtení stavu enkodéru, plynulou akceleraci a měří proud motory.

Bohužel se potýkám s dvěma problémy. Na řádkovém lcd modulu MainMod mám udělané jednoduché menu a tlačítkem přepínám režimy zobrazení. Po startu modulu funguje ovládání joystickem normálně, ale po přepnutí menu odesílání požadované rychlosti začne zlobit. Snažím se na to přijít už třetí den, zřejmě je za tím nějaká magie (nebo nastavení gcc:)). Další problém je "cukání" motoru. Zatím se mi podařilo vypátrat, že nějak souvisí s probíhající komunikací - pokud do programu modulu zadám hodnotu požadované rychlosti napevno a modul odpojím od sběrnice, regulace je krásně plynulá, bez jediného škubnutí. Nezdá se, že by na to škubání mělo vliv přílišné vytížení procesoru. Pátrání pokračuje...


Napájení robotu budou zajišťovat dvě 4Ah 6V pb aku. Dvě z důvodu rozložení hmotnosti - a taky mi bez užitku ležely doma. Na fotce je vidět uložení aku ve vnitřnostech MOB-03 a upevnění pomocí součástek ze stavebnice Merkur.


Dnes jsem také v Eaglu dodělal DPS pro modul SensMod, který bude obsluhovat senzory. Jeden modul umožňuje připojit jedno servo a jeden sonar SRF-05, čtyři taktilní senzory (tlačíka:)), šest čidel s analogovým výstupem (Sharp) a čtyři senzory komunikující po I2C.