Robotické frameworky (Robotics suite)

Robotikou se zabývá spousta lidí a do dnešních dnů vzniklo velké množství podpůrných projektů pro usnadnění řešení základních problémů. Spousta z nich se nějakou částí překrývají či jsou cíleny na jiný druh problému nebo pouze vytvářejí sjednocující prostředí pro znovuvyužití a sdílení kódu mezi více lidmi.

Tyto projekty se dají rozdělit do dvou skupin podle způsobu typu programování a to na vizuální a textové. Vizuální je založeno na grafickém prostředí kde se většinou propojují krabičky s přesně definovanými rozhraními a následně po namodelování celého řešení se grafická podoba automaticky převede na spustitelný kód s možností psát i některé části textovou formou. Textové je naopak celé založené pouze na textovém programování v nějakém běžném vyšším jazyce jako například C/C++, Python, Java, Lisp atd., kde projekty pouze poskytují knihovny pro základní ovládání a řešení některých problémů.

Vizuální

Zaměřeno na neprogramátory a spíše pro vědecké pracovníky nebo děti podle typu grafického rozhraní. Rychlé naučení základů kde uživatel používá vyšší úroveň abstrakce. Roboti jsou již připraveni pro dané grafické prostředí a uživatel se nemusí vůbec starat jak nahrát vytvořený kód do robota ani o nízko úrovňové ovládání robota jako takového. Prostředí již obsahuje knihovny pro tuto činnost a zavádí určitou míru abstrakce takže lze stejný kód používat na více typech robotů. Grafická forma programu nemusí být uplně přehledná a vyžaduje větší dispej.

NI LabVIEW
  • Grafická programovací platforma vhodná pro vyšší míru abstrakce a odstínění od nízkoúrovňových věcí
  • Knihovny pro finální kód psány v C/C++ a optimalizovány pro různé platformy
  • Rychlejší vývoj aplikací s důrazem na testování
  • Od začátku kladen důraz na paralelní zpracování a realtime aplikace
  • Velká podpora zpracování signálů, matematických funkcí atd.
  • Jiný způsob programování více funkcionální
  • Lze vytvářet simulace zařízení a na nich testovat program
  • NI poskytuje i robotický HW přímo pro LabView
  • Musí se koupit licence, která je drahá 24 000Kč základní (podporuje pouze Windows) a 64 000Kč plná verze (Windows,Linux, Mac)
  • Další prostředí založená na této platformě jako ROBOLAB [1] a NXT-G [2] jež slouží pro programování Lego Mindstorms
  • Více na oficiálních stránkách [3]
  • Grafická programovací platforma vhodná pro vyšší míru abstrakce a odstínění od nízkoúrovňových věcí
  • Umožňuje tvorbu modelu, simulaci tohoto modelu, analýzu výsledků simulace a následný připojení k HW
  • Automatické generování kódu (C/C++, HDL) s možností testování a verifikace vestavěného systému
  • Snadné zobrazení dat pro analýzu
  • Podpora pro lineární i nelineární systémy případně hybridní
  • Možnost rozšířit o různé algoritmy pro zpracování obrazu, signálů atd. pomocí toolboxů
  • Licence pro studenty stojí 89USD ~ 1680Kč
  • Podpora HW platforem jako Raspberry PI, BeagleBoard, Arduino, Lego Mindstorms NXT atd.
  • Lze spustit na Windows, Linux i Mac
  • Více na oficiálních stránkách [4]

Založené na knihovnách a textovém programování

Počítá s programátorskými znalostmi a pouze usnadňuje psaní programů, protože zavádí jednotné rozhraní pro různé typy senzorů a věcí na robotovi. Se současným řešením základních problémů robotiky jako komunikace mezi procesy jednoduché asynchronní posílání zpráv nebo vyřešení základních věcí jako ovládání serv, displeje, motorů atd.

ROBOTC
  • Robotický programovací jazyk založený na jazyku C s rozšířením pro snadné robotické použití
  • Obsahuje již funkce pro ovládání motorů, čtení enkodérů atd.
  • Prostředí pro psaní a ladění kódu na platformě Windows s pokročilímy funkcemi jako dokončování názvů atd.
  • Velké množství ukázkových programů s dokumentací
  • Existují semináře na webu, video návody
  • Lze psát programy pro Lego Mindstorms NXT, Lego Mindstorms EV3, VEX Cortex, VEX PIC a Arduina
  • Robot Virtual Worlds [5] pro simulaci robota a světa okolo
  • Musí se koupit pro danou hw platformu za 79USD ~ 1 500Kč případně za 89USD ~ 1 680Kč s RVW
  • Více na officiálních stránkách [6]
Arduino
  • IDE založené na projektu processing [7] s jazykem C a rozšiřujícími knihovnami pro snadnější používání HW
  • IDE obsahuje ukázkové kódy pro nejběžnější použití
  • Snadné nahrávání vytvořeného kódu přímo do HW desky rovnou z IDE
  • Neobsahuje debugovací nástroj
  • Velký počet knihoven pro ovládání nejběžnější elektroniky jako jsou displeje, krokové motory atd.
  • Slouží pouze pro Arduino desky a kompatibilní jako Intel Galileo [8]
  • Více na oficiálních stránkách [9]
ROS
  • Framework pro vývoj robotického softwaru poskytující funkcionalitu podobnou operačnímu systému na heterogenní množině počítačů
  • Poskytuje základní komunikační mechanizmy jako služby, asynchronní a synchronní komunikaci
  • Založený na grafové architektuře kde uzly zpracovávají informace a můžou posílat, přijímat a multiplexovat zprávy z ostatních uzlů
  • Hlavní programovací jazyk je C/C++ a Python
  • Hlavně vyvýjen pod Linuxem není úplně funkční pod Windows
  • Systém instalace balíčků, který usnadňuje znovu použití jednotlivých částí robota
  • Open source projekt
  • Velké množství vytvořených balíčků pro řešení různých robotických problémů
  • Integrace s Gazebo [10] simulátorem
  • Více na oficiálních stránkách [11]
URBI
  • Open source platforma pro ovládání robotů a komplexních systémů
  • Založeno na C++ komponentové knihovně UObject a standardním API popisující motory, senzory a algoritmy
  • Poskytuje urbiscript skriptovací jazyk pro možnost slepování komponent a popis chování na vyšší úrovni podobný Pythonu s podporou paralelního zpracování a událostmi řízenou sémantikou. Dále základní komunikační mechanizmy s možností rozložení UObjectů na různé počítače propojené sítí.
  • Možnost propojení s ROS
  • UObjecty pro různé typy robotů jako například Aibo, AR Drone, Wifibot, Mindstorm NXT, Pioneer atd.
  • Lze používat na Windows, Linux i Mac
  • Více na oficiálních stránkách [12]
Microsoft Robotics Developer Studio
  • Prostředí založeno na Windows pro řízení robota a simulaci
  • Využívá .NET knihovnu pro asynchronní paralelní úkoly (tasks) s posíláním zpráv a servis-oriented runtime
  • Primární programovací jazyk je C#
  • Lze použít i vizuální programování
  • Propojený se simulátorem a některými skutečnými roboty
  • Více na oficiálních stránkách [13]

Simulátory

Gazebo
  • Open source simulátor pro více typů robotů a venkovní prostředí v 3D
  • Generuje realistickou odezvu senzorů i fyzikální interakci mezi objekty
  • Vytvořeno spousta senzorů a typů robotů
  • Propojení s ROS
  • Možnost zobrazovat Gazebo z browseru s tím, že simulace běží na serveru
  • Více na oficiálních stránkách [14]
Stage
  • Open source simulátor pro více typů robotů v 2D bitmapovém prostředí
  • Poskytuje jednoduché a výpočetně málo náročné modely robotů
  • Lze použít samostatně s kompilací řídícího kódu za běhu a připojení k libovolnému robotovi nebo s projektem Player [15] případně jako knihovna C++ simulující robota přímo v uživatelském kódu
  • Více na oficiálních stránkách [16]
Webots
  • Komerční simulátor s 3D prostředím
  • Spousta volně použitelných modelů robotů s možností vytvoření vlastního typu modelu
  • Obsahuje velkou množinu typů senzorů často používaných v robotice jako světelné senzory, dotykové, GPS, akcelerometr, motory atd.
  • Ovládání robota lze psát v C/C++, Java, Python a MATLAB
  • Možnost nahrávání simulace jako mpeg či avi video
  • Používaný pro několik online programovacích soutěží
  • Cena EDU licence je 320CHF ~ 6 700Kč
  • Více na oficiálních stránkách [17]
AnyKode Marilou
  • Komerční 3D prostředí pro tvorbu robotických modelů a následnou simulaci
  • Editační nástroj je plně grafický na způsob CADu se snadným použitím
  • Hierarchický systém pro tvorbu složitějších modelů s možností znovupoužití částí modelu
  • Spousta volně použitelných modelů robotů s možností vytvoření vlastního typu modelu
  • Obsahuje velkou množinu typů senzorů často používaných v robotice jako světelné senzory, dotykové, GPS, akcelerometr, motory atd.
  • Ovládání robota lze psát v C/C++, C++ CLI, C#, J# a VB#
  • Cena EDU licence je 199EUR ~ 5 200Kč
  • Více na oficiálních stránkách [18]
Simbad
  • Java 3D simulátor robotů pro umělou inteligenci a strojové učení
  • Není zamýšleno poskytovat simulaci skutečného světa
  • Málo senzorů jen barevná kamera, IR dálkové senzory, sonar a dotykové senzory
  • Simulace jednoho či více robotů
  • Poskytuje knihovny pro evoluční algoritmy a neuronové sítě
  • Více na oficiálních stránkách [19]

Reference