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>
rviz 1.11.10 <description> 3D visualization tool for ROS. <maintainer email="
[email protected]">William Woodall
BSD Dave Hershberger http://ros.org/wiki/rviz https://github.com/ros-visualization/rviz catkin roscpp roslib roscpp roslib <export>
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
#include ros::NodeHandle nh; ros::Publisher pub = nh.advertise ("/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 [email protected] 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)