czech english

Robotem rovně 2016

John Deere X300R

Letos se konal již osmý ročník soutěže autonomních robotů a autíček pořádaný Radioklubem Písek. Stejně jako loni je tato mini reportáž především poděkování organizátorům za skvělou možnost testování robota v plenkách a doplnění informací o John Deere X300R, se kterým jsme soutěžili.

Pokud chcete prezentovat své zážitky (úspěchy i nepřekonatelné probémy) z letošního RORO2016, tak ať se mi prosím ozvěte a pomozte tak rozšířit tento článek …

John Deere X300R (CZU/TF + robotika.cz)

John Deere X300R je malý zahradní traktor (viz specifikace výrobce), který patří Technické fakultě České zemědělské univerzity v Praze. Co ale není na první pohled zřejmé, je že pod kapotou se skrývá zásadní přestavba (na hydraulicko-elektronické řízení), která otevírá cestu k realizaci autonomního mobilního robota.
pod kapotou
pod kapotou
Po pravdě projekt trošku stagnoval ačkoliv výjimku pro účast na soutěži jsme si vyprosili už loni (spalovací motory nejsou povoleny). Letos to bylo nadějnější, protože John Deere X300R měl být začátkem dubna prezentován na stánku výstavy Techagro 2016 v Brně. Ale ani to nevyšlo a vypadalo to na rezignaci. Zásluha patří Standovi Petráskovi, který dělal hlavní přestavbu traktůrku, že nás ještě s Tomášem Roubíčkem (kompletní řídicí elektronika) vyhecoval, že když ne teď, tak už asi nikdy. Verze 0 vypadala realizovatelně: cihla na pedál a propojení sedačky jako STOP tlačítko. Standa přislíbil zapůjčení přívěsu a tak se i mně otevřela cesta, jak tuto šílenost realizovat .
Spíše pro pobavení bych sem dal kopii mailu kolegům ze školy z 12/4/2016, tj. cca jeden měsíc do soutěže:
Zdravim,
registroval jsem X300R na Robotem Rovne 2016.
Standa mne presvedcil, ze to vlastne muzu dat vlastnima silama i se svoji Fabii
- prives mi pujci, pokud by skolni byl potreba a verze 0 muze vypadat takto:
1) emergency tlacitka propojena na kontakt na sedacce
2) volant chyceny gumicukem
3) cihla na plynu
a jedem . Namitky?

Mesic je takovy idealni cas na "robo-maraton" (viz FRE2012), takze - pokud se
vam ver0 nelibi, tak muze byt i lepsi.

ver 0.1:
- elektronicke rizeni plynu
- maly sick na overovani volneho mista
- maly ridici pocitac ~ Alix2016

ver 0.2:
- zapojeni Velodyne 16, pokud by do konce dubna bylo
- elektronicke zataceni

Robotum zdar
  m.
To s tou cihlou to byl spíše vtip, ale jak diváci homologace a prvního kola mohli vidět, tak jen částečně.
Do soutěže nám tedy zbývaly čtyři robotické úterky. Že jsem byl hodně naivní jsem pochopil už první úterek, kdy ani zmiňovaná verze 0 nešla otestovat/realizovat. Znamenalo by to poskládání traktoru, zapojení hadic, napuštění hydrauliky olejem, udělat pokus s cihlou a pak zase vše rozdělat, aby se dalo dál pracovat kabeláži. Teď zpětně, ostatně jako většina generálů, to vidím tak, že jsme to stejně měli udělat, viz odjezd.
Na konci dubna posílá Milan Kroulík mail A nyní hlavní zpráva, Velodyne je tu! V té době je již k dispozici i řídící počítač pro nízko-úrovňové řízení APU2, který našel a doporučil Tomáš — je to další generace počítače použitého třeba na Eduru. Tj. začátkem května si mám i já s čím hrát. Ostatně chcete-li sledovat průběh projektu, tak viz graf na gitu.

Odjezd

Původní plán byl s traktůrkem v pátek odjet na chatu, udělat ještě pár testů na louce a pak v sobotu brzy ráno vyrazit do Písku. Během dne volá Standa, ať do školy raději moc brzy se ženou nejezdím, ať se tam nenudí. Nakonec tam vyrážím sám (naštěstí) a traktůrek nacházím ještě rozdělaný, Tomáš tahá kabeláž a nevypadá to na závěrečné dokončování. Je 20:00, tj. 12h do soutěže a v rozvodech ještě není olej a celý systém se ještě nikdy nepohnul. Žádná verze nula.
Podle očekávání ani po doplnění oleje (bez něj by se po nastartování zadřelo čerpadlo a bylo by po srandě) stroj nerozjede. Trvalo asi hodinu (?) než se našly příčiny — jednak někdo prozkratoval nikoliv kabel na sedačku, ale kabel na koš, tj. STOP tlačítka jsou propojena špatně a motor okamžitě chcípá. Když bylo toto vyřešeno, tak se traktůrek stále nehýbal. Chyběl drátek na přepnutí mezi volnoběhem a normální jízdou. V mezičase Tomáš zapojuje lineární motor pro řízení plynu (všechny kabely je nutné nastavit) a já spíše dělám pomocníka Standovi … přece jenom mi přijde zbytečné teď řešit IP sítě pro Velodyne na APU2, pokud nemáme ver0.
Zkrátím to: největší problém byl dostat olej tam, kde má být (a z míst, kde nemá být) — v systému jsou i teď ještě vzduchové bubliny. Detaily, jako že hadice jsou prohozené a traktor zatáčí opačným směrem, neřešíme. Není to priorita. Když v 2:00 najíždím na rampu vozíku, tak se ozve šílená rána — spadne nepřidělaný řídící box s počítačem a baterkou, který naštěstí chytá Standa. Jsme úplně vyřízení, v 3:00 přijíždíme na chatu, 5:30 vstáváme a pokračujeme do Písku …

Homologace a 1. kolo (cihla)

Homologovali jsme se s verzí 0, tj. cihla na plyn (nebyla to žádná obyčejná cihla, před odjezdem jsem ji vytáhl ze základů boudy na traktůrek) a STOP tlačítka na zastavení. Kupodivu ani toto nebylo bez problémů: cihla byla lehká, resp. byla potřeba větší síla na stlačení pedálu. Nakonec fungovalo ji vystředěně položit na pedál a doufat, že hned nespadne.
1. kolo bylo záhy po homologaci a tak jsme se chystali scénář zopakovat. Jakžtakž to šlo, „John” ujel asi 10 metrů a vyjel vpravo. A pak nastala druhá chyba — nemohl jsem s traktůrkem odjet, i když jsem měl „plyn na podlaze”. V rámci trojité páteční přestavby totiž pedál nebyl úplně dotažený (má nastavitelnou střední polohu) a povolily se šrouby.

2. kolo (USB-serial + notebook)

Do druhého kola jsme měli cca hodinu času, tak začaly první pokusy o integraci lineárního pohonu řídícího jízdu vpřed a vzad po CAN sběrnici. Ovládání z APU2 se nám nedařilo rozchodit, tak jsme jako nouzové řešení resp. mezikrok použili k ovládání notebook a USB-serial převodník. To mi připomíná ještě jeden detail, který jsme zjistili při vybalování v Písku — Tomáš, v ranní rozespalosti, zapomněl svůj notebook s programy pro programování a ladění CAN modulů na chatě. Ve zkratce, na CAN se nedalo šahat, vše bylo třeba ošetřit přímo na řídícím počítači a ladění bylo také … netriviální.
Traktor se řídí pedálem, který ve střední poloze nic nedělá, v jednom směru uvede stroj do pohybu vpřed a ve druhém do pohybu vzad (X300R má vyvedená táhla na každý směr zvlášť). Lineární pohon zase zapnete a posouvá se jedním směrem, přepólujete a jede druhým. Pro zpětnou vazbu je tam integrovaný potenciometr, ale díky relativně dlouhému přívodu nebyl údaj zrovna stabilní. Triviální úloha se začala komplikovat. Na začátku nebylo ani jasné, který směr je dopředu a jak moc je třeba posouvat s pedály, aby se traktor rozjel. Tomáš počítal pár desítek milisekund a tak jsme první pokusné časovaní řešili jenom time.sleep(0.1) na počítači. Hodnoty z A/D převodníku celkem plavaly, ale bylo vidět, že se v průměru buď zvětšují nebo snižují. Mimochodem, bylo skvělé, že šlo s pedálem hýbat aniž by byl motor traktoru zapnutý!
Když už jsme pulzy uřídili, tak přišel ostrý test se zapnutým motorem. 100ms nic. 200ms nic … to už bylo divné, ale … zvedáme na 400ms a dokonce na 0.5s. Pokud někdo slyšel kolem 10 hodiny dopoledne velkou ránu, tak to jsme byli my. Došlo mi, že je zamáčnutý parking (na mém traktůrku na to mám kontrolku, JD ji nemá) a odblokoval jsem ho. Traktor vyskočil vpřed, ale rozvaděč s elektronikou a baterkou díky dobře namazanému posuvnému mechanismu zůstal na místě! Naštěstí kabeláž byla důkladná a udržela to. Stejně tak baterka i počítač byly v bedně přidělané, ale … Stando, proč to bylo proboha namazané?! Já vím, že říkal, že to musíme připevnit, ale kdo si to má všechno pamatovat :-(. Tak už víme, který směr je dopředu a že 500ms je opravdu hodně.
Aby traktor sám zastavil je nutné dostat pedál do střední polohy. Do druhého kola jsme to tam dostávali ručně — krátké pulzy dokud to „zhruba nesedělo” (stejně dlouhý pulz opačným směrem časem „oddriftuje”). Vyžádali jsme si možnost sedět na robotu, kdyby se náhodou traktůrek splašil, a skříň s elektronikou jsme pro všechny případy fixovali gumicukem. Soutěžní start byl zase hektický, takže se nepodařilo robota dostatečně srovnat (přeci jen 300kg snadno neposunete), a proto robot vyjel už po cca 2 metrech.

3. kolo (APU2)

Problém s ovládáním z APU2 nebyl v kabelech, jak se zprvu zdálo, ale v nastavení sériové linky. Defaultní nastavení v Linuxu (APU2) a ve Windows (notebook) se jaksi liší. Narychlo se nám to daří rozchodit, a zdá se, že to bude už ok. Ke spuštění programu je potřeba ještě notebook, ale jinak už vše běží na APU2. Pro start robota se doplnil provizorní spínač a terminál běží ve screenu, takže by nemělo vadit, že není notebook připojený. John ale neodstartoval. Připojuji narychlo notebook a zkouším znova — tady je minutové startovací okno „trošku” stres. Druhý pokus a robot vyráží. Dokonce ujel asi cca 15 metrů?? Lepšíme se.

4. kolo

Zatímco robotická špička se předhání v jakých časech dosáhnou cílených 314 metrů, my řešíme, proč nestartujeme. Upravil jsem kód, aby se pulz potvrdil, tj. pokud je poloha nedostatečná, tak dalším pulzem to posune dál … ale stále stejný problém. S otevřeným notebookem to jede, jinak ne. Zatím nerozluštěná záhada.
Do posledního kola tedy nastupujeme s otevřeným notebookem (občas do něj trošku kápne — naštěstí vody a ne oleje). Traktůrek jede krásně, prostředkem cesty, radost pohledět a na cca 25(?) metrech se zastavuje. Došel benzín.

Závěr

autor článku
autor článku
Máme příběh, jak to JD málem mohl „vyhrát” . No nic, i tak to považujeme za úspěch. Jezdilo to, nikomu to neublížilo, senzor za $8000 jsme nerozbili (ani ho nikdo neukradl) a je jasné, co je třeba dělat dál. Robotem rovně byl skvělý dead-line, který nás donutil k max výkonu a teď to nejspíše zase poleví. Skoro zvažujeme ve spolupráci se „Zemědělkou” uspořádat nějakou soutěž v sekání trávy … reálné prostředí, všichni roboti současně, asi někdy v době prázdnin. Uvidíme. Bez dead-line nic nebude … zájemci piště .

Komentáře


Odkazy