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
simulatorgazebo [2019/02/14 10:18]
mgp3212019 [Simulateur Gazebo]
simulatorgazebo [2019/04/25 14:08] (current)
Line 1: Line 1:
 ======Simulateur Gazebo====== ======Simulateur Gazebo======
  
-==== Prérequis : ====+**Auteur :** Yao ZHAO 
 + 
 +=====Prérequis :=====
    
 Environnement Linux : Ubuntu 18.04 Environnement Linux : Ubuntu 18.04
    
-==== Installation du ROS Melodic : ====+=====Installation du ROS Melodic :=====
    
-Modification du “sources.list”:​+**Modification du “sources.list”:​** 
 sudo sh -c 'echo "deb http://​packages.ros.org/​ros/​ubuntu $(lsb_release -sc) main" > /​etc/​apt/​sources.list.d/​ros-latest.list'​ sudo sh -c 'echo "deb http://​packages.ros.org/​ros/​ubuntu $(lsb_release -sc) main" > /​etc/​apt/​sources.list.d/​ros-latest.list'​
    
-Mettre en place les clés : +**Mettre en place les clés :** 
-sudo apt-key adv --keyserver hkp://​ha.pool.sks-keyservers.net:​80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116+ 
 +sudo apt-key adv --keyserver hkp://​ha.pool.sks-keyservers.net:​80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 ​// 
    
-Installation :+**Installation :** 
 sudo apt update sudo apt update
 +
 sudo apt install ros-melodic-desktop-full sudo apt install ros-melodic-desktop-full
    
    
-Initialisation rosdep :+**Initialisation rosdep :** 
 sudo rosdep init sudo rosdep init
 +
 rosdep update rosdep update
    
-Configuration environnement :+**Configuration environnement :** 
 echo "​source /​opt/​ros/​melodic/​setup.bash"​ >> ~/.bashrc echo "​source /​opt/​ros/​melodic/​setup.bash"​ >> ~/.bashrc
 +
 source ~/.bashrc source ~/.bashrc
    
-Installation des packages dépendants :+**Installation des packages dépendants :** 
 sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
-  +
- +
 [Explication porvenant de : http://​wiki.ros.org/​melodic/​Installation/​Ubuntu] [Explication porvenant de : http://​wiki.ros.org/​melodic/​Installation/​Ubuntu]
  
Line 35: Line 46:
  
  
-==== Intégration Turtlebot3: ==== +=====Intégration Turtlebot3:===== 
  
  
-Création des répertoires:​+**Création des répertoires:​** 
 mkdir ~/catkin_ws mkdir ~/catkin_ws
 +
 mkdir ~/​catkin_ws/​src mkdir ~/​catkin_ws/​src
  
  
-Télécharger des codes sources de Turtlebot3:+**Télécharger des codes sources de Turtlebot3:** 
 cd ~/​catkin_ws/​src/​ cd ~/​catkin_ws/​src/​
 +
 git clone https://​github.com/​ROBOTIS-GIT/​turtlebot3_simulations.git git clone https://​github.com/​ROBOTIS-GIT/​turtlebot3_simulations.git
 +
 git clone https://​github.com/​ROBOTIS-GIT/​turtlebot3_msgs.git git clone https://​github.com/​ROBOTIS-GIT/​turtlebot3_msgs.git
 +
 git clone https://​github.com/​ROBOTIS-GIT/​turtlebot3.git git clone https://​github.com/​ROBOTIS-GIT/​turtlebot3.git
  
  
-Installation:​+**Installation:​** 
 cd ~/catkin_ws && catkin_make cd ~/catkin_ws && catkin_make
  
  
-Configuration environnement:​+**Configuration environnement:​** 
 Ajouter les lignes suivantes dans le fichier “~/​.bashrc”:​ Ajouter les lignes suivantes dans le fichier “~/​.bashrc”:​
 +
 source ~/​catkin_ws/​devel/​setup.bash source ~/​catkin_ws/​devel/​setup.bash
 +
 export TURTLEBOT3_MODEL=burger export TURTLEBOT3_MODEL=burger
  
Line 65: Line 86:
  
  
-Utilisation des codes sources pour la partie Gazebo : +=====Utilisation des codes sources pour la partie Gazebo :=====
  
  
-Les codes sources contiennent deux fichier “gazeboEntity.py” et “simGazebo.py” qui se situent dans le répertoire “program_gazebo” sur la branche “dev-Yao_ZHAO”.+Les codes sources contiennent deux fichier “gazeboEntity.py” et “simGazebo.py” qui se situent dans le répertoire “programmeGazebo”.
  
  
-Le fichier gazeboEntity.py contient les méthodes suivantes:+====Le fichier gazeboEntity.py contient les méthodes suivantes:====
  
  
-__init__ ​+** _init _ :**
 La méthode de construction,​ deux paramètes “model_name” et “relative_entity_name” sont nécessaires. La méthode de construction,​ deux paramètes “model_name” et “relative_entity_name” sont nécessaires.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 model = GazeboEntity("​turtlebot3_burger","​world"​) model = GazeboEntity("​turtlebot3_burger","​world"​)
 +</​code>​
  
  
-* pre_get_model_state : +**pre_get_model_state :**
 Initialisation des paramètres pour utiliser le service “/​gazebo/​get_model_state”,​ ceci est appelée dans les méthodes get_position,​get_orientation,​get_linear et get_angular. Initialisation des paramètres pour utiliser le service “/​gazebo/​get_model_state”,​ ceci est appelée dans les méthodes get_position,​get_orientation,​get_linear et get_angular.
  
  
-* get_position :+**get_position :**
 Permet de récupérer la position d’un objet. Permet de récupérer la position d’un objet.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 model = GazeboEntity("​turtlebot3_burger","​world"​) model = GazeboEntity("​turtlebot3_burger","​world"​)
 model.get_position() model.get_position()
 +</​code>​
  
  
-* get_orientation : +**get_orientation :** 
 Permet de récupérer l’orientation d’un objet. Permet de récupérer l’orientation d’un objet.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 model = GazeboEntity("​turtlebot3_burger","​world"​) model = GazeboEntity("​turtlebot3_burger","​world"​)
 model.get_orientation() model.get_orientation()
 +</​code>​
  
  
-* get_linear : +**get_linear :** 
 Permet de récupérer la vitesse linéaire. Permet de récupérer la vitesse linéaire.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 model = GazeboEntity("​turtlebot3_burger","​world"​) model = GazeboEntity("​turtlebot3_burger","​world"​)
 model.get_linear() model.get_linear()
 +</​code>​
  
  
-* get_angular :+**get_angular :**
 Permet de récupérer la vitesse angulaire. Permet de récupérer la vitesse angulaire.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 model = GazeboEntity("​turtlebot3_burger","​world"​) model = GazeboEntity("​turtlebot3_burger","​world"​)
 model.get_angular() model.get_angular()
 +</​code>​
  
  
-* remove_entity : +**remove_entity :** 
 Permet de supprimer un objet. Permet de supprimer un objet.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 model = GazeboEntity("​turtlebot3_burger","​world"​) model = GazeboEntity("​turtlebot3_burger","​world"​)
 model.remove_entity() model.remove_entity()
 +</​code>​
  
  
-* set_model_position :+**set_model_position :**
 Permet de modifier la position d’un objet, trois paramètres les positions x,y,z sont nécessaires. Permet de modifier la position d’un objet, trois paramètres les positions x,y,z sont nécessaires.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 model = GazeboEntity("​turtlebot3_burger","​world"​) model = GazeboEntity("​turtlebot3_burger","​world"​)
 model.set_model_position(2,​2,​0) model.set_model_position(2,​2,​0)
 +</​code>​
  
  
-* set_model_orientation :+**set_model_orientation :**
 Permet de modifier l’orientation d’un objet, trois paramètres les orientations x,y,z sont nécessaires. Permet de modifier l’orientation d’un objet, trois paramètres les orientations x,y,z sont nécessaires.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 model = GazeboEntity("​turtlebot3_burger","​world"​) model = GazeboEntity("​turtlebot3_burger","​world"​)
 model.set_model_orientation(0,​0,​-1) model.set_model_orientation(0,​0,​-1)
 +</​code>​
  
 +**move_robot :**
 +Permet de faire avancer le turtlebot, une liste contenant une vitesse linéaire et une vitesse angulaire et un temps de simulation sont nécessaire.
  
-* move_robot : 
-Permet de faire avancer le turtlebot, une liste contenant une vitesse linéaire et une vitesse angulaire est nécessaire. 
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 model = GazeboEntity("​turtlebot3_burger","​world"​) model = GazeboEntity("​turtlebot3_burger","​world"​)
 +# list contient les vitesses
 +list = [0.3,0]
 +# t est le temps de simulation
 +t=4
 try: try:
-        model.move_robot(list)+        model.move_robot(list,t)
 except rospy.ROSInterruptException:​ except rospy.ROSInterruptException:​
         pass         pass
 +</​code>​
  
 +====Le fichier simGazebo.py contient les méthodes suivantes:​====
  
  
- +**start :**
-Le fichier simGazebo.py contient les méthodes suivantes:​ +
- +
- +
-* start : +
 Permet de démarrer une simulation. ​ Permet de démarrer une simulation. ​
 +<​code>​
 Exemple d’utilisation:​ Exemple d’utilisation:​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.start() simulateur.start()
 +</​code>​
  
  
-* enPause : +**enPause :**
 Permet de mettre en pause la simulation. Permet de mettre en pause la simulation.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.enPause() simulateur.enPause()
 +</​code>​
  
  
-* resetSimulation : +**resetSimulation :** 
 Permet de réinitialiser la simuation (timing, les positions des objets...) Permet de réinitialiser la simuation (timing, les positions des objets...)
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.resetSimulation() simulateur.resetSimulation()
 +</​code>​
  
  
-* resetWorld : +**resetWorld :**
 Permet de réinitialiser le world. Permet de réinitialiser le world.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.resetWorld() simulateur.resetWorld()
 +</​code>​
  
  
-* getListModel : +**getListModel :**
 Permet de récupérer la liste des objet dans le world. Permet de récupérer la liste des objet dans le world.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.getListModel() simulateur.getListModel()
 +</​code>​
  
  
-* getSimTime : +**getSimTime :** 
 Permet de récupérer le temps de simulation. Permet de récupérer le temps de simulation.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.getSimTime() simulateur.getSimTime()
 +</​code>​
  
- +**loadWorld :**
-* loadWorld : +
 Permet de charger un world, une paramètre d’une liste des ficher launcher est nécessaire. Permet de charger un world, une paramètre d’une liste des ficher launcher est nécessaire.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 list = ['/​home/​yao/​catkin_ws/​src/​turtlebot3_simulations/​turtlebot3_gazebo/​launch/​turtlebot3_stage_1.launch'​] list = ['/​home/​yao/​catkin_ws/​src/​turtlebot3_simulations/​turtlebot3_gazebo/​launch/​turtlebot3_stage_1.launch'​]
 simulateur.loadWorld(list) simulateur.loadWorld(list)
 +</​code>​
  
  
-* callbackAllProperties : +**callbackAllProperties :** 
 Fonction callback appelé par la fonction getAllProperties. Fonction callback appelé par la fonction getAllProperties.
  
  
-* callbackListModel : +**callbackListModel :**
 Fonction callback appelé par la fonction getListModelBySuscriber. Fonction callback appelé par la fonction getListModelBySuscriber.
  
  
-* callbackPose :+**callbackPose :**
 Fonction callback appelé par la fonction getAllPose. Fonction callback appelé par la fonction getAllPose.
  
  
-* callbackTwist :+**callbackTwist :**
 Fonction callback appelé par la fonction getAllTwist. Fonction callback appelé par la fonction getAllTwist.
  
  
-* getAllProperties :+**getAllProperties :**
 Permet de récupérer tous les properties de tous les objets de type Suscriber. Permet de récupérer tous les properties de tous les objets de type Suscriber.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.getAllProperties() simulateur.getAllProperties()
 +</​code>​
  
  
-* getListModelBySuscriber :+**getListModelBySuscriber :**
 Permet de récupérer une liste des objets dans le world de type Suscriber. Permet de récupérer une liste des objets dans le world de type Suscriber.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.getListModelBySuscriber() simulateur.getListModelBySuscriber()
 +</​code>​
  
  
-* getAllPose : +**getAllPose :**
 Permet de récupérer les positions et les orientations des objets dans le world de type Suscriber. Permet de récupérer les positions et les orientations des objets dans le world de type Suscriber.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.getAllPose() simulateur.getAllPose()
 +</​code>​
  
  
-* getAllTwist :+**getAllTwist :**
 Permet de récupérer les vitesse des objets dans le world de type Suscriber. Permet de récupérer les vitesse des objets dans le world de type Suscriber.
 +
 Exemple d’utilisation:​ Exemple d’utilisation:​
 +<​code>​
 simulateur = Simulator() simulateur = Simulator()
 simulateur.getAllTwist() simulateur.getAllTwist()
 +</​code>​
 +
  • simulatorgazebo.1550139482.txt.gz
  • Last modified: 2019/04/25 14:08
  • (external edit)