MRBT ROS Robot Operating System Tomáš Florián
OSNOVA 1. Co je ROS představení systému. 2. ROS přehled distribucí. 3. ROS základní členění a principy funkce. 4. ROS knihovny, nástroje a ovladače. 5. ROS roboty.
CO JE ROS? - Operační systém pro roboty, - poskytuje knihovny a nástroje pro podporu vývojářům, - poskytuje ovladače zařízení, vizualizaci, přeposílání zpráv, správu balíčků a mnoho dalšího, - je zcela otevřený a komerčně přívětiví (BSD licence), - kdokoliv ho může používat, měnit a využít pro svoje produkty, - cílem komunity je umožnit rychlé vyvíjení robotických aplikací na běžných platformách. - www.ros.org
CO JE ROS? - Autorem systému je Morgan Quigley (Open Source Robotics Foundation) a společnost Willow Garage (výrobce robotů PR2, Turtlebot a Texai). - Vychází ze zkušeností z projektů STAIR (Stanford AI Robot) a PRP (Personal Robots Program). - Od začátku navržen pro spolupráci při vývoji, integraci software třetích stran (OpenCV, Orocos), multijazykovou podporu (C++, Python, Java, LISP, Octave, Lua, ) a efektivní peer-to-peer komunikaci mezi různými systémy a sítěmi.
ROS DISTRIBUCE - ROS Box Turtle (březen, 2010) - ROS C Turtle (srpen, 2010) - ROS Diamondback (březen, 2011) - ROS Electric (srpen, 2011) - ROS Fuerte (duben, 2012) - ROS Groovy (prosinec, 2012) - ROS Hydro Medusa (září, 2013) - ROS Indigo Igloo (očekává se v květnu, 2014) - využívá se verzování (GitHub, SVN, )
ROS BOX TURTLE - První verze, - představena 2. března 2010, - intenzivní uživatelské testování, - intenzivní testování na robotech, - zaměřena především na Ubuntu Hardy, - podpora Red Hat, Debian, Gentoo, - limitovaná podpora Mac OS X, - 60 ROS balíčků rozdělených do tří variant (base, pr2, pr2all).
ROS C TURTLE - Druhá verze, - představena 2. srpna 2010, - aktualizace knihoven z předchozí verze, - přidán RVIZ (vizualizace), - zaměřena především na Ubuntu Jaunty, - podpora Red Hat, Debian, Gentoo, - limitovaná podpora Mac OS X a FreeBSD, - téměř 80 ROS balíčků rozdělených do tří variant (base, pr2, pr2all).
ROS DIAMONDBACK - Třetí verze, - představena 2. března 2011, - přes 40 nových balíčků, - přidána podpora Kinectu a integrace Point Cloud Library, - menší a jednodušší na instalaci, - rozrůstající se komunita ROS nadšenců, - zaměřena především na Ubuntu Lucid, - podpora Red Hat, Debian, Gentoo, - limitovaná podpora Mac OS X a FreeBSD, - přes 120 ROS balíčků rozdělených do tří variant (desktop-full, desktop, ros-base).
ROS ELECTRIC EMYS - Čtvrtá verze, - představena 30. srpna 2011, - zrychlení systému a jeho odlehčení, - podpora platform Android a Arduino, - zaměřena především na Ubuntu Lucid, - podpora Red Hat, Debian, Gentoo, - limitovaná podpora Mac OS X, FreeBSD, Android, Windows.
ROS FUERTE TURTLE - Pátá verze, - představena 23. dubna 2012, - jednodušší integrace s ostatními softwarovými frameworky a nástroji, - aktualizace stávajících knihoven, - nové nástroje pro vývojáře, - odebrání zastaralých knihoven, - zaměřena především na Ubuntu Lucid, - podpora Red Hat, Debian, Gentoo, - limitovaná podpora Mac OS X, FreeBSD, Android, Windows.
ROS GROOVY GALAPAGOS - Šestá verze, - představena 31. prosince 2012, - zaměřena na vnitřní infrastrukturu ROS, - práce napříč velkým množstvím pc/hw, - knihovny jádra přesunuty na GitHub, - zaměřena především na Ubuntu 12.04, - podpora Red Hat, Debian, Gentoo, - limitovaná podpora Mac OS X, FreeBSD, Android, Windows.
ROS HYDRO MEDUSA - Sedmá verze, - představena 4. září 2013, - zaměřena na převod balíčků do catkin systému, - vylepšeny nástroje jako rviz a rqt, - integrace knihovny GAZEBO, - zaměřena především na Ubuntu 12.04, - podpora Red Hat, Debian, Gentoo, Mac OS X, FreeBSD, Android, Windows.
ROS ZÁKLADNÍ ROZDĚLENÍ - ROS CORE (JÁDRO) - ROS NODES (UZLY) - ROS TOPICS (TÉMATA) - ROS MESSAGES (ZPRÁVY)
ROS JÁDRO (CORE) - Může být jen jedno. - Spouští se příkazem ROSCORE. - Registrace služeb. - Registrace jmen UZLŮM. - Kontaktování UZLŮ mezi sebou. - Bez něj by UZLY nemohly komunikovat a vyměňovat si ZPRÁVY.
ROS UZLY (NODES) - UZEL je proces, který provádí výpočet. - UZLY jsou spojeny do grafů a navzájem spolu komunikují. - Jeden robot má typicky několik (desítek) UZLŮ. - Každý UZEL má unikátní jméno, které ho jednoznačně identifikuje v systému.
ROS TÉMATA (TOPICS) - TÉMA je název sběrnice, po které spolu UZLY komunikují. - TÉMATA mají oddělené posílání a přijímání informací. - Kdokoliv se může k libovolnému TÉMATU připojit a posílat nebo přijímat ZPRÁVY. - Obecně platí, že UZLY nevědí s jakým jiným UZLEM komunikují (zajímají je pouze názvy TÉMAT). - TÉMATA jsou výhradně jednosměrné kanály (žádné potvrzování).
ROS ZPRÁVY(MESSAGES) - Každé TÉMA je definované ZPRÁVOU. - ZPRÁVA určuje proměnné a jejich strukturu. - UZLY mohou přijímat pouze zprávy, které znají. - Odkaz na web
ROS STRUKTURA
ROS ROSBASH - Často jen předpona ROS + příkaz ekvivalentní příkazu z Linuxu: - rosls seznam souborů, - roscd změna adresáře místního jména nebo balíčku, - rosed editace souboru, - roscp kopírování souborů. - rosmake nástroj pro překlad projektu. - doplňování a nápověda při stisku TAB.
ROS BALÍČKY (ROSBUILD) - Příkaz roscreate-pkg, - velmi jednoduché vytváření nových balíčků, - automatické přidání potřebných knihoven, - není potřeba kopírovat starý projekt a přepisovat kód, - vygeneruje vše, co je potřeba pro ROS balíček stačí přidat vlastní kód, - zápis: roscreate-pkg pkgname depend1 depend2 depend3, - příklad: roscreate-pkg beginner_tutorials std_msgs rospy roscpp,
ROS BALÍČKY (CATKIN) proč: - ROSBUILD je směs bash skriptů, GNU Make, CMake a přeloženého kódu => není jednoduše přenositelný na jinou architekturu (zvláště Windows), - CATKIN využívá jen CMake makra a Python kód => je portovatelný, - CATKIN je tedy nezávislý na ROSu a může být použit pro projekty, které nesouvisí s ROS. shrnutí: - Stejná struktura pro všechny systémy, - lepší portovatelnost na ostatní systémy, - trochu složitější (při přechodu z ROSBUILD).
ROS PRINCIP
ROS TWIST PŘÍKLAD KÓDU (C++) //we will be sending commands of type "twist" geometry_msgs::twist base_cmd; //move forward (speed 0.25 m / s) base_cmd.linear.x = 0.25; //publish the assembled command cmd_vel_pub_.publish(base_cmd);
ROS CO JE VYŘEŠENÉ? - Klientské knihovny (roscpp, rospy, roslips, rosjava, roslua, roscs, roseus, pharos, rosr), - API - balíčky ovladače, výpočetní uzly, - snímače ovladače - nástroje rviz, rosbag a rxbag, rxplot, rxgraph, command line tools.
ROS KNIHOVNY - GAZEBO 3D vnitřní a venkovní multi-robotický simulátor, - OpenCV přední knihovna pro zpracovávání obrazu, - MoveIt! knihovna pro plánování trajektorie, - Point Cloud Library knihovna pro manipulaci a zpracovávání trojrozměrných dat a hloubkových obrazů.
ROS GAZEBO - Vývoj procesů a algoritmů pro robotické platformy, - realisticky simuluje roboty a prostředí, - regresní testování, - často se využívá pouze na experimenty v simulaci, vlastnosti: - dynamics simulation, advanced 3d graphics, sensors, robot models, simple and complex environments, programmatic interface, plugins, TCP/IP communication, powerful graphical interface, collada import, active user community, person simulation
ROS OPENCV - BSD licence volné použití pro akademickou a podnikatelskou sféru, - C++, C, Python a Java rozhraní podporující Windows, Linux, Mac OS, ios a Android, - navrženo pro výpočetní efektivitu a silně zaměřeno na aplikace běžících v reálném čase, - podpora pro zpracovávání na více jádrech, - využívá OpenCL, - komunita přes 47 tisíc lidí.
ROS MOVEIT! - Software pro mobilní manipulátory (plánování dráhy, manipulace, 3D vnímání, kinematika, řízení a navigace), - jednoduchá platforma pro vývoj pokročilých robotických aplikací, - vývoj designu robotů, - vývoj integrovaných robotických systémů pro průmysl a komerci.
ROS POINTCLOUDLIBRARY - Otevřený projekt pro 2D/3D zobrazování a zpracovávání mračen bodů, - BSD licence (volný pro komerční a vědecké použití), - moderní algoritmy včetně filtrace, odhadu, rekonstrukce povrchu a segmentace - lze provozovat na Linux, MacOS, Windows a Android / ios, - rozdělen do množství menších knihoven, které mohou být kompilovány samostatně (menší výpočetní a datové nároky), - mračno bodů lze vytvořit stereo kamerami, 3D skenery, TOF kamerami, - nativně podporuje OpenNI 3D (MS Kinect, Asus XTionPRO)
ROBOTY - Seznam robotů
TURTLEBOT - WILLOWGARAGE
TURTLEBOT - VIDEO - video
ROS JUNIOR - Projekt STAIR (Stanford AI Robot) na Stanford Artificial Intelligence Laboratory, - vznikl systém Switchyard, - druhé místo na DARPA Urban Challenge 2007, - počátek ROS využití zkušeností.
ROS GRIZZLY - video
ROS 5 LET - video