0,0 → 1,766 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
<html> |
<head> |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
<title> Camerus </title> |
<meta name="keywords" content="MLAB čárový robot Camerus"> |
<meta name="description" content="Čárový robot Camerus"> |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"> |
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print"> |
<link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico"> |
<script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script> |
<!-- AUTOINCLUDE END --> |
<style type="text/css"> |
p.Obrazek {text-align: center} |
</style> |
|
</head> |
|
<body lang="cs"> |
|
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== HLAVICKA ============== --> |
<div class="Header"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../../../../"); |
DrawHeader(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
|
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== MENU ============== --> |
<div class="Menu"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../../../../"); |
DrawMenu(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
|
<!-- ============== TEXT ============== --> |
<div class="Text"> |
|
<p class="Title"> |
Robot CAMERUS |
</p> |
|
<p class="Autor"> |
<a href="mailto:kaklik@mlab.cz">kaklik@mlab.cz</a>; |
<a href="mailto:kakl@i.cz">kakl@i.cz</a> |
M. Novotný |
</p> |
|
<p class="Subtitle"> |
Jak se dělá robot na IstRobot |
</p> |
|
|
<p class="Subtitle"> |
<a href="Pictures/image001.jpg"><img src="Pictures/image001_small.jpg" alt="Obrázek robotu"></a> |
</p> |
|
<h1> Úvodem </h1> |
|
<p> |
Tato dokumentace popisuje konstrukci robota Camerus, který byl |
zkonstruován pro soutěž IstRobot pro kategorii Stopár |
(<a href="http://www.robotika.sk/contest/">http://www.robotika.sk/contest/</a>). |
</p> |
|
<p> |
Snažili jsme se technickou dokumentaci pojmout poněkud netradičně. |
Kromě popisu finální verze robota zde naleznete chronologický popis |
jeho vývoje a popis všech slepých uliček. Doufáme, že takováto forma |
dokumentace bude mít pro naše následovníky větší hodnotu než pouhý |
návod na zopakování konstrukce. |
</p> |
|
<h1> První pokusy </h1> |
|
<h2> Robot 3Orbis </h2> |
|
<p> |
Vývoj robota Camerus začal před více jak dvěma roky vývojem robota |
3Orbis. Robot 3Orbis měl mít novou revoluční koncepci podvozku. Použili |
jsme tříkolý podvozek, který měl dvě hnaná kola, každé s nezávislým |
motorem a třetí kolo, které mělo řízené zatáčení. Jednalo se tedy o |
nonholonomní podvozek. Koncepci podvozku jsme nejdříve ověřovali se |
dvěma senzory na čáru, jako to měly naši předchozí holonomní roboti. |
To moc nefungovalo a proto jsme přidali další senzory, pomocí kterých |
se diskrétně nastavoval úhel zatáčecího kolečka. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image003.jpg"><img src="Pictures/image003_small.jpg" alt="Pohled na jízdu"></a> |
<br> |
Obr.1: První pokusy s tříkolým a třímotorovým robotem |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image005.jpg"><img src="Pictures/image005_small.jpg" alt="Baterie senzorů"></a> |
<br> |
Obr.2: Baterie senzorů na čáru |
</p> |
|
<p> |
Přidáním dalších senzorů na čáru jsme se dostali do problémů |
s počtem vstupů použitého procesoru (PIC16F88). Tento problém jsme |
vyřešili tak, že jsme na zpracování signálů ze senzorů na čáru použili |
další samostatný procesor. Toto řešení se však později neukázalo jako |
výhodné, protože ladit distribuovaný kód bylo řádově obtížnější a navíc |
se musela naprogramovat komunikace mezi procesory. Často se nám také |
stávalo, že jsme během vývoje do jednoho procesoru nahráli kód pro |
druhý procesor, což kupodivu vždy trvalo určitou dobu, než jsme na to |
přišli. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image007.jpg"><img src="Pictures/image007_small.jpg" |
alt="Přední náhon"></a> |
<br> |
Obr. 3: Přední náhon; přidáno druhé patro na elektroniku |
</p> |
|
<p> |
Původní koncepce předpokládala hnaná kola vpředu a zatáčecí kolo vzadu. |
Modelářské servo však nedokázalo dostatečně rychle zatáčet, přestože |
bylo zpřevodováno do rychla převodem 1:2. Změnili jsme proto uspořádání |
na hnanou nápravu vzadu a zatáčecí kolečko vpředu. To nám umožňovalo |
„ostře řezat zatáčky“, ale objevily se další problémy. Podvozek se |
v zatáčkách dostával do smyku a protože hmotnost čidel byla |
nezanedbatelná, docházelo i k jeho naklápění a následně |
k falešnému signálu z čidel, protože čidla nebyla držena |
v konstantní vzdálenosti od povrchu. |
</p> |
|
<p> |
Pro 3Orbise byla vysoustružena duralová kola, pro která bylo plánováno |
obutí „O“ kroužky. To se pak ukázalo jako nepoužitelné. „O“ kroužky se |
nedokázaly udržet v drážkách na kolech. Původní kola byla tedy |
nahrazena plastovými z dětské hračky. Kola měla menší průměr, což |
zlepšilo převodový poměr, který byl pro vyrobené převodovky 5:1. Jako |
obutí byly použity ustřižené prsty z latexových rukavic pro |
domácnost. Jako obutí zatáčecího kolečka bylo použito pryžové těsnění |
12x10x2. Na zatáčecí kolečko bylo obuto tak, že se jelo po hraně |
těsnění. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image009.jpg"><img src="Pictures/image009_small.jpg" |
alt="Zadní náhon"></a> |
<br> |
Obr.4: Robot 3Orbis. Zadní náhon a menší kolečka z autobusu od |
syna pana Hronka.<br> |
Je vidět čidlo na hledání hrany cihly. |
</p> |
|
<p> |
Pro detekci a objíždění cihly byly na robotovi namontovány IR senzory. |
Jeden měl detekovat překážku na dráze a zbylé dva měly sloužit pro její |
objetí. Objetí cihly pomocí IR senzorů jsme však nedokázali odladit. |
Objíždění nebylo spolehlivé a tak robot nakonec objížděl cihlu |
naslepo. |
</p> |
|
<p> |
Při soutěži se objevil nečekaný problém, kvůli kterému robot nakonec |
nedojel. Soutěžní dráha je tvořena dvěma deskami. Desky nejsou dokonale |
slícovány a tak mezi nimi vzniká tmavá mezera. Tato mezera byla na |
soutěžní dráze přelepena bílou lepicí páskou. Bohužel čidla na čáru, |
které robot používal, vyhodnocovala bílou lepicí pásku jako černou |
(čidla pracují blízko ultrafialové oblasti). Tento problém by šel |
kompenzovat programově, ale na soutěži se nepodařilo program |
v časové tísni správně upravit. Robot tedy nakonec nedojel. |
</p> |
|
<p> |
Odhadovali jsme, že nám chyběl tak týden na odladění firmware, protože |
v roce 2006 u nás byla povodeň a ztratili jsme tak nejméně jeden |
kalendářní měsíc večerů/weekendů na programování. Nyní s odstupem |
času vidíme, že co se týká objetí cihly, chybělo nám mnohem více. |
</p> |
|
<h2> Robot Laserus </h2> |
|
<p> |
Další verzí robota se shodným podvozkem byl robot Laserus. Snahou bylo |
odstranit „těžká“ čidla předsunutá před robota a tak odstranit |
překlápění v ostrých zatáčkách. Řešením by bylo zvětšení dosahu |
čidel na čáru tak, aby mohla být umístěna co nejblíže k ose otáčení |
robota. Zároveň by se tím snížila obvodová setrvačná hmotnost robota. |
Znovu jsme použili tříkolý podvozek s jedním řízeným zatáčecím |
kolečkem, přestože na IstRobotu 2006 byla tato konfigurace diskutována |
a autoři druhého robota s podobnou koncepcí se v diskusi |
vyjádřili, že to nebyl dobrý nápad, že robot při větších rychlostech má |
snahu se rozkmitávat. Řešení tohoto problému jsme viděli ve zjemnění |
snímání čáry tak, aby se precizněji nastavovalo zatáčecí kolečko. |
Napadlo nás použít laserovou čtečku čárového kódu a skutečně jsme |
postavili funkčního robota (viz Obrázek 5), který dokázal, ale pomalu, |
jezdit po čáře. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image011.jpg"><img src="Pictures/image011_small.jpg" |
alt="Robot Laserus"></a> |
<br> |
Obr. 5: Robot Laserus. Na obrázku je vidět červená stopa LASERu. |
</p> |
|
<p> |
Problémy s touto konstrukcí byly dva. Pokud byl na dráze hrbol, |
tak se v důsledku vibrací zmenšil rozkmit laseru, protože laser je |
ve čtecím zařízení rozmítáván mechanicky zrcátkem, které vibruje a |
velké stranové zrychlení při přejetí hrbolu způsobovalo, že |
elektromagnetický mechanismus, který pohybuje zrcátkem vypadl |
z rezonance. Tento problém by ovšem zřejmě šlo kompenzovat |
softwarem, protože se čára četla v obou směrech pohybu zrcátka. |
Jednou jsme tedy dostali polohu čáry měřenou z leva a jednou z |
prava. |
</p> |
|
<p> |
Druhý problém byl závažnější. Protože bylo použito zařízení na čtení |
čárového kódu, snímali jsme vlastně polohu jedné čáry fiktivního |
čárového kódu ve scanovaném prostoru. V prudké zatáčce však |
dochází k tomu, že čáru vidí snímač šikmo a tak se relativně |
zvětšuje její tloušťka. Vnitřní elektronika snímače vyhodnotila tento |
stav, jako že se nejedná o čárový kód a čáru vyfiltrovala. To |
samozřejmě mělo v ostré zatáčce fatální následky. Dále jsme touto |
cestou nepokračovali, přesto, že víme, že v závodě DARPA se často |
používají laserové dálkoměry. Na soutěžních vozech je však vidět, že |
konstruktéři také mají problémy s odtlumením vibrací. |
</p> |
|
<h1> Robot Camerus </h1> |
|
<p> |
Znovu se vynořil nápad, použít pro snímání čáry kameru. To už nás |
napadlo několikrát, ale když jsme nápad analyzovali, vždy se ukázalo, že |
jednoduchým jednočipovým mikropočítačem nelze zpracovávat obraz kamery. |
Druhým problémem je, že běžně dostupné kamery mají snímkový kmitočet |
50Hz, což se nám zdálo na snímání čáry pomalé. Přesto jsme zakoupili |
jednu kameru a začali jsme osciloskopem testovat, co tak kamera vidí a |
jak by se to dalo zpracovat. Kupodivu jsme zjistili, že |
s procesorem na 20MHz stíháme načíst jeden obrazový řádek asi |
s polovičním rozlišením. To bylo povzbudivé a zaměřili jsme se |
tímto směrem. |
</p> |
|
<p> |
Druhým problémem bylo, že kamera nesnímá kontrastní obraz. Jak se |
vypořádat v jednočipovém počítači s tímto problémem, když |
jeho výpočetní výkon stačí sotva na načtení řádku a ještě se musí |
počítat regulace pro elektronický diferenciál? (Pro zvolenou koncepci |
podvozku je nutné diferencovat otáčky motorů na hnaných nápravách.) |
</p> |
|
<p> |
Problém jsme vyřešili něčím, čemu jsme pracovně začali říkat „digitální |
komparátor“. Jednoduše jsme pomocí logických hradel provedli OR třech |
nejvyšších bitů jasového signálu z kamery. Všechno co bylo pod |
0x1F bylo tedy černé a všechno nad bylo bílé. Expozici kamery pak bylo |
nutné nastavit tak, aby nejsvětlejší černá čára, byla ještě černá. To |
se udělalo snadno osciloskopem, ale pro závod bylo nutné vyvinout |
nějakou strategii, jak robot provede určení expozice. Řešením byla |
rutina „Expozimetr“, která postupně zvyšuje expoziční čas a hledá ve |
snímku (samozřejmě, že v našem případě na jedné řádce) čáru |
definované tloušťky. Vychází se z toho, že nejdříve při |
podexponování je černý celý obrázek, pak se postupně obrázek vyjasňuje, |
což je ovšem díky chybě apertury objektivu nerovnoměrné. Dalším |
zvyšováním času expozice se nakonec objeví čára správné tloušťky, ta se |
pak dále ztenčuje a nakonec je snímek přepálen a čára zmizí. Samozřejmě |
se předpokládalo, že na startu robot čáru vidí a ta je před ním |
přibližně uprostřed. |
</p> |
|
<p> |
První pokusy vypadaly velmi optimisticky, robot se držel čáry a vyjel |
jenom občas. Zajímavé bylo, že robot dokázal jezdit jenom po dráze, kde |
nebyly zatáčky doleva! Protože jsme neměli k dispozici obraz |
z kamery, aby bylo možné zkontrolovat co kamera vidí, bylo nutné |
tento problém řešit pouhou úvahou. Napadlo nás, že může docházet k |
„vytrhávání obrazu“ na krajích snímku. Kompenzovalo se to tím, že se |
zahazovaly okraje řádku a skutečně to pomohlo, robot spolehlivě, i když |
pomalu, sledoval čáru. To byl velký úspěch, protože kdyby nám někdo |
řekl před rokem, že to s kamerou a jednočipovým počítačem jde, a |
že je to spolehlivé, asi by jsme mu nevěřili. |
</p> |
|
<p> |
Po prvotních úspěších jsme zkusili zrychlit jenže to nefungovalo, robot |
vždy vypadl z dráhy, když se zatáčecí kolečko otočilo o velký |
úhel. Napadlo nás, že to může být způsobeno proudovými špičkami, které |
způsobuje motor serva. Pro stabilizaci napájení pro elektroniku byl |
totiž použit lineární stabilizátor s velkým drop-outem. Proto jsme |
vyvinuli měnič, který i při poklesu napětí baterií o 2V dokázal udržet |
napětí pro řídící elektroniku a zejména kameru stabilní. Po tomto |
vylepšení už robot dosahoval poměrně slušné rychlosti a nejzajímavější |
bylo, že díky „velké“ rozlišovací schopnosti kamery (procesor dokázal |
rozlišit asi 50 bodů) byla jízda v zatáčkách velmi plynulá. |
</p> |
|
<p> |
Problém s tmou v tunelu byl vyřešen jednoduše tak, že si |
robot celou cestu svítil. Na osvětlení dráhy byly použity červené LED. |
Nevíme, jaká barva pro osvětlení dráhy je nejlepší, eventuelně, jestli |
je lepší svítit bíle. S tím jsme už nestihli před soutěží |
experimentovat. |
</p> |
|
<p> |
Protože použitý procesor PIC16F876A neumí násobit a vůbec jeho |
výpočetní výkon není omračující (kdybychom ho ale měli před lety, tak |
by jsme si určitě nestěžovali), byl celkem problém naprogramovat |
elektronický diferenciál na hnanou nápravu. Nakonec se to vyřešilo |
procedurou „jakonásobení“, která kombinací rotací a podmíněného sčítání |
provádí rychle potřebný výpočet s uspokojivou přesností. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image013.jpg"><img src="Pictures/image013_small.jpg" |
alt="Osvětlení dráhy"></a> |
<br> |
Obr. 6: Měnič v krabičce od čaje a primitivní osvětlení dráhy. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image015.jpg"><img src="Pictures/image015_small.jpg" |
alt="Robot přítel člověka"></a> |
<br> |
Obr. 7: Robot, přítel člověka. |
</p> |
|
<p> |
Začali jsme tedy testovat pro sledování čáry asi nejobtížnější věc, |
dlouhou rovinku a na konci pravoúhlou zatáčku. Při dalším zvyšování |
rychlosti začal robot v takové zatáčce vypadávat. Ne, že by přímo |
vyjel a nevrátil se na dráhu, ale poloměr zatáčení byl menší než poloměr |
zatáčky a hrozilo tedy, že v Bratislavě spadne ze stolu. Udělali |
jsme předpoklad, že je to způsobeno pomalým snímkovým kmitočtem kamery, |
než si robot stačil všimnout, že je zatáčka ostrá, zmizela mu čára ze |
zorného pole. |
</p> |
|
<p> |
Dalším problémem bylo, že pokud bylo nerovnoměrné osvětlení dráhy, |
vypadával kameře obraz. Kamera má sice AGC, ale samozřejmě, že je |
schopna kompenzovat rozdíly jasu jenom v určitých mezích. Kupodivu |
nebyl problém v tunelu, kde si robot svítí, ale velký problém byl |
s denním světlem, pokud přicházelo pouze z jednoho směru. |
</p> |
|
<p> |
Konstrukční řešení, které následovalo, bylo doplnění dvou původních |
modrých čidel po stranách robota na sledování čáry. Čidla byla umístěna |
tak, že viděla čáru, až když čára byla mimo zorné pole kamery a |
uplatňovala se pouze v případě, že kamera čáru nevidí. To velmi |
zvýšilo spolehlivost sledování čáry. Zároveň jsme tato čidla použili |
pro opětovné vyhledání čáry po objetí cihly, protože jsme se báli pro |
tento úkol použít kameru, protože po dobu objíždění cihly kamera nevidí |
kontrastní obrázek (nevidí čáru) a díky AGC by mohla zaznamenat stín |
nebo špínu na trati jako čáru. |
</p> |
|
<p> |
Na objíždění cihly byl robot Camerus vybaven odometrií na pravém kole. |
Využili jsme otvorů ve větším kole převodovky a IR závory |
z tiskárny. Citlivost odometrie nebyla velká (4 impulzy na jednu |
otáčku kolečka (12,6mm)). |
</p> |
|
<h2> Jak jsme jeli „ladit“ do Vídně </h2> |
|
<p> |
Vše potřebné bylo naprogramováno, robot sledoval čáru. Přerušení |
nedělalo problémy, prostě byl výpadek obrazu a robot pokračoval |
v původním směru před přerušením. Cihla byla řešena pomocí |
odometrie. Takto vybaveni jsme odjeli do Vídně na Robot Challenge 2007. |
Řekli jsme si, že to tam odladíme, protože jsou tam jednodušší podmínky |
než v Bratislavě (alespoň na první pohled, robot může být větší a |
tunel je také větší, takže menší robot nemusí jet tak přesně). |
</p> |
|
<p> |
Rozhodnutí ladit robota na Robot Challenge se ukázalo jako správné. |
Podmínky totiž byly náročné. Bodové osvětlení, dráha složená |
z desek s mezerami, styl soutěže play-off. |
</p> |
|
<p> |
Camerus určitě jezdil nejrychleji, ale nedokázal objet cihlu! Jednou se |
stalo, že uviděl mezeru mezi deskami, podruhé mu zřejmě proklouzlo |
kolečko s odometrií, prostě katastrofa! Alespoň, že byl třetí |
v paralelním slalomu, to jsme mu ale zavinili my, protože jsme mu |
při zkoušení objetí cihly stáhli výkon motorů a pak jsme na to |
zapomněli. Za třetí místo tedy nemohl robot, ale lidský faktor. |
</p> |
|
<p> |
|
<p class="Obrazek"> |
<a href="Pictures/image017.jpg"><img src="Pictures/image017_small.jpg" |
alt="Robot Challenge 2007"></a> |
<br> |
Obr. 8: Robot Challenge 2007, Parallel Slalom. |
<br> |
Robot Camerus na dráze číslo 1. Na dráze jsou patrné stíny od bodového |
osvětlení. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image019.jpg"><img src="Pictures/image019_small.jpg" |
alt="Příprava"></a> |
<a href="Pictures/P3180028.JPG"><img src="Pictures/P3180028_small.JPG" |
alt="Jízda"></a> |
<br> |
Obr. 9: Robot Camerus na Robot Challenge 2007. |
<br> |
Robot nemá dostatek čidel na bezpečné objetí překážky. |
</p> |
|
<p> |
Jednoznačně se ukázalo, že objíždět překážku „napůl naslepo“ není dobrá |
strategie a zejména, pokud je odometrie na hnané nápravě. |
</p> |
|
<h2> Co s cihlou? </h2> |
|
<p> |
Další vývoj jsme věnovali objíždění cihly za pomoci čidel. Jaká čidla |
ale použít? Měli jsme špatné zkušenosti s IR čidly z 3Orbise |
a roboty s ultrazvukem jsme zase na minulých ročnících viděli, že |
si spletli tunel s cihlou, případně neviděli cihlu, pokud se |
k ní blížili zešikma. |
</p> |
|
<p> |
Nevěděli jsme co s tím a tak jsme začali zkoušet. Měřili jsme, co |
„vidí“ ultrazvuk a co různá optická čidla. Při měření se ukázaly |
všechny předpokládané problémy. Ultrazvuk vidí kde co, jenom ne cihlu, |
když je šikmo. IR snímač vidí cihlu sice spolehlivě, ale stejně dobře |
jako velkou bílou zeď několik metrů daleko. Nakonec byla pro cihlu |
zvolena kombinace sedmi senzorů. Skutečně čtete dobře, sedmi! Jeden IR |
senzor vpředu na detekci přiblížení se k cihle. Funguje na |
principu triangulace. IR vysílací dioda má úzkou hliníkovou trubičkou |
zúžen paprsek, aby nedocházelo k jeho integraci na velké vzdálené |
ploše. Další dva senzory jsou mikrospínače na mechanickém nárazníku, |
kdyby se stalo, že triangulační čidlo cihlu přehlédne. To se může stát |
v prudké zatáčce. Z boku jsou pak ultrazvukový senzor a |
on/off dálkoměr s červenou LED. Tyto čidla udržují konstantní |
vzdálenost od cihly při jejím objíždění. K tomu ještě již zmíněná |
odometrie na pravém kolečku, která zajišťuje prudkou zatáčku doleva |
jakmile je cihla detekována a nakonec kompas, který zabraňuje, aby se |
robot vracel zpět po trati (to se může stát, protože mezi předním |
čidlem a bočními čidly je slepý úhel). |
</p> |
|
<p> |
Přidání dalších čidel se neobešlo bez konstrukčních problémů. Boční LED |
čidlo se ukázalo jako málo citlivé a bylo to zřejmě způsobeno tím, že |
se jedná o průmyslové čidlo, které je normálně napájeno napětím 12 až |
48V. S naším napájecím napětím 7,2V a to ještě občas, nebylo moc |
spokojeno. Byl tady přidán další měnič nahoru na 12V. Byl použit měnič |
ze staré síťové karty. |
</p> |
|
<p> |
Samostatným konstrukčním problémem bylo umístění kompasu. Nakonec musel |
být kompas umístěn nad všechny desky s elektronikou a musel být |
orientován tak, aby čidla kompasu byla pod úhlem 45° k ose robota. Pokud |
byla čidla v ose robota, byl kompas ovlivňován zbytkovým magnetickým |
polem v kovových (zejména železných) částech robota. |
</p> |
|
<h2> Poslední weekend před soutěží </h2> |
|
<p> |
Přidání kompasu na I2C sběrnici si vyžádalo přeadresaci kamery, protože |
kamera a kompas měly na I2C sběrnici stejnou adresu a adresa kompasu se |
nedala změnit. To kupodivu byl velký problém, který jsme řešili až |
poslední weekend před soutěží a přitom vyžadoval tak zásadní zásah jako |
rozebrání objektivu kamery, což znamenalo pečlivé čištění pouzdra a čipu |
kamery, protože případné smítko na pouzdře čipu by mělo při soutěži |
fatální následky. Čip kamery sice přeadresaci umí, ale bylo nutné |
připojit vývod MULT (47) na log_1 a na to kupodivu na plošném spoji |
kamery nebylo pamatováno, přesto, že na plošném spoji jsou plošky na |
odpory, které umožňují změnu adresy. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image021.jpg"><img src="Pictures/image021_small.jpg" |
alt="Úprava kamery"></a> |
<br> |
Obr. 10: Propojka na PCB kamery umožňující její přeadresaci. |
</p> |
|
<p> |
Poslední weekend před soutěží nás napadlo ještě jednou projít seznam |
problémů, které jsme si poznamenali v průběhu loňské soutěže. |
Hned na začátku tam bylo: „Zkontrolovat, jestli neprokluzují kolečka na |
hřídeli.“ Prokluzovala... Zkusili jsme je přilepit anaerobním lepidlem. |
Výsledek byl, že se zalepily hřídelky do ložisek a kolečka prokluzovala |
dál. Zkusili jsme je přilepit epoxidem. Naneštěstí nám trochu epoxidu |
zřejmě nateklo do ložisek a kolečka se zase utrhla. Poslední neděli |
před soutěží jsme tedy měli zatuhlé převodovky a kolečka prokluzovala. |
Snažili jsme se do hřídelek vyvrtat dírky a dát tam kolík, ale vrták |
vůbec nitridovanou ocel z CD mechanik nebral. Nakonec jsme do |
hřídelek pouze vypilovali drážky a opět jsme je zalili epoxidem. Jestli |
neprokluzují, jsme pro jistotu už nezkoušeli. |
</p> |
|
<p> |
Při manipulaci s pravou převodovkou se podařilo ulomit vývod od IR |
závory na odometrii. Protože nešla vyměnit (je zalepená v pŕevodovce) a |
nechtěli jsme měnit celou převodovku, natavili jsme její pouzdro pájkou |
a drátek přiletovali na pahýl vývodu. |
</p> |
|
<p> |
Po rozebrání bylo nutné převodovky nechat znovu zaběhnout, to jsme |
dělali přes noc z pondělí na úterý (IstRobot bývá ve středu a my |
tam obvykle jedeme v úterý dopoledne). Motory se točily do rána do |
poslední chvíle před naložením robota do auta. |
</p> |
|
<h2> Noc před soutěží </h2> |
|
<p> |
„Kdyby nebylo poslední noci, tak není žádný projekt dokončen.“ |
Odpoledne jsme přijeli do Bratislavy na ubytovnu, rozložili dráhy a |
začali ladit poslední řádky programu. V našem případě to mělo být |
zpracování logu z jízdy. |
</p> |
|
<p> |
A vůbec to nejezdilo. Robot měl malý výkon v levotočivé zatáčce, |
při objíždění cihly se dokonce občas zastavil. No jasně, řekli jsme si, |
jsou stále zatuhlé převodovky, změnili jsme pár konstant |
v programu a jakš takš to zase jezdilo. Situace se ale o půlnoci |
zase zhoršila a začal smrdět H-můstek. Vyměnili jsme tedy H-můstek a |
nepomohlo to. Vyměnili jsme tedy motor a pomohlo to! (Pozdější analýzou |
záznamu použitého dílu bylo zjištěno, že motor č.2 byl použit spolu s |
původním podvozkem na výstavě Vzdělání a Řemeslo v Českých |
Budějovicích, kde byla levotočivá trať a jeho provozní doba tak |
vzrostla o desítky hodin proti motoru č.1 .) Po výměně motoru jsme |
vrátili do robota původní H-můstek (asi tak v jednu hodinu ráno) |
a zase to nejelo. Měřením jsme pak zjistili dvě věci, jednak byly přes |
pájecí lak odizolovány zemnící šrouby na plošném spoji H-můstku a tak |
všechen proud tekl přes hřebínkový konektor a pak tam ještě byl zkrat |
přes jeden tranzistor H-můstku, takže jeden motor nereverzoval. |
Představte si, že tyto závady byly vykompenzovány jednak regulátorem |
v software a také koncepcí podvozku, a že s nimi byl Camerus |
na Robot Challenge třetí! |
</p> |
|
<p> |
Pak už jenom stačilo doprogramovat tu logovací proceduru (přepisovala |
paměť). A kolem páté hodiny ranní byl robot připraven na soutěž. |
</p> |
|
<h2> IstRobot 2007 </h2> |
|
<p> |
IstRobot 2007 nás skutečně překvapil, byla na něm z našeho pohledu |
nejsložitější dráha, jakou jsme kdy viděli. Extrémně dlouhé přerušení, |
navíc v inflexním bodě (to nás vůbec nenapadlo, že je možné), |
cihla hned za pravoúhlou zatáčkou (sotva robot vyjede ze zatáčky, bác, |
a je tu cihla), viz Obrázek 11. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image023.jpg"><img src="Pictures/image023_small.jpg" |
alt="IstRobot 2007"></a> |
<br> |
Obr. 11: IstRobot 2007 – tvar dráhy. |
</p> |
|
<p> |
Potenciálním problémem byly magnetické stojánky na kterých stála čidla |
časomíry. Magnetické pole nad dráhou bylo díky nim značně nehomogenní |
(stojánek na Obr. 11 vlevo dole a dva stojánky na startu). Robot |
využíval kompas pouze u cihly, a zřejmě byl stojánek dostatečně |
daleko/blízko, že nakonec nevadil. Údaje z kompasu se zpracovávaly |
diferenčně, takže nevadilo, že byla díky stojánkům odchylka v celkové |
orientaci magnetického pole Země, podstatné bylo, aby nedocházelo k |
velkým zakřivením pole v oblasti cihly. K čemuž, jak jsme změřili, |
částečně docházelo, ale software se s tím vypořádal, když vážil údaje |
ze všech čidel při objíždění překážky. |
</p> |
|
<p> |
Obtížnost trati se ukázala hned v první jízdě, Camerus vypadnul na |
přerušení. V druhé jízdě jsme snížili výkon motorů, zde ale zase |
hrozilo, že se robot nerozjede, pokud někde (například při objíždění |
cihly) výrazně zpomalí. Robot jel plynuleji, přesto vyjel |
v přerušení (to dá rozum, protože kopíroval tvar dráhy před |
přerušením), vyhnul se tunelu, znovu našel dráhu (to fungovalo dobře) a |
na podruhé projel. Byl to úspěch, ale velká časová ztráta a navíc si |
robot špatně zapamatoval dráhu pro další jízdu, protože bloudil. |
</p> |
|
<p> |
Programovali jsme místo oběda a nakonec jsme to přerušení vyřešili. |
Prostě jsme zohlednili, že dráha za přerušením může pokračovat i na |
druhou stranu. Zní to jednoduše, ale úprava programu nebyla tak |
jednoduchá, viz soutěžní verzi |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Designs/ROBOTS/Camerus/sw/#_Designs_ROBOTS_Camerus_sw_" |
>firmware</a>. |
</p> |
|
<p> |
Finálová jízda proběhla bez problémů, robot sice jel na méně jak |
polovinu regulačního rozsahu a bez našeho zásahu by se s dráhou |
dobře nevypořádal, ale jsme rádi, že dojel a nakonec stejně za to nemohl |
robot, ale my, že jsme mu naprogramovali, že dráha za přerušením nemůže |
vést na druhou stranu. Nakonec se podařilo s robotem s časem |
12,5s udělat „rekord trati“ ;-) |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/image025.jpg"><img src="Pictures/image025_small.jpg" |
alt="Robot Camerus"></a> |
<br> |
Obr. 12: Robot Camerus - finální verze robota. |
</p> |
|
<p class="Obrazek"> |
<a href="Pictures/index.2.gif"><img src="Pictures/index.1.gif" |
alt="Blokové schéma"></a> |
<br> |
Obr. 13: Blokové schéma propojení modulů robota. |
</p> |
|
<h1> Podklady </h1> |
|
<p> |
Desky plošných spojů a popis jednotlivých modulů robota naleznete na |
<a href="http://www.mlab.cz/">http://www.mlab.cz/</a> . |
</p> |
|
<h2 class="Small"> Deska procesoru </h2> |
<p> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FPIC%2FPIC16F87xSO2801A%2F#_Modules_PIC_PIC16F87xSO2801A_"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/PIC/PIC16F87xSO2801A/#_Modules_PIC_PIC16F87xSO2801A_</a> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FPIC%2FPIC16F87xDIL2801A%2F#_Modules_PIC_PIC16F87xDIL2801A_"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/PIC/PIC16F87xDIL2801A/#_Modules_PIC_PIC16F87xDIL2801A_</a> |
</p> |
|
<h2 class="Small"> H-můstky </h2> |
|
<p> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FH_Bridge%2F#_Modules_H-Bridge_"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/H_Bridge/#_Modules_H-Bridge_</a> |
</p> |
|
<h2 class="Small"> LEDbar </h2> |
|
<p> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FHumanInterfaces%2FLEDbar%2F#_Modules_LEDbar_"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/HumanInterfaces/LEDbar/#_Modules_LEDbar_</a> |
</p> |
|
<h2 class="Small"> Měnič </h2> |
|
<p> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FPowerSupply%2FBATPOWER02A%2F#_Modules_PowerSupply_BATPOWER02A_"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/PowerSupply/BATPOWER02A/#_Modules_PowerSupply_BATPOWER02A_</a> |
</p> |
|
<h2 class="Small"> IR modulátor </h2> |
|
<p> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FCommIR%2FTXIR%2F#_Modules_CommIR_TXIR_"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/CommIR/TXIR/#_Modules_CommIR_TXIR_</a> |
</p> |
|
<h2 class="Small"> Osvětlení dráhy </h2> |
|
<p> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FDesigns%2FROBOTS%2FCamerus%2FLEDpanel%2F#_Designs_ROBOTS_Camerus_LEDpanel_"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Designs/ROBOTS/Camerus/LEDpanel/#_Designs_ROBOTS_Camerus_LEDpanel_</a> |
</p> |
|
<h2 class="Small"> Univerzálka pro 7432 </h2> |
|
<p> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/Universal/UNIDIL1601A/"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/Universal/UNIDIL1601A/</a> |
</p> |
|
<h2 class="Small"> Modul trimrů </h2> |
|
<p> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FModules%2FHumanInterfaces%2FTRIMQUAD01A%2F#_Modules_TRIMQUAD01A_"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Modules/HumanInterfaces/TRIMQUAD01A/#_Modules_TRIMQUAD01A_</a> |
</p> |
|
<h2 class="Small"> Dokumentace k použitému kamerovému čipu </h2> |
|
<p> |
<a href="http://www.cmucam.org/attachment/wiki/Documentation/OV6620.PDF"> |
http://www.cmucam.org/attachment/wiki/Documentation/OV6620.PDF</a> |
</p> |
|
<h2 class="Small"> Dokumentace k US senzoru </h2> |
|
<p> |
<a href="http://www.robot-electronics.co.uk/htm/srf08tech.shtml"> |
http://www.robot-electronics.co.uk/htm/srf08tech.shtml</a> |
</p> |
|
<h2 class="Small"> Dokumentace ke kompasu </h2> |
|
<p> |
<a href="http://www.robot-electronics.co.uk/htm/cmps3doc.shtml"> |
http://www.robot-electronics.co.uk/htm/cmps3doc.shtml</a> |
</p> |
|
<h2 class="Small"> Dokumentace k robotu 3Orbis </h2> |
|
<p> |
<a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FDesigns%2FROBOTS%2F3Orbis%2F#_Designs_ROBOTS_3Orbis_"> |
http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=/Designs/ROBOTS/3Orbis/#_Designs_ROBOTS_3Orbis_</a> |
</p> |
|
|
<h2 class="Small"> Video </h2> |
|
<p> |
Videozáznam, jak Camerus jezdil při soutěži IstRobot 2007: |
<br> |
<a href="../video/1.wmv">1. jízda</a>, |
<a href="../video/2.wmv">2. jízda</a>, |
<a href="../video/3.wmv">3. jízda</a>. |
</p> |
|
</div> |
|
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> |
<!-- ============== PATIČKA ============== --> |
<div class="Footer"> |
<script type="text/javascript"> |
<!-- |
SetRelativePath("../../../../../"); |
DrawFooter(); |
// --> |
</script> |
<noscript> |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
</noscript> |
</div> |
<!-- AUTOINCLUDE END --> |
|
</body> |
</html> |