Differences
This shows you the differences between two versions of the page.
Next revision Both sides next revision | |||
simulators [2019/02/12 13:04] mgp3212019 created |
simulators [2019/02/12 13:06] mgp3212019 |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | Simulateur Gazebo | + | **Simulateur Gazebo** |
+ | |||
+ | **Prérequis :** | ||
- | Prérequis : | ||
- | |||
Environnement Linux : Ubuntu 18.04 | Environnement Linux : Ubuntu 18.04 | ||
- | + | ||
- | Installation du ROS Melodic : | + | ** ** |
- | + | ||
- | Modification du “sources.list”: | + | **Installation du ROS Melodic :** |
- | 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 : | + | |
+ | **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 | 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] | ||
- | Intégration Turtlebot3: | ||
- | Création des répertoires: | + | [Explication porvenant de : [http://wiki.ros.org/melodic/Installation/Ubuntu](http://wiki.ros.org/melodic/Installation/Ubuntu)] |
- | mkdir ~/catkin_ws | + | |
- | mkdir ~/catkin_ws/src | + | |
+ | |||
+ | **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 | ||
- | 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 | git clone https://github.com/ROBOTIS-GIT/turtlebot3.git | ||
- | Installation: | + | **Installation:** |
- | cd ~/catkin_ws && catkin_make | + | |
- | Configuration environnement: | + | cd ~/catkin\_ws && catkin\_make |
- | 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/] | + | **Configuration environnement:** |
+ | Ajouter les lignes suivantes dans le fichier "~/.bashrc": | ||
- | Utilisation des codes sources pour la partie Gazebo : | + | source ~/catkin\_ws/devel/setup.bash |
- | 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”. | + | export TURTLEBOT3\_MODEL=burger |
- | Le fichier gazeboEntity.py contient les méthodes suivantes: | + | [Explication porvenant de : [http://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/](http://emanual.robotis.com/docs/en/platform/turtlebot3/simulation/)] |
- | __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 : | + | **Utilisation des codes sources pour la partie Gazebo :** |
- | Permet de récupérer la position d’un objet. | + | |
- | Exemple d’utilisation: | + | |
- | model = GazeboEntity("turtlebot3_burger","world") | + | |
- | model.get_position() | + | |
- | get_orientation : | + | 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". |
- | Permet de récupérer l’orientation d’un objet. | + | |
- | Exemple d’utilisation: | + | **Le fichier** **gazeboEntity.py** **contient les méthodes suivantes:** |
- | model = GazeboEntity("turtlebot3_burger","world") | + | |
- | model.get_orientation() | + | - **●●**** \_\_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 :** | ||
- | get_linear : | ||
Permet de récupérer la vitesse linéaire. | Permet de récupérer la vitesse linéaire. | ||
- | Exemple d’utilisation: | ||
- | model = GazeboEntity("turtlebot3_burger","world") | ||
- | model.get_linear() | ||
- | get_angular : | + | Exemple d'utilisation: |
+ | |||
+ | model = GazeboEntity("turtlebot3\_burger","world") | ||
+ | |||
+ | model.get\_linear() | ||
+ | |||
+ | - **●●**** get\_angular :** | ||
Permet de récupérer la vitesse angulaire. | Permet de récupérer la vitesse angulaire. | ||
- | Exemple d’utilisation: | ||
- | model = GazeboEntity("turtlebot3_burger","world") | ||
- | model.get_angular() | ||
- | remove_entity : | + | Exemple d'utilisation: |
+ | |||
+ | model = GazeboEntity("turtlebot3\_burger","world") | ||
+ | |||
+ | model.get\_angular() | ||
+ | |||
+ | - **●●**** remove\_entity :** | ||
Permet de supprimer un objet. | Permet de supprimer un objet. | ||
- | Exemple d’utilisation: | ||
- | model = GazeboEntity("turtlebot3_burger","world") | ||
- | model.remove_entity() | ||
- | set_model_position : | + | Exemple d'utilisation: |
- | 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 : | + | model = GazeboEntity("turtlebot3\_burger","world") |
- | Permet de modifier l’orientation d’un objet, trois paramètres les orientations x,y,z sont nécessaires. | + | |
- | Exemple d’utilisation: | + | model.remove\_entity() |
- | model = GazeboEntity("turtlebot3_burger","world") | + | |
- | model.set_model_orientation(0,0,-1) | + | - **●●**** 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 :** | ||
- | move_robot : | ||
Permet de faire avancer le turtlebot, une liste contenant une vitesse linéaire et une vitesse angulaire est nécessaire. | Permet de faire avancer le turtlebot, une liste contenant une vitesse linéaire et une vitesse angulaire est nécessaire. | ||
- | Exemple d’utilisation: | + | |
- | model = GazeboEntity("turtlebot3_burger","world") | + | Exemple d'utilisation: |
+ | |||
+ | model = GazeboEntity("turtlebot3\_burger","world") | ||
try: | try: | ||
- | model.move_robot(list) | + | |
+ | model.move\_robot(list) | ||
except rospy.ROSInterruptException: | except rospy.ROSInterruptException: | ||
- | pass | ||
+ | pass | ||
- | Le fichier simGazebo.py contient les méthodes suivantes: | ||
- | start : | + | |
- | Permet de démarrer une simulation. | + | **Le fichier** **simGazebo.py** **contient les méthodes suivantes:** |
- | Exemple d’utilisation: | + | |
+ | - **start :** | ||
+ | |||
+ | Permet de démarrer une simulation. | ||
+ | |||
+ | Exemple d'utilisation: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
+ | |||
simulateur.start() | simulateur.start() | ||
- | enPause : | + | - **●●**** enPause :** |
Permet de mettre en pause la simulation. | Permet de mettre en pause la simulation. | ||
- | Exemple d’utilisation: | + | |
+ | Exemple d'utilisation: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
+ | |||
simulateur.enPause() | simulateur.enPause() | ||
- | 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: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
+ | |||
simulateur.resetSimulation() | simulateur.resetSimulation() | ||
- | resetWorld : | + | - **●●**** resetWorld :** |
Permet de réinitialiser le world. | Permet de réinitialiser le world. | ||
- | Exemple d’utilisation: | + | |
+ | Exemple d'utilisation: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
+ | |||
simulateur.resetWorld() | simulateur.resetWorld() | ||
- | 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: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
+ | |||
simulateur.getListModel() | simulateur.getListModel() | ||
- | 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: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
+ | |||
simulateur.getSimTime() | simulateur.getSimTime() | ||
- | loadWorld : | + | - **●●**** loadWorld :** |
- | Permet de charger un world, une paramètre d’une liste des ficher launcher est nécessaire. | + | |
- | Exemple d’utilisation: | + | Permet de charger un world, une paramètre d'une liste des ficher launcher est nécessaire. |
+ | |||
+ | Exemple d'utilisation: | ||
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) | ||
- | callbackAllProperties : | + | - **●●**** callbackAllProperties :** |
- | Fonction callback appelé par la fonction getAllProperties. | + | |
- | callbackListModel : | + | Fonction callback appelé par la fonction _getAllProperties_. |
- | Fonction callback appelé par la fonction getListModelBySuscriber. | + | |
- | callbackPose : | + | - **●●**** callbackListModel :** |
- | Fonction callback appelé par la fonction getAllPose. | + | |
- | callbackTwist : | + | Fonction callback appelé par la fonction _getListModelBySuscriber_. |
- | Fonction callback appelé par la fonction getAllTwist. | + | |
+ | - **●●**** callbackPose :** | ||
+ | |||
+ | Fonction callback appelé par la fonction _getAllPose_. | ||
+ | |||
+ | - **●●**** callbackTwist :** | ||
+ | |||
+ | 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: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
+ | |||
simulateur.getAllProperties() | simulateur.getAllProperties() | ||
- | 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: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
+ | |||
simulateur.getListModelBySuscriber() | simulateur.getListModelBySuscriber() | ||
- | 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: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
+ | |||
simulateur.getAllPose() | simulateur.getAllPose() | ||
- | 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: | ||
simulateur = Simulator() | simulateur = Simulator() | ||
- | simulateur.getAllTwist() | ||
+ | simulateur.getAllTwist() |