robot operating system - openalt.cz materna - ros.pdf · dokumentován a pokrytý jednotkovými...
TRANSCRIPT
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
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);
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