Vous êtes sur la page 1sur 58

Introduction à ROS

BE INSA
Olivier STASSE,
DR-2, CNRS,
Gepetto,
LAAS CNRS

AIP, Toulouse
Nov 2017
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Table des matières

1 Panorama

2 Organisation des programmes sous ROS

3 Communications ROS

4 Programmer avec ROS

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Exemple : Asservissement visuel

Visual
servoing
control  
3d-sensor v KobukiNodelet
I
w

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Exemple : Asservissement visuel - Topics

/camera/image color
Visual /mobilebase/command/velocity
servoing  
control v
I
3d-sensor w KobukiNodelet

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Exemple : Asservissement visuel - Topics - Params

/camera/image color
Visual /mobilebase/command/velocity
servoing  
control v
I
3d-sensor w KobukiNodelet
(Kp , Kd )

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Exemple : Asservissement visuel - Software bus


rostopic rosparam

Software Bus (roscomm/rosmaster) - Handle rosnodes

Visual
servoing
control
3d-sensor KobukiNodelet

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Table des matières

1 Panorama
Motivations générales
ROS - Introduction
Exemple
Installation ROS Indigo
Configuration ROS Indigo
Navigation dans ROS Indigo
Création d’un paquet pour ROS Indigo

2 Organisation des programmes sous ROS

3 Communications ROS
Olivier Stasse LAAS-CNRS, Toulouse, France
4 Programmer avec ROS
Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Application robotique

Traitement
Représentation du signal
de l’environnement

Planification
Environnement
de tâches

Planification
de mouvement
Contrôle

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Application robotique - Outils


OpenCV - PCL
OctoMap Traitement
Représentation du signal
de l’environnement

Planification
Environnement
de tâches
SMACH
Planification
de mouvement
MovIt Contrôle
KLD - iTask - SoT

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Application robotique distribuée


PC - Vision
PC - Mapping Traitement
Représentation du signal
de l’environnement

Planification
Bus logiciel Environnement
de tâches
PC - Task Planning

Planification
de mouvement
PC - Motion Planning Contrôle
PC - Contrôle

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations

Passage à l’échelle
La communauté robotique doit collaborer pour créer des systèmes
robotiques de qualité à l’exemple de l’informatique et la physique.
ROS est l’outil qui a permis ce passage.

Plomberie Outils Capacités Ecosystème

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Plomberie

Middleware
Publication/souscription à la transmission de messages
anonymes (Message Passing)
Enregistrer et rejouer des messages
Requêtes/réponses à des remote procedure calls
Système de paramètres distribués

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Outils

rviz Visualisateur graphique 3D.


rosbag Enregistrement et visualisation des données.
rxplot Affichage en ligne.
rxgraph Visualisation du système.
rqt Interface graphique de contrôle incrémentale
catkin Système de compilation et de gestion de paquets.

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Outils

rviz Visualisateur graphique 3D.


rosbag Enregistrement et visualisation des données.
rxplot Affichage en ligne.
rxgraph Visualisation du système.
rqt Interface graphique de contrôle incrémentale
catkin Système de compilation et de gestion de paquets.

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Outils

rviz Visualisateur graphique 3D.


rosbag Enregistrement et visualisation des données.
rxplot Affichage en ligne.
rxgraph Visualisation du système.
rqt Interface graphique de contrôle incrémentale
catkin Système de compilation et de gestion de paquets.

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Outils

rviz Visualisateur graphique 3D.


rosbag Enregistrement et visualisation des données.
rxplot Affichage en ligne.
rxgraph Visualisation du système.
rqt Interface graphique de contrôle incrémentale
catkin Système de compilation et de gestion de paquets.

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Outils

rviz Visualisateur graphique 3D.


rosbag Enregistrement et visualisation des données.
rxplot Affichage en ligne.
rxgraph Visualisation du système.
rqt Interface graphique de contrôle incrémentale
catkin Système de compilation et de gestion de paquets.

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Ecosystème

Définitions de messages standards pour les robots


Librairie pour la géométrie des robots
Language de description des robots
Remote Procedure Calls préemptable
Diagnostiques
Estimation de pose
Localisation
Cartographie
Navigation

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Ecosystème

Systèmes d’exploitation Supporté :


Robots
Packages Expérimentaux :

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Motivations générales

Motivations - Ecosystème

Systèmes d’exploitation
01/05/2014 : 111 Robots supportés sur http://wiki.ros.org/Robots
Robots 25/04/2017 : 27 Robots supportés sur http://wiki.ros.org/Robots
01/05/2014 : 2048 Packages supportés sur http://wiki.ros.org/Packages
Packages 25/04/2017 : 1400 Packages supportés sur http://wiki.ros.org/Packages

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

ROS - Introduction

ROS : Bref historique


2008 Démarrage de ROS par Willow Garage
2010 - Janvier ROS 1.0
2010 - Mars Box Turtle
2010 - Aout C Turtle
2011 - Mars Diamondback
2011 - Aout Electric Emys
2012 - Avril Fuerte
2012 - Décembre Groovy Galapagos
2013 - Février Open Source Robotics Fundation poursuit la gestion de
ROS
2013 - Aout Willow Garage est absorbé par Suitable Technologies
2013 - Aout Le support de PR-2 est repris par Clearpath Robotics
2013 - Septembre Hydro Medusa (prévu)
2014 - Juillet Indigo Igloo (EOL - Avril 2019)
2015 - May Jade Turtle (EOL - Mai 2017)
2016 - May Kinetic Kame (EOL - Mai 2021)
2017 - May Lunar Loggerhead

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

ROS - Introduction

ROS : Normalisation des releases


Kinetic Kame (Mai 2016 - Mai 2021)
Ubuntu Wily (15.10)
Ubuntu Xenial (16.04 LTS)
C++11, Boost 1.55, Lisp SBCL 1.2.4, Python 2.7, CMake
3.0.2
Ogre3D 1.9.x, Gazebo 7, PCL 1.7.x, OpenCV 3.1.x, Qt 5.3.x,
PyQt5
Indigo Igloo (May 2014)
Ubuntu Saucy (13.10)
Ubuntu Trusty (14.04 LTS)
C++03, Boost 1.53, Lisp SBCL 1.0.x, Python 2.7, (Test
additionels contre Python 3.3 recommendés) CMake 2.8.11
Lien vers la ROS Enhancement Proposal (REPs) :
http://www.ros.org/reps/rep-0003.html
Olivier Stasse LAAS-CNRS, Toulouse, France
Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Exemple

Exemple : Asservissement visuel

Visual
servoing
control  
3d-sensor v KobukiNodelet
I
w

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Exemple

Exemple : Asservissement visuel - Topics

/camera/image color
Visual /mobilebase/command/velocity
servoing  
control v
I
3d-sensor w KobukiNodelet

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Exemple

Exemple : Asservissement visuel - Topics - Params

/camera/image color
Visual /mobilebase/command/velocity
servoing  
control v
I
3d-sensor w KobukiNodelet
(Kp , Kd )

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Exemple

Exemple : Asservissement visuel - Software bus


rostopic rosparam

Software Bus (roscomm/rosmaster) - Handle rosnodes

Visual
servoing
control
3d-sensor KobukiNodelet

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Installation ROS Indigo

Installation de ROS - Indigo - Ubuntu 14.04.4 LTS


1 - Spécifications des sources.list
sudo sh -c ’echo ”deb http ://packages.ros.org/ros/ubuntu
precise main” > /etc/apt/sources.list.d/ros-latest.list’
2 - Spécifications des clefs
wget http ://packages.ros.org/ros.key -O - | sudo apt-key
add -
3 - Mise à jour des listes de paquets
sudo apt-get update
4 - Installation des paquets
sudo apt-get install ros-indigo-desktop-full

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Configuration ROS Indigo

Configuration - Indigo - Ubuntu 14.04.4 LTS

1 - Spécifications de ROS ROOT et ROS PACKAGE PATH


env | grep ROS
2 - Ligne à ajouter au fichier .bashrc
source /opt/ros/indigo/setup.bash
3 - Création de l’espace catkin
mkdir -p ˜/catkin ws/src
cd ˜/catkin ws/src
catkin init workspace
Tutorial Installing and Configuring Your ROS Environment :

http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Configuration ROS Indigo

Configuration - Indigo - Ubuntu 14.04.4 LTS

4 - Ligne à ajouter au fichier .bashrc


source $HOME/catkin ws/devel/setup.bash
Tutorial Installing and Configuring Your ROS Environment :

http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Configuration ROS Indigo

Configuration - Indigo - Ubuntu 14.04.4 LTS

Votre distribution ROS est indiquée par ROS DISTRO


ROS DISTRO=indigo
L’annuaire de votre application est spécifié par
ROS MASTER URI
ROS MASTER URI=http ://localhost :11311
ROS MASTER URI=http ://hostname :port number
hostname dans ROS MASTER URI indique l’ordinateur où
roscore est lancé. port number indique le port où roscore
attend les connections.

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Navigation dans ROS Indigo

ROS Filesystem - Navigation - Indigo

1 - rospack : Donne les informations sur les paquets (exemple


roscpp)
rospack find roscpp
2 - roscd : Bascule le répertoire directement sur le paquet
roscd roscpp
roscd roscpp/cmake
roscd log
3 - rosls : Affiche le contenu du répertoire d’un paquet
rosls roscpp tutorials
Tutorial Navigation dans le système de fichiers

http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création d’un paquet pour ROS Indigo

Création d’un paquet ROS - Définition - Indigo

Le paquet doit contenir un fichier package.xml qui suit le


format catkin. Le fichier package.xml contient des meta
informations sur le paquet.
Il n’y a qu’un seul paquet par répertoire.
Les paquets imbriqués, et les paquets dans un même
répertoire sont interdits.
Le paquet le plus simple est :
mon paquet/
CMakeLists.txt
package.xml

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Table des matières

1 Panorama

2 Organisation des programmes sous ROS


Création de paquets
Définitions

3 Communications ROS

4 Programmer avec ROS

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Paquets dans un workspace catkin - (1/9) - Indigo


work space folder
src
CMakeLists.txt
package 1
CMakeLists.txt
package.xml
...
package n
CMakeLists.txt
package.xml

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Paquets dans un workspace catkin - (2/9) - Indigo

1 - Aller dans le répertoire src du paquet


cd ˜/catkin ws/src
Pour créer un nouveau package, et ses dépendences :
catkin create pkg
catkin create pkg beginner tutorials std msgs rospy roscpp
catkin create pkg [package name] [depend1] [depend2] [de-
pend3]

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Paquets dans un workspace catkin - (3/9) - Indigo


2 - Dépendences du premier ordre
rospack depends1 beginner tutorials
Dépendences standards : std msgs rospy roscpp
3 - Les dépendences sont stockées dans le fichier package.xml
roscd beginner tutorials
cat package.xml
<package>
...
<buildtool depend>catkin</buildtool depend>
<build depend>roscpp</build depend>
...
</package>

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Paquets dans un workspace catkin - (4/9) - Indigo

4 - Dépendences indirectes d’un paquet


rospack depends beginner tutorials
<package>
cpp common
rostime
roscpp traits
roscpp serialization
...
roslib
rospy
</package>

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Personnalisation du paquet - (5/9) - Indigo

5 - Description du paquet
<description>The beginner tutorials package</description>
<package>
<!- One maintainer tag required, multiple allowed, one person per tag
->
<!- Exemple : ->
<!- <maintainer email=”jane.doe@example.com”>Jane
Doe</maintainer> ->
<maintainer email=”user@todo.todo”>user</maintainer>

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Personnalisation du paquet - (6/9) - Indigo

7 - License du paquet
<!- One license tag required, multiple allowed, one license
per tag ->
<!- Commonly used license strings : ->
<!- BSD, MIT, Boost Software License, GPLv2, GPLv3, LG-
PLv2.1,LGPLv3 ->
<license>TODO</license>
La license souvent utilisée sous ROS est la BSD
<license>BSD</license>

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Personnalisation du paquet - (7/9) - Indigo

8 - Spécification des dépendences


<!- The * depend tags are used to specify dependencies ->
<!- Dependencies can be catkin packages or system dependencies ->
<!- Exemples : ->
<!- Use build depend for packages you need at compile time : ->
<!- <build depend>genmsg</build depend> ->
<!- Use buildtool depend for build tool packages : ->
<!- <buildtool depend>catkin</buildtool depend> ->
<!- Use run depend for packages you need at runtime : ->
<!- <run depend>python-yaml</run depend> ->
<!- Use test depend for packages you need only for testing : ->
<!- <test depend>gtest</test depend> ->
<buildtool depend>catkin</buildtool depend>
<build depend>roscpp</build depend>
<build depend>rospy</build depend>

<build depend>std msgs</build depend>

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Personnalisation du paquet - (8/9) - Indigo

9 - Ajout de la dépendence à l’exécution :


<buildtool depend>catkin</buildtool depend>
<build depend>roscpp</build depend>
<build depend>rospy</build depend>
<build depend>std msgs</build depend>
<run depend>roscpp</run depend>
<run depend>rospy</run depend>
<run depend>std msgs</run depend>

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Personnalisation du paquet - (9/9) - Indigo

10 - Fichier package.xml final


< ?xml version=”1.0” ?>
<package>
<name>beginner tutorials</name>
<version>0.1.0</version>
<description>The beginner tutorials package</description>
<maintainer email=”you@yourdomain.tld”>Your Name</maintainer>
<license>BSD</license>
<url type=”website”>http ://wiki.ros.org/beginner tutorials</url>
<author email=”you@yourdomain.tld”>Jane Doe</author>
<buildtool depend>catkin</buildtool depend>
<build depend>roscpp</build depend>
<build depend>rospy</build depend>
<build depend>std msgs</build depend>
<run depend>roscpp</run depend>
<run depend>rospy</run depend>
<run depend>std msgs</run depend>

</package>

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Création de paquets

Compilation des paquets Indigo

La compilation de tous les paquets s’effectue avec une seule


commande.
Cette commande doit s’effectuer dans le répertoire du works-
pace.
Le répertoire build du workspace stocke les objets compilés
intermédiaires.
Le répertoire devel du workspace stocke les exécutables et les
librairies compilées.
catkin make
catkin make install

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Définitions

Graphe d’applications avec ROS

Nodes : Un node est un exécutable qui utilise ROS pour


communiquer avec d’autres noeuds.
Messages : Types de données ROS utilisés pour souscrire ou publié sur
un topic.
Topics : Les nodes peuvent publier des messages sur un topic aussi
bien que souscrire à un topic pour recevoir des messages.
Master : Nom du service pour ROS (i.e. aide les noeuds à se trouver
mutuellement).
Paramètres : Informations très peu dynamiques qui doivent être partagés
dans l’application.
rosout : Equivalent de stdout/stderr.
roscore : Master+rosout+parameter server (serveur de paramètres,
introduit plus tard).
Olivier Stasse LAAS-CNRS, Toulouse, France
Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Définitions

Définitions - Node

Un fichier éxecutable dans un paquet ROS.


Les noeuds ROS utilisent une librairie client pour
communiquer avec les autres noeuds.
Les noeuds peuvent publier ou souscrire à des topics.
Les noeuds peuvent fournir ou utiliser un service.
Les librairies client sont :
rospy pour python.
roscpp pour C++.

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Table des matières

1 Panorama

2 Organisation des programmes sous ROS

3 Communications ROS
roscore
rosrun
rostopic
roswtf
rqt console
roslaunch
rosed
Olivier Stasse
rosbag
LAAS-CNRS, Toulouse, France
Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

roscore

Le système des Name services

Pour pouvoir localiser et interagir entre les nodes il faut un


annuaire.
C’est le rôle de roscore.
Il doit être lancé systématiquement mais une seule fois.
Si roscore ne se lance pas, il faut :
Vérifier la connection réseau.
Si roscore ne s’initialise pas et évoque un problème de
droits, il faut vérifier les droits sur le répertoire .ros
Tutorial Understanding ROS Nodes : http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

roscore

Le système des Name services

Pour obtenir la liste des nodes actifs :


rosnode list
Pour obtenir des informations sur un node :
rosnode info /rosout
Tutorial Understanding ROS Nodes : http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

rosrun

Utilisation de rosrun

Pour pouvoir lancer un fichier exécutable/node d’un paquet


rosrun [package name][node name]
Par exemple pour lancer turtlesim :
rosrun turtlesim turtlesim node
Pour renommer des arguments (utiliser rosnode list pour
vérifier) :
rosrun turtlesim turtlesim node name :=my turtle
Pour tester si le node est actif
rosnode ping my turtle
Tutorial Understanding ROS Nodes : http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

rosrun

Comprendre les topics - Préparation

Pour démarrer turtle sim et turtle teleop key


rosrun turtlesim turtlesim node
rosrun turtlesim turtle teleop key
Démarrer la visualization du graphe de l’application :
rosrun rqt graph rqt graph
Démarrer le graphe de l’affichage des topics :
rosrun rqt plot rqt plot
Tutorial Understanding ROS Topics : http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

rostopic

Comprendre les topics - rostopic

Les topics sont des données publiées par des noeuds, et au-
quelles les noeuds souscrivent.
L’exécutable permettant d’avoir des informations sur les to-
pics est rostopic.
rostopic bw display bandwith used by topic
rostopic echo print messages to screen
rostopic hz display publishing rate of topic
rostopic list print information about active topics
rostopic pub publish data to topic
rostopic type print topic type
Tutorial Understanding ROS Topics : http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

roswtf

Vérifier son installation ros - roswtf

Ce programme vérifie l’installation de ROS et analyse les


problèmes.
Effectue le test suivant le répertoire.
Vérifie la cohérence de l’installation : variables
d’environnements, paquets installés.
Analyse le graphe en cours d’exécution.
Tutorial Getting started with roswtf :

http://wiki.ros.org/ROS/Tutorials/Getting%20started%20with%20roswtf ;

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

rqt console

rqt - rqt console

rqt est une interface d’affichage non 3D qui se peuple


avec des plugins. Elle permet de construire une interface
de contrôle incrémentalement. L’exécutable permettant
d’afficher les messages des noeuds de façon centralisé est
rqt console.
rosrun rqt console rqt console
rosrun rqt logger level rqt logger level
Tutorial Using rqt console et roslaunch http://wiki.ros.org/ROS/Tutorials/

UsingRqtconsoleRoslaunch

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

roslaunch

Lancer plusieurs noeuds - roslaunch

roslaunch lit un fichier xml qui contient tous les paramètres


pour lancer une application distribuée ROS.
roslaunch [package] [filename.launch]
Exemple :
roscd beginner tutorials
roslaunch beginner tutorials turtlemimic.launch
Tutorial Using rqt console et roslaunch http://wiki.ros.org/ROS/Tutorials/

UsingRqtconsoleRoslaunch

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

rosed

Spécifier l’éditeur pour ROS - rosed

roslaunch permet d’éditer un fichier directement par le nom


du paquet et non par le chemin entier. Il inclut la complétion
par <Tab>.
rosed [package] [filename]
Exemple :
rosed roscpp Logger.msg
L’éditeur utilisé est spécifié par la variable d’environnement
EDITOR
export EDITOR=’emacs’
Tutorial Using rosed to edit files in ROS http://wiki.ros.org/ROS/Tutorials/UsingRosEd

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

rosbag

Enregistrer des données - rosbag

rosbag permet d’enregistrer et de rejouer des données sur


votre application.
Pour enregistrer un sac de données :
rosbag record -a
rosbag record -O subset /turtle1/cmd vel /turtle1/pose
Le nom du fichier démarre avec l’année, la date et le temps
et le suffixe .bag
Tutorial Recording and play back data http://wiki.ros.org/ROS/Tutorials/Recording%20and%

20playing%20back%20data

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Table des matières

1 Panorama

2 Organisation des programmes sous ROS

3 Communications ROS

4 Programmer avec ROS

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS
Panorama Organisation des programmes sous ROS Communications ROS Programmer avec ROS

Tutorials couverts par cette partie

Création de fichiers ROS msg and srv


Ecrire un simple souscripteur et publieur (C++)
Ecrire un simple souscripteur et publieur (Python)
Ecrire un simple service et un client (C++)
Ecrire un simple service et un client (Python)
Faire fonctionner ensemble le client simple et le service simple.

Olivier Stasse LAAS-CNRS, Toulouse, France


Introduction ROS