Robot Operating System Ing. Zdeněk Materna, Robo@FIT
Hubo - vítěz soutěže robotů záchranářů (Darpa Robotics Challenge)
Willow Garage PR2 - bezpečný robot pro výzkum
Rethink Robotics Baxter - snadno programovatelný robot pro práci v blízkosti lidí
Aldebaran Pepper - sociální robot
TurtleBot - jednoduchý a levný robot na hraní
...a spousta dalších robotů
komunikace ovladače zařízení nastavení, konfigurace kompilace kódu, závislosti integrace s knihovnami zobrazení nahrávání testovacích dat mapování, navigace ovládání manipulátorů simulace uživatelské rozhraní real-time řízení transformace souřadnic... Co se vyžaduje po robotickém frameworku zpracování dat
předchůdci: Player, Orocos, Urbi počátky na Stanford University v roce 2007 poskytla podporu Willow Garage ROS 0.4 v roce 2009 nyní spravován OSRF jádro ROSu - BSD licence C++ a Python, veškerý kód na GitHubu, důkladně dokumentován a pokrytý jednotkovými testy Začátky a současnost ROSu
Distribuce
Balíčky - základní jednotka Definice zpráv package/msg/*.msg package/srv/*.srv Meta-balíčky obyčejný adresář package.xml - metadata o balíčku CMakeLists.txt - catkin samy neobsahují nic, jen seskupují balíčky do logických celků Repozitář např. repo na GitHubu 1-n balíčků možnost provést release pomocí nástroje bloom <package> <name>rviz</name> <version>1.11.10</version> <description> 3D visualization tool for ROS. </description> <maintainer email="william@osrfoundation.org">william Woodall</maintainer> <license>bsd</license> <author>dave Hershberger</author> <url type="website">http://ros.org/wiki/rviz</url> <url type="repository">https://github.com/ros-visualization/rviz</url> <buildtool_depend>catkin</buildtool_depend> <build_depend>roscpp</build_depend> <build_depend>roslib</build_depend> <run_depend>roscpp</run_depend> <run_depend>roslib</run_depend> <export> <rviz plugin="${prefix}/plugin_description.xml"/> <rosdoc config="rosdoc.yaml" /> </export> </package> Základní koncepty - souborový systém
Node Master node A node B node C key-value úložiště dat pro uzly Zprávy zprostředkovává komunikaci - umožňuje nodům se najít Parameter Server topic výpočetní jednotka spuštěný zkompilovaný zdrojový kód z balíčku publisher - subscriber pojmenované kanály (topic) Služby request - response RPC Základní koncepty - výpočetní graf service client request service server node B node A response
https://github.com/ros/common_msgs/blob/jadedevel/nav_msgs/msg/path.msg #An array of poses that represents a Path for a robot to follow Header header geometry_msgs/posestamped[] poses #include <ros/ros.h> #include <nav_msgs/path.h> ros::nodehandle nh; ros::publisher pub = nh.advertise<nav_msgs::path> ("/plan_cesty"); nav_msgs::path moje_cesta; geometry_msgs::posestamped cil1; cil1.header.frame_id = "stred_obyvaku"; cil1.position.x = 2.5; // pozice v metrech moje_cesta.poses.push_back(cil1);... pub.publish(moje_cesta); Základní koncepty - definice a posílání zpráv zm@thinkpad:~$ rosmsg show nav_msgs/path std_msgs/header header uint32 seq time stamp string frame_id geometry_msgs/posestamped[] poses std_msgs/header header uint32 seq time stamp string frame_id geometry_msgs/pose pose geometry_msgs/point position float64 x float64 y float64 z geometry_msgs/quaternion orientation float64 x float64 y float64 z float64 w
Užitečné nástroje - RViz - univerzální 3D zobrazovač
Užitečné nástroje - RQT - framework pro tvorbu GUI
Užitečné nástroje - Gazebo - fyzikální simulátor
Užitečné nástroje - Gazebo - fyzikální simulátor
Transformace souřadnic - knihovna TF
Transformace souřadnic - knihovna TF
ROS1 - původně pro PR2 Decentralizovaný systém (ROS1 používá master uzel) Postaven nad DDS (ROS1 - XML-RPC) C++11, Python 3, C API (embedded zařízení) Nově i pro Windows Meta-buildovací systém ament ROS1 a 2 budou vydávány souběžně Nástroje pro konverzi zpráv mezi ROS1 a ROS2 Již existuje funkční prototyp (https://github.com/ros2/examples) Budoucnost - ROS 2.0
www.wiki.ros.org www.answers.ros.org mailing list ros-users@lists.ros.org GitHub zájmové skupiny na groups.google.com ROSCon 594 798 řádků kódu (jádro), 60 089 commitů, 891 autorů 54% kódu C++, 31% Python, 7% XML, 8 % ostatní 16 043 wiki stránek 17 414 zodpovězených otázek ROS - komunita
Roboti užiteční, roboti pomáhající
Video na závěr - 5 let ROSu (2012)