Začíname s ROS! Časť druhá – ROS

indigo_logoV prvej časti nášho seriálu sme sa zamerali na základné informácie o Ubuntu, ukázali sme si možnosti jeho inštalácie a zopár zručnosti, ktoré je nutné v Linuxe zvládnuť. V tomto článku sa okrem troch programov uľahčujúcich rutinnú prácu pozrieme nielen na samotný ROS a jeho releasy ale najmä na materiály, z ktorých sa pri štúdiu oplatí čerpať.

Začneme so sľúbenými troma programami, ktoré sa nám pri začiatkoch práce s ROS celkom osvedčili:

MidnightCommanderMidnight Commander je tradične prvý program, ktorý mnoho vývojárov  do čistého Ubuntu inštaluje. Jeho vzhľad v roku 2015 pôsobí až archaicky ale svoju primárnu funkciu – rýchly pohyb po FileSysteme a jednoduché úpravy súborov plní výborne. Pamätníkom určite pripomenie legendárny Norton Commander z ktorého mc aj vychádza.

Inštalácia:    sudo apt-get install mc

kwritelogoKWrite – Na programovanie v ROS vám stačí aj základný textový editor obsiahnutý v príslušenstve Ubuntu typu nano, gedit, vi ale prečo si neuľahčiť prácu, ak sa dá. V Ubuntu síce nie je problém nainštalovať aj štandardné programovacie IDEčka ako Eclipse či NetBeans ale pre prvé ROS programy to vôbec nie je potrebné. Osobne som si v začiatkoch programovania v ROS  mimoriadne obľúbil jednoduchý editor KWrite, ktorý využíva komponenty grafického rozhrania KDE a oproti základnému geditu ponúka zopár funkcií navyše vrátane Word completion.

Inštalácia:   sudo apt-get install kwrite

synapticSynaptic Package Manager je základný grafický nástroj na správu debian packageov v systéme. Umožňuje jednoduché vyhľadávanie, inštaláciu, aktualizáciu, odinštalovanie „balíčkov“ a mnohé ďalšie možnosti. Pre normálnu funkčnosť sú potrebné práva správcu systému (root), bez nich je Synaptic schopný len prezerať nainštalované package. Synaptic sa pre ROS používateľov výborne hodí nielen v situáciách, keď sa zúfalo snažíte rozbehať nejaký komplikovanejší package, ktorý potrebuje ďalších 12 balíčkov aby sa vôbec nainštaloval ale najmä keď zistíte, že to aj tak nefunguje a rozhodnete sa toho balastu zbaviť.

Inštalácia:  sudo apt-get install synaptic

ROS Releasy

Tak ako sme prísali v úvodnom článku, vývoj jadra a kľúčových komponentov ROS v súčasnosti zabezpečuje OSRF (Open Source Robotic Foundation). Aby sa zachovala určitá logika a poriadok vo vývoji, jednotlivé ROS verzie vychádzajú s určitým časovým odstupom (momentálne jeden rok). Zorientovať sa v poradí releasov viete jednoducho na základe počiatočných písmen, začínalo sa s Box Turtle, nasledoval  Cturtle, Diamondback, Electric, Fuerte, Groovy, Hydro, aktuálny release Indigo a v máji 2015 vychádza Jade.

S každým novým releasom je spojených niekoľko zmien, o ktorých je dobré pri tzv. migrovaní vedieť. Poslednou veľkou zmenou bol príchod catkinu v groovy release, odvtedy ide viac menej o prehadzovanie a usporiadanie rôznych knižníc v systéme.

Vývoj ROS sa prispôsobuje aj vývoju Ubuntu, kým napríklad Hydro release bol určený pre 12.04 LTS, Indigo už vyžaduje 14.04 LTS. Je možné mať na jednom Ubuntu nainštalovaných viacero releasov naraz a prepínať medzi nimi podľa potreby, ale ak nemáte nejaký špecifický dôvod, inštalujte aktuálny ROS release.

banner

Doterajšie ROS releasy

Inštalácia ROS

Nainštalovať ROS do Ubuntu je záležitosťou na pár riadkov príkazov a možno 10 – 15 minút času. Postupujte podľa základného návodu, odporúčame inštalovať desktop-full verziu, aby ste nemuseli neskôr dopľňať chýbajúce simulačné a vizualizačné package.

ROS bolo, je a bude zadarmo, ak ho ale využívate alebo plánujete využívať intenzívnejšie podporte OSRF aspoň symbolickým príspevkom. Donate Link máte aj na stránke pred návodom na inštaláciu.

Odkiaľ teda v ROS začať?

Máte na výber dve možnosti:

  • ROS Wiki Tutorials
  • ROS Books

ROS Wiki tutorials sú asi prvým zdrojom informácií, po ktorom začiatočník intuitívne siahne. Všetko podstatné pre prácu v ROS sa v nich dočítate ale celkovo sú dosť stručné a vyžadujú určité skúsenosti ak nie s ROS, tak aspoň s programovaním a CMake systémom. Ak ste úplný začiatočník, pravdepodobne budete mať pocit, že aj napriek tomu že sa cez nich prehryziete vám zopár dielikov do kompletnej „ROS skladačky“ bude chýbať. Nám sa Wiki osvedčilo ako rýchly zdroj informácií a syntaxe pri reálnej práci ale nie ako základná „učebnica“ programovania v ROS.

Druhou možnosťou sú príručky – knihy o  ROS. Oproti väčšinou stručným Wiki tutoriálom obsahujú detailnejšie vysvetlenia jednotlivých možností systému a podrobnejšie zdvôvodnenia samotných krokov. Podľa sekcie Books, na hlavnej stránke ros.org  sú v súčasnosti na trhu 4 tituly (poslednú knihu napísanú v kórejskom jazyku neuvažujeme).

ros_bookZ nich ako Jednoznačnú voľbu pre začiatočínka odporúčame Gentle Introduction to ROS od #Jason M O’Kane, ktorá je nielen zadarmo ale býva aj priebežne aktualizovaná.  V GI_to_ROS sa dozviete všetko potrebné pre prvé pokusy s ROS od inštalácie systému, cez vytvorenie catkin workspacu, prvé publishery a subscribery, launch files, services až po prácu s bagmi.  Autor zvolil ako programovací jazyk C++ a na jednoduchých príkladoch postupne vysvetľuje filozofiu a možnosti systému. Keďže sa jedná o absolútne základy ROS naozaj odporúčame všetky príklady  preprogramovať a overiť ich funkcionalitu.

learningČo sa týka ostatných príručiek, Learning ROS for Robotics Programming od Aarona Matrineza je už starší titul písaný ešte v dobe pred nástupom catkinu pre Fuerte release. Niektoré pasáže už síce nie sú neaktuálne ale nachádzajú sa tu aj zaujímavé kaptioly ako „Debugging and Visualization“  podrobne popísujúca debug v ROS s využítím gdb debuggera alebo tiež kapitola „Using Sensors and Acutators with ROS“ kde sa dočítate ako pripojiť a obsluhovať v ROS rôzny hardware od Arduina cez Kinect, cez Dynamixel servá až po IMU jednotky. Za zmienku stojí aj „Modelling and Simulation“ o práci s 3D modelmi v ROS. Celkovo je „Learning ROS for Robotics Programming“ vhodná na rozšírenie prehľadu ak už máte zvládnuté základné zručnosti ale vzhľadom na zmeny, ktoré v ROS od jej vydania nastali ju neodporúčame ako základnú príručku pre úplných začiatočníkov.

ros_by_examplePatrick Goebel sa už vyše 5 rokov sa venuje vývoju svojho „custom made“ humanoidného PI robota a dnes patrí medzi najskúsenejších programátorov v ROS . Vyskúšal v ňom takmer všetko čo sa dalo a svoje skúsenosti zhrnul v dvoch publikáciách ROS by example a ROS by Example vol.2 . Ide o najprepracovanejšie príručky, obsahujúce množstvo kódu a návodov ako pracovať s rôznymi pokročilejšími packagemi. Viacero videí a článkov je dostupných aj na jeho stránke a ak sa chystáte do náročnejších projektov oplatí sa ich pre inšpiráciu pozrieť. Zdrojové kódy v obidvoch príručkách sú napísané v Pythone, a podobne ako GI_to_ROS sú priebežne aktualizovné na najnovšie ROS releasy.

Začiatky

V ROS na sa na jednoduché experimentovanie v štýle „či to vôbec niečo robí“ používa tzv. turtlesim package. Na prvý pohľad ide o primitívnu záležitosť ale principiálne je možné pomocou tohto simulátora vyskúšať takmer všetky základné možnosti a nástroje systému. Turtlesimu si v prvých týždňoch expermientovania užijete dosýtosti, využívajú ho aj takmer všetky príklady z  GI_to_ROS.

turtle_screen2

Turtlesim a jeho rqt_graph

Prehrýzť sa v ROS začiatkami si vyžaduje značnú dávku úsilia, minimálne pár týždňov intenzívneho štúdia a experimetnovania so systémom. Čím viac však budete prenikať do tajov ROS, tým viac si budete uvedomovať jeho prínos, open-source filozofiu a najmä výhody BSD licencovania, kedy všetko, čo pod logom ROS nájdete máte k dispozícii zadarmo a bez akýchkoľvek licenčných poplatkov.

Dostať sa cez prvú fázu a nenechať sa odradiť počiatočnými neúspechmi nie je ľahké ale veríme, že s trochou trpezlivosti a ohodlania sa vám to podarí a časom sa aj Vy pripojíte ku komunite ROS vývojárov.

V tretej časti nášho seriálu sa bližšie pozrieme na buildovacie systémy a pokúsime sa odpovedať na základnú otázku s ktorou sa pri začiatkoch v ROS stretnete:  catkin vs rosbuild.

František Ďurovský