Zásady pro autonomní mobilní robotiku

Na diskuzním fóru Robodoupěte proběhla v roce 2015 diskuze o tom, jak předávat zkušenosti úspěšných hobby robotiků mezi sebou navzájem a také jak je nejlépe předat začínajícícm robotikům (aby všichni nemuseli znovu a znovu prošlapávat "slepé cestičky" a abychom se všichni mohli posunout na vyšší robotickou úroveň). Výsledkem té diskuze jsou stručné robotické zásady, popsané pomocí kontrolního seznamu potřebných vlastností robota a pomocí několika ověřených doporučení. Takže.

Před soutěží typu RoboTour si u svého robota zkontrolujte že:
- robot umí jet i s nákladem rychlostí 0,5 m/s do svahu, travou a přes výmoly
- robot dokáže samostatně a naráz ujet alespoň 1 km a fungovat alespoň hodinu
- robot dokáže spolehlivě zabránit srážce s překážkou v každém směru pohybu
- robot má dostatečně dimenzované napájení a je pečlivě odrušen
- robot (včetně elektroniky) spolehlivě funguje v dešti, blátě, chladu i horku
- robot obsahuje přesný kompas, odometrii, dálkoměry, GPS a počítačové vidění
- počítačové vidění robota umí spolehlivě poznat cestu (za různých podmínek)
- robot obsahuje solidní mapu sjízdných cest (z Open Street Map)
- robot umožňuje snadno, rychle a přesně zadat trasu, kontrolní body a cíl
- robot umí určit přesný reálný čas a odstartovat v předem stanovenou dobu
- robot umí směřovat k cíli přes průjezdní body, po cestě a mimo překážky
- robot si dokáže poradit s křižovatkami a různými světelnými podmínkami
- robot umí u cíle vyložit náklad a pak se vrátit zpět ke startu
- kompletní robot je důkladně otestován venku za různého počasí

Komu robot spolehlivě plní všechny uvedené body, ten má velmi dobrou šanci na výborné umístění v RoboTour (měl by dokonce splnit hlavní cíl soutěže [dopravit náklad do cíle], což je zatím těžší, než vyhrát). Současně je robot dobře připraven i na soutěže Robotem rovně a RoboOrienteering.

Při konstrukci vhodného robota použijte ověřená řešení a doporučení, např. tato:
- inspirujte se informacemi dostupnými na internetu (a navažte na ně svou originalitou)
- postupujte po menších krocích (pořádně dokončených)
- snažte se dělat všechno co nejjednodušší (je to pak zvládnutelnější)
- co nedokážete nebo nechcete sami postavit, to kupte hotové (kvalitní)
- stavbu usnadňuje modularita dílů ("skládačka")
- základem je robustní a spolehlivý podvozek s jasně definovaným rozhraním
--- cílem je co nejdokonalejší hardware (přesný, silný, odolný)
--- velkou pozornost věnujte odrušení všech motorů a elektroniky
--- použijte samostatnou baterii pro motory a samostatnou pro elektroniku
--- používejte kompas kompenzovaný náklonem (odvozeným z gyra a akcelerometru)
--- magnetometr umístěte co nejdál od motorů
- řídicí systém je vhodné rozdělit do dvou úrovní
--- nižší úroveň je v podvozku, řídí motory, brání srážkám a bere povely shora
--- vyšší úroveň naviguje podle mapy, GPS a kamery a poveluje podvozek
- řídicím systémem nižší úrovně může být Arduino nebo podobné systémy
- řídicím systémem vyšší úrovně může být malý počítač, notebook, tablet nebo mobil
- rozhraní mezi oběma úrovněmi udělejte obousměrné (povely dolů, telemetrie nahoru)
- jako senzory použijte AHRS/IMU, sonary, GPS, kameru a/nebo lidar
- kameru umístěte co nejvýš (z nadhledu je všechno přehlednější)
- nechte systém zapisovat do logu všechny podstatné informace (a logy pak důkladně analyzujte)
- při vývoji SW používejte hotové knihovny, frameworky a hotové části kódu (aby SW zůstal přehledný)
- řídicí algoritmus musí být spolehlivý, přesný a pružný (reagující na změny)
--- nejprve určete trasu (definujte průjezdní body) a odvoďte itinerář (odbočky)
--- čekejte na určený startovní čas a teprve pak vozidlo rozjeďte (v RoboTour)
--- základní požadovaný směr jízdy určete pomocí mapy, kompasu, odometrie a GPS
--- směr jízdy průběžně upřesňujte podle spolehlivé detekce cesty (okrajů cesty)
--- vždy je třeba rychle a přesně reagovat na překážky (zastavení, změna směru) [překážky mohou být i pohyblivé (lidé, ostatní roboti)]
--- směřujte k nejbližšímu průjezdnímu bodu (a přitom hlídejte překážky a okraje cesty)
--- po dosažení průjezdního bodu začněte směřovat k následujícímu bodu trasy
--- na křižovatkách se orientujte i podle směru odbočení daného itinerářem (a přitom dávejte pozor na okraj cesty)
--- rozpoznejte problémy s dosažením průjezdního bodu a vhodně reagujte (přeplánujte další trasu)
--- u cíle (nebo v označeném kontrolním bodu) je třeba vyložit náklad (nebo zvukově oznámit nutnost ručního vyložení nákladu)
- udržujte si dobrou dokumentaci a podělte se o svoje výsledky a zkušenosti s ostatními
- sami si vyberte směr, kterým v robotice půjdete, protože hobby robotika vás musí hlavně bavit

Další poznámky:
- outdoorových soutěží se účastněte v pořadí Robotem rovně, Roboorienteering, RoboTour
- v Robotem rovně mohou být u cesty i stolky a židle, okraj cesty není zřetelný, na trase je řada křižovatek a "náměstíčko"
- v soutěži RoboOrienteering je vhodné u kontrolního bodu hledat oranžový kužel (pro upřesnění pozice pro vyložení nákladu [uvolnění golfového míčku])
- v RoboTour je velkou záludností úvodní "tlačenice" (všichni roboti startují současně a nesmí se srazit, a ani při vzájemném vyhýbání vyjet z cesty)

Všechny zásady a doporučení vypadají rozsáhle a složitě, ale lze postupovat i velmi jednoduše a levně. Vývoj si hodně usnadníte a urychlíte např. tehdy, pokud podvozek uděláte přestavbou RC modelu (nebo dětského elektrického autíčka) a jako vyšší řídicí systém použijete mobil (dnes už běžně obsahují bluetooth, kameru, GPS a dají se dobře programovat). Tento postup jsem osobně zvolil a mám s ním dobré zkušenosti.

Přeji všem hodně radosti s hobby robotikou.