Simulateur Gazebo

Auteur : Yao ZHAO

Environnement Linux : Ubuntu 18.04

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]

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/]

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()
  • simulatorgazebo.txt
  • Last modified: 2019/04/25 14:08
  • (external edit)