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 |
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 |