======Simulateur Gazebo====== **Auteur :** Yao ZHAO =====Prérequis :===== Environnement Linux : Ubuntu 18.04 =====Installation du ROS Melodic :===== **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' **Mettre en place les clés :** sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 // **Installation :** sudo apt update sudo apt install ros-melodic-desktop-full **Initialisation rosdep :** sudo rosdep init rosdep update **Configuration environnement :** echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc **Installation des packages dépendants :** sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential [Explication porvenant de : http://wiki.ros.org/melodic/Installation/Ubuntu] =====Intégration Turtlebot3:===== **Création des répertoires:** mkdir ~/catkin_ws mkdir ~/catkin_ws/src **Télécharger des codes sources de Turtlebot3:** cd ~/catkin_ws/src/ 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.git **Installation:** cd ~/catkin_ws && catkin_make **Configuration environnement:** Ajouter les lignes suivantes dans le fichier “~/.bashrc”: source ~/catkin_ws/devel/setup.bash export TURTLEBOT3_MODEL=burger [Explication porvenant de : http://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/] =====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 “programmeGazebo”. ====Le fichier gazeboEntity.py contient les méthodes suivantes:==== ** _init _ :** La méthode de construction, deux paramètes “model_name” et “relative_entity_name” sont nécessaires. Exemple d’utilisation: model = GazeboEntity("turtlebot3_burger","world") **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. **get_position :** Permet de récupérer la position d’un objet. Exemple d’utilisation: model = GazeboEntity("turtlebot3_burger","world") model.get_position() **get_orientation :** Permet de récupérer l’orientation d’un objet. Exemple d’utilisation: model = GazeboEntity("turtlebot3_burger","world") model.get_orientation() **get_linear :** Permet de récupérer la vitesse linéaire. Exemple d’utilisation: model = GazeboEntity("turtlebot3_burger","world") model.get_linear() **get_angular :** Permet de récupérer la vitesse angulaire. Exemple d’utilisation: model = GazeboEntity("turtlebot3_burger","world") model.get_angular() **remove_entity :** Permet de supprimer un objet. Exemple d’utilisation: model = GazeboEntity("turtlebot3_burger","world") model.remove_entity() **set_model_position :** Permet de modifier la position d’un objet, trois paramètres les positions x,y,z sont nécessaires. Exemple d’utilisation: model = GazeboEntity("turtlebot3_burger","world") model.set_model_position(2,2,0) **set_model_orientation :** Permet de modifier l’orientation d’un objet, trois paramètres les orientations x,y,z sont nécessaires. Exemple d’utilisation: model = GazeboEntity("turtlebot3_burger","world") model.set_model_orientation(0,0,-1) **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. Exemple d’utilisation: model = GazeboEntity("turtlebot3_burger","world") # list contient les vitesses list = [0.3,0] # t est le temps de simulation t=4 try: model.move_robot(list,t) except rospy.ROSInterruptException: pass ====Le fichier simGazebo.py contient les méthodes suivantes:==== **start :** Permet de démarrer une simulation. Exemple d’utilisation: simulateur = Simulator() simulateur.start() **enPause :** Permet de mettre en pause la simulation. Exemple d’utilisation: simulateur = Simulator() simulateur.enPause() **resetSimulation :** Permet de réinitialiser la simuation (timing, les positions des objets...) Exemple d’utilisation: simulateur = Simulator() simulateur.resetSimulation() **resetWorld :** Permet de réinitialiser le world. Exemple d’utilisation: simulateur = Simulator() simulateur.resetWorld() **getListModel :** Permet de récupérer la liste des objet dans le world. Exemple d’utilisation: simulateur = Simulator() simulateur.getListModel() **getSimTime :** Permet de récupérer le temps de simulation. Exemple d’utilisation: simulateur = Simulator() simulateur.getSimTime() **loadWorld :** Permet de charger un world, une paramètre d’une liste des ficher launcher est nécessaire. Exemple d’utilisation: simulateur = Simulator() list = ['/home/yao/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/launch/turtlebot3_stage_1.launch'] simulateur.loadWorld(list) **callbackAllProperties :** Fonction callback appelé par la fonction getAllProperties. **callbackListModel :** Fonction callback appelé par la fonction getListModelBySuscriber. **callbackPose :** Fonction callback appelé par la fonction getAllPose. **callbackTwist :** Fonction callback appelé par la fonction getAllTwist. **getAllProperties :** Permet de récupérer tous les properties de tous les objets de type Suscriber. Exemple d’utilisation: simulateur = Simulator() simulateur.getAllProperties() **getListModelBySuscriber :** Permet de récupérer une liste des objets dans le world de type Suscriber. Exemple d’utilisation: simulateur = Simulator() simulateur.getListModelBySuscriber() **getAllPose :** Permet de récupérer les positions et les orientations des objets dans le world de type Suscriber. Exemple d’utilisation: simulateur = Simulator() simulateur.getAllPose() **getAllTwist :** Permet de récupérer les vitesse des objets dans le world de type Suscriber. Exemple d’utilisation: simulateur = Simulator() simulateur.getAllTwist()