Rev Author Line No. Line
957 miho 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5 <title> Camerus </title>
6 <meta name="keywords" content="MLAB čárový robot Camerus">
7 <meta name="description" content="Čárový robot Camerus">
8 <!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE -->
9 <link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
10 <link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
11 <link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico">
12 <script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script>
13 <!-- AUTOINCLUDE END -->
14 <style type="text/css">
15 p.Obrazek {text-align: center}
16 </style>
17  
18 </head>
19  
20 <body lang="cs">
21  
22 <!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
23 <!-- ============== HLAVICKA ============== -->
24 <div class="Header">
25 <script type="text/javascript">
26 <!--
27 SetRelativePath("../../../../../");
28 DrawHeader();
29 // -->
30 </script>
31 <noscript>
32 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
33 </noscript>
34 </div>
35 <!-- AUTOINCLUDE END -->
36  
37 <!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
38 <!-- ============== MENU ============== -->
39 <div class="Menu">
40 <script type="text/javascript">
41 <!--
42 SetRelativePath("../../../../../");
43 DrawMenu();
44 // -->
45 </script>
46 <noscript>
47 <p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
48 </noscript>
49 </div>
50 <!-- AUTOINCLUDE END -->
51  
52 <!-- ============== TEXT ============== -->
53 <div class="Text">
54  
55 <p class="Title">
56 Robot CAMERUS
57 </p>
58  
59 <p class="Autor">
60 <a href="mailto:kaklik@mlab.cz">kaklik@mlab.cz</a>;
61 <a href="mailto:kakl@i.cz">kakl@i.cz</a>
62 M. Novotný
63 </p>
64  
65 <p class="Subtitle">
66 Jak se dělá robot na IstRobot
67 </p>
68  
69  
70 <p class="Subtitle">
71 <a href="Pictures/image001.jpg"><img src="Pictures/image001_small.jpg" alt="Obrázek robotu"></a>
72 </p>
73  
74 <h1> Úvodem </h1>
75  
76 <p>
77 Tato dokumentace popisuje konstrukci robota Camerus, který byl
78 zkonstruován pro soutěž IstRobot pro kategorii Stopár
79 (<a href="http://www.robotika.sk/contest/">http://www.robotika.sk/contest/</a>).
80 </p>
81  
82 <p>
83 Snažili jsme se technickou dokumentaci pojmout poněkud netradičně.
84 Kromě popisu finální verze robota zde naleznete chronologický popis
85 jeho vývoje a popis všech slepých uliček. Doufáme, že takováto forma
86 dokumentace bude mít pro naše následovníky větší hodnotu než pouhý
87 návod na zopakování konstrukce.
88 </p>
89  
90 <h1> První pokusy </h1>
91  
92 <h2> Robot 3Orbis </h2>
93  
94 <p>
95 Vývoj robota Camerus začal před více jak dvěma roky vývojem robota
96 3Orbis. Robot 3Orbis měl mít novou revoluční koncepci podvozku. Použili
97 jsme tříkolý podvozek, který měl dvě hnaná kola, každé s&nbsp;nezávislým
98 motorem a třetí kolo, které mělo řízené zatáčení. Jednalo se tedy o
99 nonholonomní podvozek. Koncepci podvozku jsme nejdříve ověřovali se
100 dvěma senzory na čáru, jako to měly naši předchozí holonomní roboti.
101 To moc nefungovalo a proto jsme přidali další senzory, pomocí kterých
102 se diskrétně nastavoval úhel zatáčecího kolečka.
103 </p>
104  
105 <p class="Obrazek">
106 <a href="Pictures/image003.jpg"><img src="Pictures/image003_small.jpg" alt="Pohled na jízdu"></a>
107 <br>
108 Obr.1: První pokusy s&nbsp;tříkolým a třímotorovým robotem
109 </p>
110  
111 <p class="Obrazek">
112 <a href="Pictures/image005.jpg"><img src="Pictures/image005_small.jpg" alt="Baterie senzorů"></a>
113 <br>
114 Obr.2: Baterie senzorů na čáru
115 </p>
116  
117 <p>
118 Přidáním dalších senzorů na čáru jsme se dostali do problémů
119 s&nbsp;počtem vstupů použitého procesoru (PIC16F88). Tento problém jsme
120 vyřešili tak, že jsme na zpracování signálů ze senzorů na čáru použili
121 další samostatný procesor. Toto řešení se však později neukázalo jako
122 výhodné, protože ladit distribuovaný kód bylo řádově obtížnější a navíc
123 se musela naprogramovat komunikace mezi procesory. Často se nám také
124 stávalo, že jsme během vývoje do jednoho procesoru nahráli kód pro
125 druhý procesor, což kupodivu vždy trvalo určitou dobu, než jsme na to
126 přišli.
127 </p>
128  
129 <p class="Obrazek">
130 <a href="Pictures/image007.jpg"><img src="Pictures/image007_small.jpg"
131 alt="Přední náhon"></a>
132 <br>
133 Obr.&nbsp;3: Přední náhon; přidáno druhé patro na elektroniku
134 </p>
135  
136 <p>
137 Původní koncepce předpokládala hnaná kola vpředu a zatáčecí kolo vzadu.
138 Modelářské servo však nedokázalo dostatečně rychle zatáčet, přestože
139 bylo zpřevodováno do rychla převodem 1:2. Změnili jsme proto uspořádání
140 na hnanou nápravu vzadu a zatáčecí kolečko vpředu. To nám umožňovalo
141 „ostře řezat zatáčky“, ale objevily se další problémy. Podvozek se
142 v&nbsp;zatáčkách dostával do smyku a protože hmotnost čidel byla
143 nezanedbatelná, docházelo i k&nbsp;jeho naklápění a následně
144 k&nbsp;falešnému signálu z&nbsp;čidel, protože čidla nebyla držena
145 v&nbsp;konstantní vzdálenosti od povrchu.
146 </p>
147  
148 <p>
149 Pro 3Orbise byla vysoustružena duralová kola, pro která bylo plánováno
150 obutí „O“ kroužky. To se pak ukázalo jako nepoužitelné. „O“ kroužky se
151 nedokázaly udržet v&nbsp;drážkách na kolech. Původní kola byla tedy
152 nahrazena plastovými z&nbsp;dětské hračky. Kola měla menší průměr, což
153 zlepšilo převodový poměr, který byl pro vyrobené převodovky 5:1. Jako
154 obutí byly použity ustřižené prsty z&nbsp;latexových rukavic pro
155 domácnost. Jako obutí zatáčecího kolečka bylo použito pryžové těsnění
156 12x10x2. Na zatáčecí kolečko bylo obuto tak, že se jelo po hraně
157 těsnění.
158 </p>
159  
160 <p class="Obrazek">
161 <a href="Pictures/image009.jpg"><img src="Pictures/image009_small.jpg"
162 alt="Zadní náhon"></a>
163 <br>
164 Obr.4: Robot 3Orbis. Zadní náhon a menší kolečka z&nbsp;autobusu od
165 syna pana Hronka.<br>
166 Je vidět čidlo na hledání hrany cihly.
167 </p>
168  
169 <p>
170 Pro detekci a objíždění cihly byly na robotovi namontovány IR senzory.
171 Jeden měl detekovat překážku na dráze a zbylé dva měly sloužit pro její
172 objetí. Objetí cihly pomocí IR senzorů jsme však nedokázali odladit.
173 Objíždění nebylo spolehlivé a tak robot nakonec objížděl cihlu
174 naslepo.
175 </p>
176  
177 <p>
178 Při soutěži se objevil nečekaný problém, kvůli kterému robot nakonec
179 nedojel. Soutěžní dráha je tvořena dvěma deskami. Desky nejsou dokonale
180 slícovány a tak mezi nimi vzniká tmavá mezera. Tato mezera byla na
181 soutěžní dráze přelepena bílou lepicí páskou. Bohužel čidla na čáru,
182 které robot používal, vyhodnocovala bílou lepicí pásku jako černou
183 (čidla pracují blízko ultrafialové oblasti). Tento problém by šel
184 kompenzovat programově, ale na soutěži se nepodařilo program
185 v&nbsp;časové tísni správně upravit. Robot tedy nakonec nedojel.
186 </p>
187  
188 <p>
189 Odhadovali jsme, že nám chyběl tak týden na odladění firmware, protože
190 v&nbsp;roce 2006 u nás byla povodeň a ztratili jsme tak nejméně jeden
191 kalendářní měsíc večerů/weekendů na programování. Nyní s&nbsp;odstupem
192 času vidíme, že co se týká objetí cihly, chybělo nám mnohem více.
193 </p>
194  
195 <h2> Robot Laserus </h2>
196  
197 <p>
198 Další verzí robota se shodným podvozkem byl robot Laserus. Snahou bylo
199 odstranit „těžká“ čidla předsunutá před robota a tak odstranit
200 překlápění v&nbsp;ostrých zatáčkách. Řešením by bylo zvětšení dosahu
201 čidel na čáru tak, aby mohla být umístěna co nejblíže k&nbsp;ose otáčení
202 robota. Zároveň by se tím snížila obvodová setrvačná hmotnost robota.
203 Znovu jsme použili tříkolý podvozek s&nbsp;jedním řízeným zatáčecím
204 kolečkem, přestože na IstRobotu 2006 byla tato konfigurace diskutována
205 a autoři druhého robota s&nbsp;podobnou koncepcí se v&nbsp;diskusi
206 vyjádřili, že to nebyl dobrý nápad, že robot při větších rychlostech má
207 snahu se rozkmitávat. Řešení tohoto problému jsme viděli ve zjemnění
208 snímání čáry tak, aby se precizněji nastavovalo zatáčecí kolečko.
209 Napadlo nás použít laserovou čtečku čárového kódu a skutečně jsme
210 postavili funkčního robota (viz Obrázek 5), který dokázal, ale pomalu,
211 jezdit po čáře.
212 </p>
213  
214 <p class="Obrazek">
215 <a href="Pictures/image011.jpg"><img src="Pictures/image011_small.jpg"
216 alt="Robot Laserus"></a>
217 <br>
218 Obr.&nbsp;5: Robot Laserus. Na obrázku je vidět červená stopa LASERu.
219 </p>
220  
221 <p>
222 Problémy s&nbsp;touto konstrukcí byly dva. Pokud byl na dráze hrbol,
223 tak se v&nbsp;důsledku vibrací zmenšil rozkmit laseru, protože laser je
224 ve čtecím zařízení rozmítáván mechanicky zrcátkem, které vibruje a
225 velké stranové zrychlení při přejetí hrbolu způsobovalo, že
226 elektromagnetický mechanismus, který pohybuje zrcátkem vypadl
227 z&nbsp;rezonance. Tento problém by ovšem zřejmě šlo kompenzovat
228 softwarem, protože se čára četla v&nbsp;obou směrech pohybu zrcátka.
229 Jednou jsme tedy dostali polohu čáry měřenou z leva a jednou z
230 prava.
231 </p>
232  
233 <p>
234 Druhý problém byl závažnější. Protože bylo použito zařízení na čtení
235 čárového kódu, snímali jsme vlastně polohu jedné čáry fiktivního
236 čárového kódu ve scanovaném prostoru. V&nbsp;prudké zatáčce však
237 dochází k&nbsp;tomu, že čáru vidí snímač šikmo a tak se relativně
238 zvětšuje její tloušťka. Vnitřní elektronika snímače vyhodnotila tento
239 stav, jako že se nejedná o čárový kód a čáru vyfiltrovala. To
240 samozřejmě mělo v&nbsp;ostré zatáčce fatální následky. Dále jsme touto
241 cestou nepokračovali, přesto, že víme, že v&nbsp;závodě DARPA se často
242 používají laserové dálkoměry. Na soutěžních vozech je však vidět, že
243 konstruktéři také mají problémy s&nbsp;odtlumením vibrací.
244 </p>
245  
246 <h1> Robot Camerus </h1>
247  
248 <p>
249 Znovu se vynořil nápad, použít pro snímání čáry kameru. To už nás
250 napadlo několikrát, ale když jsme nápad analyzovali, vždy se ukázalo, že
251 jednoduchým jednočipovým mikropočítačem nelze zpracovávat obraz kamery.
252 Druhým problémem je, že běžně dostupné kamery mají snímkový kmitočet
253 50Hz, což se nám zdálo na snímání čáry pomalé. Přesto jsme zakoupili
254 jednu kameru a začali jsme osciloskopem testovat, co tak kamera vidí a
255 jak by se to dalo zpracovat. Kupodivu jsme zjistili, že
256 s&nbsp;procesorem na 20MHz stíháme načíst jeden obrazový řádek asi
257 s&nbsp;polovičním rozlišením. To bylo povzbudivé a zaměřili jsme se
258 tímto směrem.
259 </p>
260  
261 <p>
262 Druhým problémem bylo, že kamera nesnímá kontrastní obraz. Jak se
263 vypořádat v&nbsp;jednočipovém počítači s&nbsp;tímto problémem, když
264 jeho výpočetní výkon stačí sotva na načtení řádku a ještě se musí
265 počítat regulace pro elektronický diferenciál? (Pro zvolenou koncepci
266 podvozku je nutné diferencovat otáčky motorů na hnaných nápravách.)
267 </p>
268  
269 <p>
270 Problém jsme vyřešili něčím, čemu jsme pracovně začali říkat „digitální
271 komparátor“. Jednoduše jsme pomocí logických hradel provedli OR třech
272 nejvyšších bitů jasového signálu z&nbsp;kamery. Všechno co bylo pod
273 0x1F bylo tedy černé a všechno nad bylo bílé. Expozici kamery pak bylo
274 nutné nastavit tak, aby nejsvětlejší černá čára, byla ještě černá. To
275 se udělalo snadno osciloskopem, ale pro závod bylo nutné vyvinout
276 nějakou strategii, jak robot provede určení expozice. Řešením byla
277 rutina „Expozimetr“, která postupně zvyšuje expoziční čas a hledá ve
278 snímku (samozřejmě, že v&nbsp;našem případě na jedné řádce) čáru
279 definované tloušťky. Vychází se z&nbsp;toho, že nejdříve při
280 podexponování je černý celý obrázek, pak se postupně obrázek vyjasňuje,
281 což je ovšem díky chybě apertury objektivu nerovnoměrné. Dalším
282 zvyšováním času expozice se nakonec objeví čára správné tloušťky, ta se
283 pak dále ztenčuje a nakonec je snímek přepálen a čára zmizí. Samozřejmě
284 se předpokládalo, že na startu robot čáru vidí a ta je před ním
285 přibližně uprostřed.
286 </p>
287  
288 <p>
289 První pokusy vypadaly velmi optimisticky, robot se držel čáry a vyjel
290 jenom občas. Zajímavé bylo, že robot dokázal jezdit jenom po dráze, kde
291 nebyly zatáčky doleva! Protože jsme neměli k&nbsp;dispozici obraz
292 z&nbsp;kamery, aby bylo možné zkontrolovat co kamera vidí, bylo nutné
293 tento problém řešit pouhou úvahou. Napadlo nás, že může docházet k
294 „vytrhávání obrazu“ na krajích snímku. Kompenzovalo se to tím, že se
295 zahazovaly okraje řádku a skutečně to pomohlo, robot spolehlivě, i když
296 pomalu, sledoval čáru. To byl velký úspěch, protože kdyby nám někdo
297 řekl před rokem, že to s&nbsp;kamerou a jednočipovým počítačem jde, a
298 že je to spolehlivé, asi by jsme mu nevěřili.
299 </p>
300  
301 <p>
302 Po prvotních úspěších jsme zkusili zrychlit jenže to nefungovalo, robot
303 vždy vypadl z&nbsp;dráhy, když se zatáčecí kolečko otočilo o velký
304 úhel. Napadlo nás, že to může být způsobeno proudovými špičkami, které
305 způsobuje motor serva. Pro stabilizaci napájení pro elektroniku byl
306 totiž použit lineární stabilizátor s&nbsp;velkým drop-outem. Proto jsme
307 vyvinuli měnič, který i při poklesu napětí baterií o 2V dokázal udržet
308 napětí pro řídící elektroniku a zejména kameru stabilní. Po tomto
309 vylepšení už robot dosahoval poměrně slušné rychlosti a nejzajímavější
310 bylo, že díky „velké“ rozlišovací schopnosti kamery (procesor dokázal
311 rozlišit asi 50 bodů) byla jízda v&nbsp;zatáčkách velmi plynulá.
312 </p>
313  
314 <p>
315 Problém s&nbsp;tmou v&nbsp;tunelu byl vyřešen jednoduše tak, že si
316 robot celou cestu svítil. Na osvětlení dráhy byly použity červené LED.
317 Nevíme, jaká barva pro osvětlení dráhy je nejlepší, eventuelně, jestli
318 je lepší svítit bíle. S&nbsp;tím jsme už nestihli před soutěží
319 experimentovat.
320 </p>
321  
322 <p>
323 Protože použitý procesor PIC16F876A neumí násobit a vůbec jeho
324 výpočetní výkon není omračující (kdybychom ho ale měli před lety, tak
325 by jsme si určitě nestěžovali), byl celkem problém naprogramovat
326 elektronický diferenciál na hnanou nápravu. Nakonec se to vyřešilo
327 procedurou „jakonásobení“, která kombinací rotací a podmíněného sčítání
328 provádí rychle potřebný výpočet s&nbsp;uspokojivou přesností.
329 </p>
330  
331 <p class="Obrazek">
332 <a href="Pictures/image013.jpg"><img src="Pictures/image013_small.jpg"
333 alt="Osvětlení dráhy"></a>
334 <br>
335 Obr.&nbsp;6: Měnič v&nbsp;krabičce od čaje a primitivní osvětlení dráhy.
336 </p>
337  
338 <p class="Obrazek">
339 <a href="Pictures/image015.jpg"><img src="Pictures/image015_small.jpg"
340 alt="Robot přítel člověka"></a>
341 <br>
342 Obr.&nbsp;7: Robot, přítel člověka.
343 </p>
344  
345 <p>
346 Začali jsme tedy testovat pro sledování čáry asi nejobtížnější věc,
347 dlouhou rovinku a na konci pravoúhlou zatáčku. Při dalším zvyšování
348 rychlosti začal robot v&nbsp;takové zatáčce vypadávat. Ne, že by přímo
349 vyjel a nevrátil se na dráhu, ale poloměr zatáčení byl menší než poloměr
350 zatáčky a hrozilo tedy, že v&nbsp;Bratislavě spadne ze stolu. Udělali
351 jsme předpoklad, že je to způsobeno pomalým snímkovým kmitočtem kamery,
352 než si robot stačil všimnout, že je zatáčka ostrá, zmizela mu čára ze
353 zorného pole.
354 </p>
355  
356 <p>
357 Dalším problémem bylo, že pokud bylo nerovnoměrné osvětlení dráhy,
358 vypadával kameře obraz. Kamera má sice AGC, ale samozřejmě, že je
359 schopna kompenzovat rozdíly jasu jenom v&nbsp;určitých mezích. Kupodivu
360 nebyl problém v&nbsp;tunelu, kde si robot svítí, ale velký problém byl
361 s&nbsp;denním světlem, pokud přicházelo pouze z&nbsp;jednoho směru.
362 </p>
363  
364 <p>
365 Konstrukční řešení, které následovalo, bylo doplnění dvou původních
366 modrých čidel po stranách robota na sledování čáry. Čidla byla umístěna
367 tak, že viděla čáru, až když čára byla mimo zorné pole kamery a
368 uplatňovala se pouze v&nbsp;případě, že kamera čáru nevidí. To velmi
369 zvýšilo spolehlivost sledování čáry. Zároveň jsme tato čidla použili
370 pro opětovné vyhledání čáry po objetí cihly, protože jsme se báli pro
371 tento úkol použít kameru, protože po dobu objíždění cihly kamera nevidí
372 kontrastní obrázek (nevidí čáru) a díky AGC by mohla zaznamenat stín
373 nebo špínu na trati jako čáru.
374 </p>
375  
376 <p>
377 Na objíždění cihly byl robot Camerus vybaven odometrií na pravém kole.
378 Využili jsme otvorů ve větším kole převodovky a IR závory
379 z&nbsp;tiskárny. Citlivost odometrie nebyla velká (4 impulzy na jednu
380 otáčku kolečka (12,6mm)).
381 </p>
382  
383 <h2> Jak jsme jeli „ladit“ do Vídně </h2>
384  
385 <p>
386 Vše potřebné bylo naprogramováno, robot sledoval čáru. Přerušení
387 nedělalo problémy, prostě byl výpadek obrazu a robot pokračoval
388 v&nbsp;původním směru před přerušením. Cihla byla řešena pomocí
389 odometrie. Takto vybaveni jsme odjeli do Vídně na Robot Challenge 2007.
390 Řekli jsme si, že to tam odladíme, protože jsou tam jednodušší podmínky
391 než v&nbsp;Bratislavě (alespoň na první pohled, robot může být větší a
392 tunel je také větší, takže menší robot nemusí jet tak přesně).
393 </p>
394  
395 <p>
396 Rozhodnutí ladit robota na Robot Challenge se ukázalo jako správné.
397 Podmínky totiž byly náročné. Bodové osvětlení, dráha složená
398 z&nbsp;desek s&nbsp;mezerami, styl soutěže play-off.
399 </p>
400  
401 <p>
402 Camerus určitě jezdil nejrychleji, ale nedokázal objet cihlu! Jednou se
403 stalo, že uviděl mezeru mezi deskami, podruhé mu zřejmě proklouzlo
404 kolečko s&nbsp;odometrií, prostě katastrofa! Alespoň, že byl třetí
405 v&nbsp;paralelním slalomu, to jsme mu ale zavinili my, protože jsme mu
406 při zkoušení objetí cihly stáhli výkon motorů a pak jsme na to
407 zapomněli. Za třetí místo tedy nemohl robot, ale lidský faktor.
408 </p>
409  
410 <p>
411  
412 <p class="Obrazek">
413 <a href="Pictures/image017.jpg"><img src="Pictures/image017_small.jpg"
414 alt="Robot Challenge 2007"></a>
415 <br>
416 Obr.&nbsp;8: Robot Challenge 2007, Parallel Slalom.
417 <br>
418 Robot Camerus na dráze číslo 1. Na dráze jsou patrné stíny od bodového
419 osvětlení.
420 </p>
421  
422 <p class="Obrazek">
423 <a href="Pictures/image019.jpg"><img src="Pictures/image019_small.jpg"
424 alt="Příprava"></a>
425 <a href="Pictures/P3180028.JPG"><img src="Pictures/P3180028_small.JPG"
426 alt="Jízda"></a>
427 <br>
428 Obr.&nbsp;9: Robot Camerus na Robot Challenge 2007.
429 <br>
430 Robot nemá dostatek čidel na bezpečné objetí překážky.
431 </p>
432  
433 <p>
434 Jednoznačně se ukázalo, že objíždět překážku „napůl naslepo“ není dobrá
435 strategie a zejména, pokud je odometrie na hnané nápravě.
436 </p>
437  
438 <h2> Co s&nbsp;cihlou? </h2>
439  
440 <p>
441 Další vývoj jsme věnovali objíždění cihly za pomoci čidel. Jaká čidla
442 ale použít? Měli jsme špatné zkušenosti s&nbsp;IR čidly z&nbsp;3Orbise
443 a roboty s&nbsp;ultrazvukem jsme zase na minulých ročnících viděli, že
444 si spletli tunel s&nbsp;cihlou, případně neviděli cihlu, pokud se
445 k&nbsp;ní blížili zešikma.
446 </p>
447  
448 <p>
449 Nevěděli jsme co s&nbsp;tím a tak jsme začali zkoušet. Měřili jsme, co
450 „vidí“ ultrazvuk a co různá optická čidla. Při měření se ukázaly
451 všechny předpokládané problémy. Ultrazvuk vidí kde co, jenom ne cihlu,
452 když je šikmo. IR snímač vidí cihlu sice spolehlivě, ale stejně dobře
453 jako velkou bílou zeď několik metrů daleko. Nakonec byla pro cihlu
454 zvolena kombinace sedmi senzorů. Skutečně čtete dobře, sedmi! Jeden IR
455 senzor vpředu na detekci přiblížení se k&nbsp;cihle. Funguje na
456 principu triangulace. IR vysílací dioda má úzkou hliníkovou trubičkou
457 zúžen paprsek, aby nedocházelo k&nbsp;jeho integraci na velké vzdálené
458 ploše. Další dva senzory jsou mikrospínače na mechanickém nárazníku,
459 kdyby se stalo, že triangulační čidlo cihlu přehlédne. To se může stát
460 v&nbsp;prudké zatáčce. Z&nbsp;boku jsou pak ultrazvukový senzor a
461 on/off dálkoměr s&nbsp;červenou LED. Tyto čidla udržují konstantní
462 vzdálenost od cihly při jejím objíždění. K&nbsp;tomu ještě již zmíněná
463 odometrie na pravém kolečku, která zajišťuje prudkou zatáčku doleva
464 jakmile je cihla detekována a nakonec kompas, který zabraňuje, aby se
465 robot vracel zpět po trati (to se může stát, protože mezi předním
466 čidlem a bočními čidly je slepý úhel).
467 </p>
468  
469 <p>
470 Přidání dalších čidel se neobešlo bez konstrukčních problémů. Boční LED
471 čidlo se ukázalo jako málo citlivé a bylo to zřejmě způsobeno tím, že
472 se jedná o průmyslové čidlo, které je normálně napájeno napětím 12 až
473 48V. S&nbsp;naším napájecím napětím 7,2V a to ještě občas, nebylo moc
474 spokojeno. Byl tady přidán další měnič nahoru na 12V. Byl použit měnič
475 ze staré síťové karty.
476 </p>
477  
478 <p>
479 Samostatným konstrukčním problémem bylo umístění kompasu. Nakonec musel
480 být kompas umístěn nad všechny desky s elektronikou a musel být
481 orientován tak, aby čidla kompasu byla pod úhlem 45° k ose robota. Pokud
482 byla čidla v ose robota, byl kompas ovlivňován zbytkovým magnetickým
483 polem v kovových (zejména železných) částech robota.
484 </p>
485  
486 <h2> Poslední weekend před soutěží </h2>
487  
488 <p>
489 Přidání kompasu na I2C sběrnici si vyžádalo přeadresaci kamery, protože
490 kamera a kompas měly na I2C sběrnici stejnou adresu a adresa kompasu se
491 nedala změnit. To kupodivu byl velký problém, který jsme řešili až
492 poslední weekend před soutěží a přitom vyžadoval tak zásadní zásah jako
493 rozebrání objektivu kamery, což znamenalo pečlivé čištění pouzdra a čipu
494 kamery, protože případné smítko na pouzdře čipu by mělo při soutěži
495 fatální následky. Čip kamery sice přeadresaci umí, ale bylo nutné
496 připojit vývod MULT (47) na log_1 a na to kupodivu na plošném spoji
497 kamery nebylo pamatováno, přesto, že na plošném spoji jsou plošky na
498 odpory, které umožňují změnu adresy.
499 </p>
500  
501 <p class="Obrazek">
502 <a href="Pictures/image021.jpg"><img src="Pictures/image021_small.jpg"
503 alt="Úprava kamery"></a>
504 <br>
505 Obr.&nbsp;10: Propojka na PCB kamery umožňující její přeadresaci.
506 </p>
507  
508 <p>
509 Poslední weekend před soutěží nás napadlo ještě jednou projít seznam
510 problémů, které jsme si poznamenali v&nbsp;průběhu loňské soutěže.
511 Hned na začátku tam bylo: „Zkontrolovat, jestli neprokluzují kolečka na
512 hřídeli.“ Prokluzovala... Zkusili jsme je přilepit anaerobním lepidlem.
513 Výsledek byl, že se zalepily hřídelky do ložisek a kolečka prokluzovala
514 dál. Zkusili jsme je přilepit epoxidem. Naneštěstí nám trochu epoxidu
515 zřejmě nateklo do ložisek a kolečka se zase utrhla. Poslední neděli
516 před soutěží jsme tedy měli zatuhlé převodovky a kolečka prokluzovala.
517 Snažili jsme se do hřídelek vyvrtat dírky a dát tam kolík, ale vrták
518 vůbec nitridovanou ocel z&nbsp;CD mechanik nebral. Nakonec jsme do
519 hřídelek pouze vypilovali drážky a opět jsme je zalili epoxidem. Jestli
520 neprokluzují, jsme pro jistotu už nezkoušeli.
521 </p>
522  
523 <p>
524 Při manipulaci s pravou převodovkou se podařilo ulomit vývod od IR
525 závory na odometrii. Protože nešla vyměnit (je zalepená v pŕevodovce) a
526 nechtěli jsme měnit celou převodovku, natavili jsme její pouzdro pájkou
527 a drátek přiletovali na pahýl vývodu.
528 </p>
529  
530 <p>
531 Po rozebrání bylo nutné převodovky nechat znovu zaběhnout, to jsme
532 dělali přes noc z&nbsp;pondělí na úterý (IstRobot bývá ve středu a my
533 tam obvykle jedeme v&nbsp;úterý dopoledne). Motory se točily do rána do
534 poslední chvíle před naložením robota do auta.
535 </p>
536  
537 <h2> Noc před soutěží </h2>
538  
539 <p>
540 „Kdyby nebylo poslední noci, tak není žádný projekt dokončen.“
541 Odpoledne jsme přijeli do Bratislavy na ubytovnu, rozložili dráhy a
542 začali ladit poslední řádky programu. V&nbsp;našem případě to mělo být
543 zpracování logu z&nbsp;jízdy.
544 </p>
545  
546 <p>
547 A vůbec to nejezdilo. Robot měl malý výkon v&nbsp;levotočivé zatáčce,
548 při objíždění cihly se dokonce občas zastavil. No jasně, řekli jsme si,
549 jsou stále zatuhlé převodovky, změnili jsme pár konstant
550 v&nbsp;programu a jakš takš to zase jezdilo. Situace se ale o půlnoci
551 zase zhoršila a začal smrdět H-můstek. Vyměnili jsme tedy H-můstek a
552 nepomohlo to. Vyměnili jsme tedy motor a pomohlo to! (Pozdější analýzou
553 záznamu použitého dílu bylo zjištěno, že motor č.2 byl použit spolu s
554 původním podvozkem na výstavě Vzdělání a Řemeslo v Českých
555 Budějovicích, kde byla levotočivá trať a jeho provozní doba tak
556 vzrostla o desítky hodin proti motoru č.1&nbsp;.) Po výměně motoru jsme
557 vrátili do robota původní H-můstek (asi tak v&nbsp;jednu hodinu ráno)
558 a zase to nejelo. Měřením jsme pak zjistili dvě věci, jednak byly přes
559 pájecí lak odizolovány zemnící šrouby na plošném spoji H-můstku a tak
560 všechen proud tekl přes hřebínkový konektor a pak tam ještě byl zkrat
561 přes jeden tranzistor H-můstku, takže jeden motor nereverzoval.
562 Představte si, že tyto závady byly vykompenzovány jednak regulátorem
563 v&nbsp;software a také koncepcí podvozku, a že s&nbsp;nimi byl Camerus
564 na Robot Challenge třetí!
565 </p>
566  
567 <p>
568 Pak už jenom stačilo doprogramovat tu logovací proceduru (přepisovala
569 paměť). A kolem páté hodiny ranní byl robot připraven na soutěž.
570 </p>
571  
572 <h2> IstRobot 2007 </h2>
573  
574 <p>
575 IstRobot 2007 nás skutečně překvapil, byla na něm z&nbsp;našeho pohledu
576 nejsložitější dráha, jakou jsme kdy viděli. Extrémně dlouhé přerušení,
577 navíc v&nbsp;inflexním bodě (to nás vůbec nenapadlo, že je možné),
578 cihla hned za pravoúhlou zatáčkou (sotva robot vyjede ze zatáčky, bác,
579 a je tu cihla), viz Obrázek 11.
580 </p>
581  
582 <p class="Obrazek">
583 <a href="Pictures/image023.jpg"><img src="Pictures/image023_small.jpg"
584 alt="IstRobot 2007"></a>
585 <br>
586 Obr.&nbsp;11: IstRobot 2007 – tvar dráhy.
587 </p>
588  
589 <p>
590 Potenciálním problémem byly magnetické stojánky na kterých stála čidla
591 časomíry. Magnetické pole nad dráhou bylo díky nim značně nehomogenní
592 (stojánek na Obr.&nbsp;11 vlevo dole a dva stojánky na startu). Robot
593 využíval kompas pouze u cihly, a zřejmě byl stojánek dostatečně
594 daleko/blízko, že nakonec nevadil. Údaje z kompasu se zpracovávaly
595 diferenčně, takže nevadilo, že byla díky stojánkům odchylka v celkové
596 orientaci magnetického pole Země, podstatné bylo, aby nedocházelo k
597 velkým zakřivením pole v oblasti cihly. K čemuž, jak jsme změřili,
598 částečně docházelo, ale software se s tím vypořádal, když vážil údaje
599 ze všech čidel při objíždění překážky.
600 </p>
601  
602 <p>
603 Obtížnost trati se ukázala hned v&nbsp;první jízdě, Camerus vypadnul na
604 přerušení. V&nbsp;druhé jízdě jsme snížili výkon motorů, zde ale zase
605 hrozilo, že se robot nerozjede, pokud někde (například při objíždění
606 cihly) výrazně zpomalí. Robot jel plynuleji, přesto vyjel
607 v&nbsp;přerušení (to dá rozum, protože kopíroval tvar dráhy před
608 přerušením), vyhnul se tunelu, znovu našel dráhu (to fungovalo dobře) a
609 na podruhé projel. Byl to úspěch, ale velká časová ztráta a navíc si
610 robot špatně zapamatoval dráhu pro další jízdu, protože bloudil.
611 </p>
612  
613 <p>
614 Programovali jsme místo oběda a nakonec jsme to přerušení vyřešili.
615 Prostě jsme zohlednili, že dráha za přerušením může pokračovat i na
616 druhou stranu. Zní to jednoduše, ale úprava programu nebyla tak
617 jednoduchá, viz soutěžní verzi
618 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Designs/ROBOTS/Camerus/sw/#_Designs_ROBOTS_Camerus_sw_"
619 >firmware</a>.
620 </p>
621  
622 <p>
623 Finálová jízda proběhla bez problémů, robot sice jel na méně jak
624 polovinu regulačního rozsahu a bez našeho zásahu by se s&nbsp;dráhou
625 dobře nevypořádal, ale jsme rádi, že dojel a nakonec stejně za to nemohl
626 robot, ale my, že jsme mu naprogramovali, že dráha za přerušením nemůže
627 vést na druhou stranu. Nakonec se podařilo s&nbsp;robotem s&nbsp;časem
628 12,5s udělat „rekord trati“ ;-)
629 </p>
630  
631 <p class="Obrazek">
632 <a href="Pictures/image025.jpg"><img src="Pictures/image025_small.jpg"
633 alt="Robot Camerus"></a>
634 <br>
635 Obr.&nbsp;12: Robot Camerus - finální verze robota.
636 </p>
637  
638 <p class="Obrazek">
639 <a href="Pictures/index.2.gif"><img src="Pictures/index.1.gif"
640 alt="Blokové schéma"></a>
641 <br>
642 Obr.&nbsp;13: Blokové schéma propojení modulů robota.
643 </p>
644  
645 <h1> Podklady </h1>
646  
647 <p>
648 Desky plošných spojů a popis jednotlivých modulů robota naleznete na
649 <a href="http://www.mlab.cz/">http://www.mlab.cz/</a>&nbsp;.
650 </p>
651  
652 <h2 class="Small"> Deska procesoru </h2>
653 <p>
654 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=%2FModules%2FPIC%2FPIC16F87xSO2801A%2F#_Modules_PIC_PIC16F87xSO2801A_">
655 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Modules/PIC/PIC16F87xSO2801A/#_Modules_PIC_PIC16F87xSO2801A_</a>
656 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=%2FModules%2FPIC%2FPIC16F87xDIL2801A%2F#_Modules_PIC_PIC16F87xDIL2801A_">
657 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Modules/PIC/PIC16F87xDIL2801A/#_Modules_PIC_PIC16F87xDIL2801A_</a>
658 </p>
659  
660 <h2 class="Small"> H-můstky </h2>
661  
662 <p>
663 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=%2FModules%2FH_Bridge%2F#_Modules_H-Bridge_">
664 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Modules/H_Bridge/#_Modules_H-Bridge_</a>
665 </p>
666  
667 <h2 class="Small"> LEDbar </h2>
668  
669 <p>
670 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=%2FModules%2FHumanInterfaces%2FLEDbar%2F#_Modules_LEDbar_">
671 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Modules/HumanInterfaces/LEDbar/#_Modules_LEDbar_</a>
672 </p>
673  
674 <h2 class="Small"> Měnič </h2>
675  
676 <p>
677 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=%2FModules%2FPowerSupply%2FBATPOWER02A%2F#_Modules_PowerSupply_BATPOWER02A_">
678 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Modules/PowerSupply/BATPOWER02A/#_Modules_PowerSupply_BATPOWER02A_</a>
679 </p>
680  
681 <h2 class="Small"> IR modulátor </h2>
682  
683 <p>
684 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=%2FModules%2FCommIR%2FTXIR%2F#_Modules_CommIR_TXIR_">
685 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Modules/CommIR/TXIR/#_Modules_CommIR_TXIR_</a>
686 </p>
687  
688 <h2 class="Small"> Osvětlení dráhy </h2>
689  
690 <p>
691 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=%2FDesigns%2FROBOTS%2FCamerus%2FLEDpanel%2F#_Designs_ROBOTS_Camerus_LEDpanel_">
692 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Designs/ROBOTS/Camerus/LEDpanel/#_Designs_ROBOTS_Camerus_LEDpanel_</a>
693 </p>
694  
695 <h2 class="Small"> Univerzálka pro 7432 </h2>
696  
697 <p>
698 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Modules/Universal/UNIDIL1601A/">
699 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Modules/Universal/UNIDIL1601A/</a>
700 </p>
701  
702 <h2 class="Small"> Modul trimrů </h2>
703  
704 <p>
705 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=%2FModules%2FHumanInterfaces%2FTRIMQUAD01A%2F#_Modules_TRIMQUAD01A_">
706 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Modules/HumanInterfaces/TRIMQUAD01A/#_Modules_TRIMQUAD01A_</a>
707 </p>
708  
709 <h2 class="Small"> Dokumentace k&nbsp;použitému kamerovému čipu </h2>
710  
711 <p>
712 <a href="http://www.cmucam.org/attachment/wiki/Documentation/OV6620.PDF">
713 http://www.cmucam.org/attachment/wiki/Documentation/OV6620.PDF</a>
714 </p>
715  
716 <h2 class="Small"> Dokumentace k&nbsp;US senzoru </h2>
717  
718 <p>
719 <a href="http://www.robot-electronics.co.uk/htm/srf08tech.shtml">
720 http://www.robot-electronics.co.uk/htm/srf08tech.shtml</a>
721 </p>
722  
723 <h2 class="Small"> Dokumentace ke kompasu </h2>
724  
725 <p>
726 <a href="http://www.robot-electronics.co.uk/htm/cmps3doc.shtml">
727 http://www.robot-electronics.co.uk/htm/cmps3doc.shtml</a>
728 </p>
729  
730 <h2 class="Small"> Dokumentace k&nbsp;robotu 3Orbis </h2>
731  
732 <p>
733 <a href="http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=%2FDesigns%2FROBOTS%2F3Orbis%2F#_Designs_ROBOTS_3Orbis_">
734 http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&amp;path=/Designs/ROBOTS/3Orbis/#_Designs_ROBOTS_3Orbis_</a>
735 </p>
736  
737  
738 <h2 class="Small"> Video </h2>
739  
740 <p>
741 Videozáznam, jak Camerus jezdil při soutěži IstRobot 2007:
742 <br>
743 <a href="../video/1.wmv">1.&nbsp;jízda</a>,
744 <a href="../video/2.wmv">2.&nbsp;jízda</a>,
745 <a href="../video/3.wmv">3.&nbsp;jízda</a>.
746 </p>
747  
748 </div>
749  
750 <!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
751 <!-- ============== PATIČKA ============== -->
752 <div class="Footer">
753 <script type="text/javascript">
754 <!--
755 SetRelativePath("../../../../../");
756 DrawFooter();
757 // -->
758 </script>
759 <noscript>
760 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
761 </noscript>
762 </div>
763 <!-- AUTOINCLUDE END -->
764  
765 </body>
766 </html>