robot operating system - openalt.cz materna - ros.pdf · dokumentován a pokrytý jednotkovými...

23
Robot Operating System Ing. Zdeněk Materna, Robo@FIT

Upload: doannhu

Post on 27-Feb-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

Robot Operating SystemIng. 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ů

Co se vyžaduje po robotickém frameworku

● 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...

zpracování dat

Začátky a současnost ROSu

● 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

Distribuce

Základní koncepty - souborový systém

● Balíčky - základní jednotka○ obyčejný adresář○ package.xml - metadata o balíčku○ CMakeLists.txt - catkin

● Definice zpráv○ package/msg/*.msg○ package/srv/*.srv

● Meta-balíčky○ 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="[email protected]">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 - výpočetní graf

● Node○ výpočetní jednotka○ spuštěný zkompilovaný zdrojový kód z balíčku

● Master○ zprostředkovává komunikaci - umožňuje

nodům se “najít”

● Parameter Server○ key-value úložiště dat pro uzly

● Zprávy○ publisher - subscriber○ pojmenované kanály (topic)

● Služby○ request - response○ RPC

topic

node A node B node C

node A node Brequest

response

service server

serviceclient

Základní koncepty - definice a posílání zpráv

zm@Thinkpad:~$ rosmsg show nav_msgs/Pathstd_msgs/Header header uint32 seq time stamp string frame_idgeometry_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

#An array of poses that represents a Path

for a robot to follow

Header header

geometry_msgs/PoseStamped[] poses

https://github.com/ros/common_msgs/blob/jade-

devel/nav_msgs/msg/Path.msg

#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 metrechmoje_cesta.poses.push_back(cil1);...pub.publish(moje_cesta);

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

Budoucnost - ROS 2.0

● 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)

ROS - komunita

● 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

Roboti užiteční, roboti pomáhající

Video na závěr - 5 let ROSu (2012)