Pilote automatique
Préambule
Lancez roscore puis vrep. Dans vrep, chargez la scène Corridors.ttt que nous vous fournissons. Il s'agit d'un environnement intérieur. Importez dans cette scène votre drone (load model). Sauvegardez le tout (le drone dans les couloirs) comme une scène.
Si ce n'est pas encore fait, téléchargez le package demo-teleop depuis gitlab.
cd ~/ros-ws/src
git clone https://github.com/HerveFrezza-Buet/demo-teleop.git
	
Contrôleur interruptible
Utilisation de "safe-drone"
Lancez v-rep, lancez la simulation. Pour rappel, visualisez les topics liés à la simulation du drone.
rostopic list
Nous allons piloter le drone via le contrôleur sécurisé fourni par demo-teleop. Le noeud safe_drone_teleop souscrit à : Il publie sur : Lançons ce noeud (dans une petite fenêtre terminal à part, afin de disposer d'une interface clavier facilement accessible).
rosrun demo_teleop safe_drone_teleop.py cmd_vel_in:=/cmd_vel cmd_vel_out:=/drone/cmd_vel
Ce noeud attend des commandes au clavier pour le vol manuel, et sur le topic cmd_vel pour le vol automatique. Observez le statut dans un autre terminal...
rostopic echo /status
... et pilotez votre drone au clavier en visualisant le drone et son statut. Vous pouvez modifier les paramètres de safe_drone_teleop en cours d'exécution (les vitesses lineaires et angulaires, mais aussi le délai avant la reprise du vol automatique) en lançant
rosrun rqt_reconfigure rqt_reconfigure
Un premier contrôleur
Dans votre workspace (dans le sous-dossier src), décompressez le package flow_control_py.tar.gz. Ce package définit des contrôleurs, vous pourrez ajouter les vôtres.
Pour le serveur, commençons par regarder le noeud flow_control_001.py (nous supposons ici que vrep et safe_drone_teleop sont en cours d'exécution).
rosrun flow_control_py flow_control_001.py
Visualisez le topic d'image /image_out/compressed pendant que vous jouez avec le drone.
Lisez bien (et comprenez...) le code de flow_control_001.py.
Contrôleur par flux optique
Contrôleur naïf
Remplaçons le contrôleur flow_control_001.py par flow_control_002.py (il suffira de lancer ce noeud-là à la place). Lisez le code attentivement. Le fait d'avoir un retour graphique des éléments du calcul (flux optique dans les régions, affichage du twist calculé) est un bon moyen pour débugger.
rosrun flow_control_py flow_control_002.py image_in/compressed:=/drone/front/compressed
Au fait... avez-vous compris comment marche ce contrôleur ?
Contrôleur réaliste
Implémentez (dans flow_control_003.py, flow_control_004.py...) vos essais de contrôleurs, en essayant de rendre le drone le plus autonome possible (prise de virages, freinage devant un cul de sac, etc...).
Passage sur un vrai drone
Les drones Parrot sont pris en charge sous ROS... et si on se passait de V-REP ?