ROS est de rassembler des savoir-faire de différentes disciplines. En effet, concevoir et programmer un robot, c’est :
Gérer le matériel en écrivant les pilotes
- Gérer la mémoire et les processus
- Gérer la concurrence et la fusion de données
- Proposer des algorithmes de raisonnement abstrait faisant largement appel à l'intelligence artificielle.
Tp2: Installation d'une couche d’abstraction entre un robot physique et ros
1. TP2 : Couche d’abstraction entre un robot physique et ROS
Said Benaissa
said.benaissa@ensem.ac.ma
Ann´ee universitaire 2015–2016
1 Introduction
Player/Stage est un projet permettant la simulation de robot sur votre ordinateur. Bien que nous appelions
ici le simulateur Player/Stage, Player n’est pas un simulateur mais une couche d’abstraction entre un robot
physique et votre programme.
Stage est une simulateur 2D sur lequel Player peut s’appuyer, et peut accepter un ou plusieurs robots permettant
ainsi de simuler les comportements collaboratifs.
Player se trouve donc `a la fois sur le robot et sur le poste de d´eveloppement. La configuration de celui-ci
permet de l’interfacer avec les capteurs et les actionneurs du robot, ou avec l’environnement de simulation
fournit par stage.
Le mod`ele Player/Stage permet d’unifier le d´eveloppement et de faciliter l’´echange entre collaborateurs. Il
permet de tester rapidement et `a moindre coˆut le comportement de votre programme sur le simulateur 2D.
2 Pr´e-requis
– Disposer des droits d’administration (sudo -s).
– Disposer d’une connexion `a internet configur´ee et activ´ee.
– Stage n´ecessite un environnement graphique.
3 Installation avec les sources
Nous allons ici traiter de l’installation de Player et Stage avec les derni`eres sources disponibles de :
– Player 3.0.1
– Stage 3.2.2.
3.1 Installation de cmake
– sudo apt-get install cmake
3.2 T´el´echargement des sources de player 3.0.1
– cd /
– mkdir install
– cd install
2. – wget http ://sourceforge.net/projects/playerstage/files/Player/3.0.1/player-3.0.1.tar.gz/player-3.0.1
– tar -xvf player-3.0.1.tar.gz
– cd player-3.0.1/
3.3 Installation de player 3.0.1
– mkdir build
– cd build
– cmake ../
– make
– sudo make install
3.4 Pour le bon fonctionnement de pkgconfig
– export PKG CONFIG PATH+ = /usr/local/lib/pkgconfig
– export PKG CONFIG PATH+ = /usr/local/lib64/pkgconfig
3.5 Installation des d´ependances pour stage 3.2.2
– sudo apt-get install libfltk1.1-dev
– sudo apt-get install libglu1-mesa-dev
– sudo apt-get install libtool
3.6 T´el´echargement des sources de stage 3.2.2
– cd /install
– wget http ://sourceforge.net/projects/playerstage/files/Stage/3.2.2/Stage-3.2.2-Source.tar.gz/Stage-3.2.2
– tar -xvf Stage-3.2.2-Source.tar.gz
– cd Stage-3.2.2-Source/
3.7 Installation de stage 3.2.2
– mkdir build
– cd build
– cmake ../
– make
– sudo make install
3.8 Simulation 2D
Il reste ensuite `a copier les fichiers world donn´e en exemple dans votre espace de travail :
– mkdir /Player-stage
– cp -r /install/Stage-3.2.2-Source/worlds/ /Player-stage/
3.9 Code Source
Listing 1 – TP :Communication .
#include <iostream>
#include ”/ usr / l o c a l / include / player −3.0/ l i b p l a y e r c++/playerc++.h”
#include ”/ usr / l o c a l / include / player −3.0/ l i b p l a y e r c / playerc . h”
int
main ( int argc , char ∗argv [ ] )
{
using namespace PlayerCc ;
PlayerClient robot (” l o c a l h o s t ” ) ;
SonarProxy sp(&robot , 0 ) ;
Position2dProxy pp(&robot , 0 ) ;
f or ( ; ; )
3. {
double turnrate , speed ;
// read from the proxies
robot . Read ( ) ;
// print out sonars f or fun
std : : cout << sp << std : : endl ;
// do simple c o l l i s i o n avoidance
i f (( sp [ 0 ] + sp [ 1 ] ) < ( sp [ 6 ] + sp [ 7 ] ) )
turnrate = dtor ( −20); // turn 20 degrees per second
e l s e
turnrate = dtor ( 2 0 ) ;
i f ( sp [ 3 ] < 0.500)
speed = 0;
e l s e
speed = 0.100;
// command the motors
pp . SetSpeed ( speed , turnrate ) ;
}
}
Listing 2 – TP :Communication avec Camera de robot mobile KHeperaIII.
#include <l i b p l a y e r c++/playerc++.h>
#include </usr / l o c a l / include / args . h>
#include <iostream>
int main ( int argc , char ∗∗ argv )
{
parse args ( argc , argv ) ;
try
{
PlayerCc : : PlayerClient c l i e n t ( gHostname , gPort ) ;
PlayerCc : : CameraProxy cp(& c l i e n t , gIndex ) ;
f or ( uint i =0; i <10; ++i )
{
c l i e n t . Read ( ) ;
cp . SaveFrame (” camera ” ) ;
std : : cout << cp << std : : endl ;
}
}
catch ( PlayerCc : : PlayerError e )
{
std : : cerr << e << std : : endl ;
return −1;
}
return 1;
}
3.10 Compilation
La compilation de votre programe se fait `a l’aide de la commande suivante :
g++ -o example0 ‘pkg-config --cflags playerc++‘ example0.cc ‘pkg-config --libs playerc++‘
4. 4 Conclusion
Player/Stage est con¸cu pour fournir une infrastructure, des pilotes et une collection de biblioth`eques de
p´eriph´eriques partag´es pour les applications robotiques. C’est l’un des premiers intergiciels qui a ´emerg´e pour
les syst`emes robotiques, et d’autres intergiciels utilisent Player comme fondation. Player/Stage ne consid`ere
pas un robot comme une unit´e, mais traite s´epar´ement les dispositifs, ce qui en fait un serveur de r´ef´erentiel
pour actionneurs, capteurs et robots. Les principales caract´eristiques de Player sont le serveur de r´ef´erentiel
des p´eriph´eriques, la vari´et´e des langages de programmation, le protocole de transport bas´e sur des sockets, la
modularit´e et le fait d’ˆetre open-source. Cet intergiciel est compos´e de deux ´el´ements : Player et Stage. Player
repr´esente l’intergiciel lui mˆeme et Stage est un simulateur 2D.