Robot Irena
Nicnedělání mi nedalo a rozhodl jsem se pro rok 2010 zase začít stavět robota. Cílem je RoboOrienteering v Rychnově a když se hodně zadaří (zadařilo se, Irena získala v prvním ročníku této soutěže první místo), tak i Robotour v Bratislavě. Ale to je ještě hudba vzdálené budoucnosti.
Mechanika
Přiznávám se, silně jsem se inspiroval menším robotem týmu RoboAuto. Základem je podvozek modelářské buginy pro spalovák v měřítku 1:5 s náhonem na všechna 4 kola. Podvozek typu monster truck by byl lepší (má větší kola a stejné pérování vpředu i vzadu), bohužel už nebyl k sehnání. I tohle byl poslední kus z výprodeje. Délka je 70cm, šířka 45cm (pro představu, hrana dlaždice na fotce je 25cm) a poloměr zatáčení cca 130cm (na otočení do protisměru bez manévrování je třeba šířka cesty asi 2.6m).
Z podvozku byly odstraněny všechny nepotřebné díly - karosérie, nárazníky, křídlo, ochranný rám, palivová nádrž, držáky na motor a RC soupravu...
"Aplikační nástavba" je postavena z drážkovaných hliníkových profilů 20x20. Její součástí jsou dvě sklopné "věže" - přední pro kamery a zadní pro kompas/GPS.
Pohon
Opět modelářské komponenit a inspirace od RoboAuto. Jestě jednou díky za tip na skvělý eshop http://www.hobbycity.com/
- Motor
- Regulátor
- Servo řízení
- Akumulátor
Převod z motoru na podvozek je řešen ozubeným řemenem systému HTD s roztečí 3mm a šířkou 9mm. Konkrétně je použit řemen HTD-03M-300-09 (délka 300mm) a řemenice 36-3M-09-1F (36 zubů) na motoru a 72-3M-09 (72 zubů) na těle původní odstředivé spojky. Velká řemenice nemá bočnice, ale nezdá se, že by to vadilo, řemen nemá snahu spadnout. Převodový poměr 1:2 byl určen podle údajů výrobce motoru, ty se ale ukázaly nepříliš spolehlivé, takže maximální rychlost překračuje očekávaných 1.8m/s.
V řemenici pro motor byl pouze (na soustruhu) vyvrtán otvor 8mm pro hřídel motoru, vnitřek řemenice pro podvozek byl odsoustružen na otvor cca 60mm pro nasazení a nalepení na buben, v němž původně měla zabírat odstředivá spojka (viz obrázek). Motor byl přišroubován a přilepen na kovový úhelník (profil z OBI na spojování trámů) a na jeho hřídel byla nalepena řemenice a profil byl přišroubován přes gumové podložky k podvozku. Pro přilepení obou řemenic bylo použito zelené lepidlo pro silně namáhané spoje (lze ho uvolnit zahřátím na 100 stupňů).
Rozvody pohonu k přední a zadní nápravě jsem zakrytoval, aby v nich nedošlo k rozžvýkání nějakého kabelu.
Odběr motoru se při běžné jízdě pohybuje kolem 3A, při zablokování vyskočí na 20A (což by odpovídalo cca 250W výkonu).
I když má servo řízení deklarovaný odběr 900mA za běhu a 2.5A při zaseknutí, vypíná mi při rozběhu na laboratorním zdroji proudovou pojistku nastavenou na 4.5A. Proto je zatím napájeno z vlastního akumulátoru (4xAA).
Elektronika
Původní plán s deskou FriendlyARM jakožto masterem sběrnice Robbus jsem kvůli časovým důvodům odpískal. Rozhraní na řídící počítač (netbook s Atomem) tak tvoří převodník USB/serial (FT232) s pohlcováním echa ze sběrnice (autor Béďa Himmel, díky).
Na sběrnici jsou zatím připojeny tři uzly: přední (head), zadní (tractor) a na věži (compass). Head obsluhuje servo řízení, sonary, měří napětí servo baterie a výhledově zde bude připojen nárazník. Tractor, jak už název napovídá, má na starosti pohon - signál pro regulátor, měření napětí a proudu, měření ujeté vzdálenosti, odpojování pohonu, snímání stavu Stop tlačítka a výhledově sem přibude Start tlačítko. No a Compass překvapivě čte data z kompasu a GPS.
Senzory
Základem navigačního systému je GPS a kompas (CMPS03) v zadní věžičce. Pomocí magnetického enkodéru se měří ujetá vzdálenost, ta se zatím nepoužívá pro navigaci, ale jen při vyhýbání. Dva sonary (SRF02) v přední části robota tvoří virtuální nárazník a rovněž pomáhají při vyhýbání se překážce. Z nenavigačních údajů se ještě měří napětí všech tří palubních akumulátorů a proud do motoru.
Pro soutěž Robotour plánuji k řídícímu počítači připojit dvě webkamery (ve viditelném a IR spektru) pro detekci cesty. Kamery by se hodily i pro RoboOrienteering (detekce oranžového kužele), ale opět z časových důvodů byly vynechány.
Řízení
Řídící algoritmus byl pro RoboOrienteering zcela triviální. Z GPS se vzala pozice, z té se spočetl azimut k cílovému bodu. Z kompasu se vzal skutečný azimut a řízení se nastavilo podle rozdílu. Pokud některý ze sonarů viděl překážku, zahnulo se na stranu, kde byla překážka dál. Když překážka zmizela ze sonaru, pokračovalo se ještě metr a pak se robot vrátil na cestu k cílovému bodu.
Úpravy 2012
Sonarová rampa
Provizorní řešení z elektroinstalačních krabiček jsem nahradil polohovatelnou (výška, náklon, úhel bočních sonarů) rampou. Zároveň přibyl středový sonar pro lepší pokrytí prostoru před robotem. Všechny sonary pálí prakticky naráz, takže riziko příjmu falešného odrazu by mělo být poměrně malé. Plánované rozšíření je použít rampu zároveň jako mechanický nárazník (poslední "obranná linie"). Sonary lze jednotlivě zapínat a vypínat.
Zadní sonar
Pro případnou podporu couvání jsem přidal i zadní sonar. Lze ho softwarově zapínat a vypínat.
Vectornav IMU
Sadu senzorů jsem doplnil o 9DOF IMU od firmy Vectornav. Provizorně je připojeno přes převodník USB-Serial a v první fázi bude sloužit jako zdroj kompasových dat více odolných k náklonu. Jednotka po instalaci vyžaduje kalibraci (kvůli železu a magnetickým materiálům v okolí, bez kalibrace ukazovala po namontování cca o 80stupňů mimo). Kalibrační program vyžaduje "natočení produktu do všech orientací", docela slušný akrobaticko-posilovnový kousek
Neato lidar
Pravděpodobně poslední přírůstek do sbírky senzorů je laserový scanner z robotického vysavače Neato X-11. V USA je k mání za $400, ale měl jsem štěstí a vychytal na Amazonu akci za $300. V Evropě je bohužel za 400liber, 500 eur a podobně...
Obrázky vnitřností, schémata a spol jsou na http://random-workshop.blogspot.com/. Testovací python program je na https://github.com/Xevel/NXV11. Komunikační protokol po sériové lince (3.3V, 115200bps) je binární - packety s úhlem, vzdáleností, kvalitou dat a kontrolním součtem. DO toho občas proběhne nějaký stacktrace...
Připojení není úplně přípočaré - laser má dvě nezávislé části: motor a vlastní elektroniku v otočném bubínku (ve vysavači je to připojené k jedné řídící desce). Pokud se motor netočí, tak data nechodí, pro změnu se po zapnutí vypíše jakési textové menu, další výzkum jsem nedělal. Bubínkem je třeba otáčet cca 5x za sekundu, naštěstí to vychází taky pri 3.3V. Celé je to dost vevyvážené, kmitá a hlučí, takže motor zapínám z AVR jen pokud běží ovládací program.
Data vypadají poměrně pěkně, alespoň v místnosti (dele je kousek mého obýváku). Rozlišení je 1 stupeň. Otázkou je funkčnost a kvalita dat venku.
Harmonogram
Optimistický plán vývoje (ale naděje umírá poslední
):
Termín |
Popis |
Poznámka |
listopad 09 |
montáž BLDC motoru a serva, RC řízení |
splněno, viz video |
prosinec 09 |
řízení motoru a serva po RobBus |
|
leden 10 |
silová část, nouzové vypnutí, monitorování aku, jízda rovně |
|
únor 10 |
senzorová síť, master sběrnice |
master vynechán |
březen 10 |
základní řídící sw, vyhnutí se překážce |
|
duben 10 |
jízda na GPS souřadnice |
|
květen 10 |
funkční sw pro RoboOrienteering |
|
červen 10 |
RoboMagellan 2010 |
|
březen 12 |
Nová sonarová rampa |
mechanika, upraven Head |
březen 12 |
Zadní sonar |
pro bezpečné couvání |
březen 12 |
Robbus bridge |
může být odsunuto |
duben 12 |
instalace Vectornav IMU, použití místo kompasu |
namontováno, připojeno provizorně přes USB-Serial |
červen 12 |
Neato laser |
namontováno, připojeno provizorně přes USB-Serial |
květen 12 |
ladění pro RoboOrienteering, průměrování pozice |
|
červen 12 |
RoboOrienteering 2012 |
|
??? |
přepis celé architektury |
|
??? |
konečně zkusit kamery |
|
??? |
jízda po cestě na základě dat z kamery |
|
??? |
Robotour 201x |
|
Pridavam kousek textu, co jsem psal do mailu pro pripad, ze by mel nekdo zajem o vic informaci:
000. posilat vic NMEA dat, aktualne je to oholene na minimum, takze treba nemam udaj o presnosti (resp. to co posilam neni vyhovujici). Tohle by asi bylo dobre pro prumerovani, viz dale.
1. Robbus Bridge - desticka zalozena na STM32 (Olimexino), cilem je jednak mit mensi overhead pri komunikaci s robotem (jeden packet in/out), druhak si pripravit platformu, ktera bude krome robbusu sbirat data i z imu a pripadne laseru
2. pripojeni vectornav imu (v nejhorsim pripade se da pripojit pres usb/seriak, ale rad bych to mel zarazene do jedne komunikace, v prvni fazi ho chci pouzit jen jako lepsi zdroj kompasovych dat (a mozna failsave pokud se robot moc nakloni nekam nebo bude velka spicka na akcelerometrech)
3. upresneni pozice - protoze se zmensil kruh kolem kuzelu, stupidni algoritmus z 2010 (jizda na gps pozici) uz zrejme nevyhovi. Takze chci dojet nekam pobliz (treba 10m podle gps), tam zastavit a chvili prumerovat. A pak popojet ke kuzelu na zaklade kompasu a odometrie). Advanced varianta by byla nejak fuzovat pozici z gps a pozici z kompasu/odo, ale to temer urcite nestihnu
4. Neato laser - mam v planu koupit $400 vysavac a laser si dovezt. Necekam, ze bych ho za ty dva tydny mezi navratem a soutezi stihl zaintegrovat, kdyby ano, tak by se asi dalo zneuzit Jirkovo VFH pro SickDay pro zlepseni vyhybani prekazkam
5. (po RoboOrienteering) - konecne se musim dokopat k nejakemu kompletnimu prepisu z monolitu, co tam ted je, abych byl vubec schopny delat nejaky dalsi rozvoj. Zatim jeste nevim, jestli se ubirat jirkovou cestou MQ nebo neco uplne jineho, ale celkem se mi ta idea libi
6. Alespon nejaka trivialni kamera, abych konecne udelal na RT alespon jeden bod. Ale to uz jsem asi v risi snu a je dost nepravdepodobne, ze to do podzima stihnu
Poučení
Sice je to naprosto zjevné, ale nejpodstatnější bod byl, že outdoor soutěž si žádá outdoor podvozek. Na kopeček ve druhém kole se totiž ze sedmi zúčastněných robotů vyškrábali pouze dva (třetí by to asi také dal, ale zabloudil). No a samozřejmě, jednoduché řešení má větší šanci fungovat....
Plány na Robotour
Pokusy ukazují, že v infraspektru jsou cesty poměrně dobře rozlišitelné, moje pokuse se tedy budou ubírat tímto směrem. Zbytek systému zůstane zachován (zjištění polohy, vyhnutí se překážce...). Zda budu řešit křižovatky, uvidím podle času.
Média
Zdrojove kody
irena_src_avr.zip - zdrojové kódy pro jednočipy (ATMega8, 16MHz)
irena_src_main.zip - řídící program (Python, verze pro SICK Robot Day, as-is)
