Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
mapping_integration_web [2018/02/13 15:39]
mgp3202018 [Spécificités de Pepper]
mapping_integration_web [2020/07/03 17:38] (current)
mai Tag0 Added: pepper
Line 2: Line 2:
  
 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. 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.
 +Ce travail se base sur cet article : [[https://​arxiv.org/​pdf/​1704.04797.pdf|Voir l'​article]]
 +
 +Vidéo de démonstration de la solution : [[https://​youtu.be/​xF7-tTI0zrE|Voir la vidéo YouTube]]
  
 ===== Liste des packages utilisés ===== ===== Liste des packages utilisés =====
  
-  * http://​wiki.ros.org/​rosbag +  * http://​wiki.ros.org/​rosbag ​: Un ensemble d'​outils pour l'​enregistrement et la lecture de topics ROS. 
-  * http://​wiki.ros.org/​gmapping +  * http://​wiki.ros.org/​gmapping ​: Création d'une carte 2D à partir des lasers d'un robot. 
-  * http://​wiki.ros.org/​map_server +  * http://​wiki.ros.org/​map_server ​: Permet de publier et d'​enregistrer des cartes. 
-  * http://​wiki.ros.org/​rosbridge_server +  * http://​wiki.ros.org/​rosbridge_server ​: Publie les topics ROS dans un WebSocket au format JSON. 
-  * http://​wiki.ros.org/​roslibjs/ +  * http://​wiki.ros.org/​roslibjs ​: Librairie JS, permet la lecture et l'​écriture de topics en interaction avec le WebSocket. 
-  * http://​wiki.ros.org/​ros2djs +  * http://​wiki.ros.org/​ros2djs ​: Librairie JS, permet d'​afficher les cartes dans une interface web. 
-  * http://​wiki.ros.org/​amcl +  * http://​wiki.ros.org/​amcl ​: Un système de localisation probabiliste pour un robot se déplaçant en 2D. 
-  * http://​wiki.ros.org/​nodelet +  * http://​wiki.ros.org/​nodelet ​: Fournit un moyen d'​exécuter plusieurs algorithmes dans le même processus. 
-  * http://​wiki.ros.org/​image_proc +  * http://​wiki.ros.org/​image_proc ​: Rectification d'​image et traitement de couleurs. 
-  * http://​wiki.ros.org/​depth_image_proc +  * http://​wiki.ros.org/​depth_image_proc ​: Traitement des "depth images"​ (transformation en "point cloud" notamment). 
-  * http://​wiki.ros.org/​pointcloud_to_laserscan +  * http://​wiki.ros.org/​pointcloud_to_laserscan ​: Transforme un "point cloud" en "laser scan". 
-  * http://​wiki.ros.org/​rb1_base_common+  * http://​wiki.ros.org/​rb1_base_common ​: Contrôle de la base de RB-1. 
 +  * http://​wiki.ros.org/​pepper_bringup : Connexion à Pepper. 
 + 
 +Tous ces packages peuvent être installés en utilisant la commande : 
 +  sudo apt-get install ros-<​ros_distribution>​-<​ros_package>​ 
 +La liste des packages disponibles sur une distribution ROS peut être affichée comme ceci : 
 +  apt-cache search ros-<​ros_distribution>​ 
 + 
 +Pour Pepper, il faut utiliser ROS Kinetic (installable sur Ubuntu 16.04).\\ 
 +Pour RB-1, il faut utiliser ROS Indigo (installable sur Ubuntu 14.04).
  
 ===== Création d'un rosbag ===== ===== Création d'un rosbag =====
Line 49: Line 61:
 Avant d'​annuler le gmapping, on enregistre la carte : Avant d'​annuler le gmapping, on enregistre la carte :
   rosrun map_server map_saver -f <​map_name>​   rosrun map_server map_saver -f <​map_name>​
 +Exemple de carte obtenue avec les lasers de RB-1 :\\
 +{{:​screenshot_19.png?​200|}}\\
 +Les traits que l'on voit sont des aberrations dues aux lasers, on peut réduire leur impact en jouant sur les paramètres lors de la génération de la carte (paramètre //​Urange//​).
  
 ==== Spécificités de Pepper ==== ==== Spécificités de Pepper ====
Line 69: Line 84:
  
 Le principe est le suivant : //​rosbridge_server//​ publie un WebSocket contenant les informations des topics au format JSON. //​roslibjs//​ vient ensuite souscrire aux topics et permet la récupération des données dans une page Web (voir [[http://​wiki.ros.org/​roslibjs/​Tutorials/​BasicRosFunctionality|le tutoriel roslibjs]]). Enfin, //ros2djs// permet l’affichage d’un élément de type //​nav_msgs/​OccupancyGrid//​ (le format ROS des cartes) dans l’interface (voir [[http://​wiki.ros.org/​ros2djs/​Tutorials/​VisualizingAMap|le tutoriel ros2djs]]).\\ Le principe est le suivant : //​rosbridge_server//​ publie un WebSocket contenant les informations des topics au format JSON. //​roslibjs//​ vient ensuite souscrire aux topics et permet la récupération des données dans une page Web (voir [[http://​wiki.ros.org/​roslibjs/​Tutorials/​BasicRosFunctionality|le tutoriel roslibjs]]). Enfin, //ros2djs// permet l’affichage d’un élément de type //​nav_msgs/​OccupancyGrid//​ (le format ROS des cartes) dans l’interface (voir [[http://​wiki.ros.org/​ros2djs/​Tutorials/​VisualizingAMap|le tutoriel ros2djs]]).\\
 +\\
 Pour cela, on publie un topic de map à partir du fichier de map enregistré.\\ Pour cela, on publie un topic de map à partir du fichier de map enregistré.\\
 NB : il faut bien utiliser le fichier .yaml et non le fichier .pgm de la carte. NB : il faut bien utiliser le fichier .yaml et non le fichier .pgm de la carte.
Line 275: Line 291:
 ===== Affichage de la localisation du robot ===== ===== Affichage de la localisation du robot =====
  
-Pour la localisation du robot, on utilise le package amcl.\\+Pour la localisation du robot, on utilise le package ​//amcl//.\\
 Si ce n'est pas déjà fait, on publie la carte : Si ce n'est pas déjà fait, on publie la carte :
   rosrun map_server map_server <​yaml_file>​.yaml   rosrun map_server map_server <​yaml_file>​.yaml
 On lance la lecture du bag : On lance la lecture du bag :
-  rosbag play --clock </​chemin/​et/​nomDuBag>+  rosbag play --clock <nom_du_bag>.bag
 On lance la détection AMCL à partir des lasers (pour RB1, ///​front_laser/​scan//​) On lance la détection AMCL à partir des lasers (pour RB1, ///​front_laser/​scan//​)
   rosrun amcl amcl scan:​=<​nom_du_topic_laser_scan>​   rosrun amcl amcl scan:​=<​nom_du_topic_laser_scan>​
 La page Web s'​abonne au topic de positionnement et affiche dynamiquement la position du robot sur la carte. La page Web s'​abonne au topic de positionnement et affiche dynamiquement la position du robot sur la carte.
 +
 +===== Travaux futurs =====
 +==== Pour Pepper ====
 +
 +  * Troubleshooting de l'​erreur avec le package //​depth_image_proc/////​convert_metric//​ pour pouvoir générer une carte à partir de la camera de Pepper
 +  * Normalement,​ la suite devrait fonctionner comme avec RB-1
 +
 +==== Pour le déplacement de RB-1 à la localisation spécifiée ====
 +
 +  * Publier les coordonnées de destination depuis l'​interface web vers ROS en utilisant //​roslibjs//​
 +  * Utiliser ces coordonnées pour déplacer RB-1 (probablement grâce au package //​rb1_base_common//​ / //​navigation//​ ou //​control//​)
 +{{tag> pepper ros }}
  • mapping_integration_web.1518536392.txt.gz
  • Last modified: 2019/04/25 14:08
  • (external edit)