This is an old revision of the document!
Mapping et localisation d'un robot dans une interface Web
Cette documentation explique comment créer une carte à partir d'un robot pour l'intégrer ensuite dans une interface Web et afficher la localisation du robot.
Liste des packages utilisés
Création d'un rosbag
Un “bag” dans ROS permet d'enregistrer et de rejouer à volonté les topics publiés par un robot pendant le temps d'enregistrement (voir les commandes disponibles).
On lance ROS si ce n'est pas déjà fait :
roscore
On se connecte au robot. Pour Pepper :
roslaunch pepper_bringup pepper_full_py.launch nao_ip:=<ip_de_pepper> roscore_ip:=127.0.0.1
Pour RB1 :
export ROS_MASTER_URI=http://rb1:11311
On lance l'enregistrement des topics fournis par le robot :
NB : l'option “-a” permet d'enregistrer tous les topics mais si on souhaite uniquement quelques topics, c'est également possible et cela permet d'alléger le bag.
rosbag record -O </chemin/et/nomDuBag>.bag -a rosbag record -O </chemin/et/nomDuBag>.bag /<topic_1> /<topic_2>
On fait maintenant se déplacer le robot comme on le souhaite.
On arrête ensuite l'enregistrement avec CTRL
+ C
.
On peut inspecter le contenu du rosbag avec la commande :
rosbag info <nom_du_rosbag>.bag
Création d'une carte
On lance ROS si ce n'est pas déjà fait :
roscore
Si on utilise un rosbag, on indique à ROS d'utiliser le temps de la simulation :
NB : il faut impérativement lancer cette commande avant de lancer tous les nodes.
rosparam set use_sim_time true
On génère ensuite une carte à l'aide de slam_gmapping. Il faut passer en argument le topic du robot correspondant au type sensor_msgs/LaserScan (i.e. les lasers du robot). Par défaut, les cartes générées sont trop “dé-zoomées”, il faut donc jouer sur la résolution (paramètre delta) et éventuellement sur les dimensions. Par exemple, pour RB1, la commande suivante génère une carte exploitable :
rosrun gmapping slam_gmapping scan:=/front_laser/scan _xmin:=-1 _xmax:=1 _ymin:=-1 _ymax:=1 _delta:=0.035 _maxUrange:=10
On rejoue le bag :
rosbag play --clock </chemin/et/nomDuBag>
Avant d'annuler le gmapping, on sauve la carte :
rosrun map_server map_saver -f <map_name>