Suivi d un drone par un autre



Documents pareils
STAGE IREM 0- Premiers pas en Python

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

PROGRAMME DETAILLE. Parcours en première année en apprentissage. Travail personnel CC + ET réseaux

Installation de Cisco Unified Call Manager

Figure 1a. Réseau intranet avec pare feu et NAT.

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

Ce TP consiste à installer, configurer et tester un serveur DNS sous Linux. Serveur open source : bind9 Distribution : Mandriva

Routage AODV. Languignon - Mathe - Palancher - Pierdet - Robache. 20 décembre Une implémentation de la RFC3561

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Algorithmique des Systèmes Répartis Protocoles de Communications

M06/5/COMSC/SP1/FRE/TZ0/XX INFORMATIQUE NIVEAU MOYEN ÉPREUVE 1. Mardi 2 mai 2006 (après-midi) 1 heure 30 minutes INSTRUCTIONS DESTINÉES AUX CANDIDATS

//////////////////////////////////////////////////////////////////// Administration systèmes et réseaux

ATELIERS DE FORMATION TECHNICIEN DE MAINTENANCE INFORMATIQUE

LE MICRO ORDINATEUR. Introduction Architecture Les supports amovibles Les composants Le système d exploitation Les portables

Ethernet Industriel Réseaux Ethway Coupleur Ethernet sur Automates Programmables. Plan. Contexte

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Présentation du langage et premières fonctions

UE 8 Systèmes d information de gestion Le programme

Migration NT4 vers Windows 2003 Server

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir.

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Limitations of the Playstation 3 for High Performance Cluster Computing

Configurer la supervision pour une base MS SQL Server Viadéis Services

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Master d'informatique. Réseaux. Supervision réseaux

ÉTUDE DE CAS. Durée : 5 heures Coefficient : 5 CAS FEFORT ÉLÉMENTS DE CORRECTION

E4R : ÉTUDE DE CAS. Durée : 5 heures Coefficient : 5 CAS TRACE ÉLÉMENTS DE CORRECTION

Cours 3 : Python, les conditions

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

Ces deux machines virtuelles seront installées sous VMWARE WORKSTATION.

PROCEDURE ESX & DHCP LINUX

Initiation à la programmation en Python

S LICENCE INFORMATIQUE Non Alt S Alt S S1 S2 S3 S4 SS5 S6 Parcours : S IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques)

VoIP - TPs Etude et implémentation

IBM SPSS Modeler Text Analytics Server for Windows. Instructions d installation

Algorithmique et langages du Web

2. DIFFÉRENTS TYPES DE RÉSEAUX

Enseignement secondaire technique

INF8007 Langages de script

Programmation Web. Madalina Croitoru IUT Montpellier

ndv access point : Utilisation

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Introduction au langage C

La BOX Documentation complémentaire

Application 1- VBA : Test de comportements d'investissements

Parrot démontre sa maîtrise technologique avec le Bebop Drone, un quadricoptère de loisirs avec des caractéristiques d un drone professionnel.

Elle supporte entièrement la gestion de réseau sans fil sous Windows 98SE/ME/2000/XP.

ACTIVITÉ DE PROGRAMMATION

Pour configurer le Hitachi Tecom AH4021 afin d'ouvrir les ports pour "chatserv.exe", vous devez suivre la proc

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

SAGEM Wi-Fi 11g USB ADAPTER Guide de mise en route rapide

2X ThinClientServer Guide d utilisation

Better data. Better decisions. La carière digitale, nouvel outil de suivi et de gestion de l exploitation

Les ACL Cisco. F. Nolot Master 2 Professionnel STIC-Informatique 1

AWS avancé. Surveiller votre utilisation d EC2

Classes et Objets en Ocaml.

Les systèmes de gestion de version

CSI351 Systèmes d exploitation Instructions pour rouler Linux avec Virtual PC dans la salle de labo 2052

Gestion d identités PSL Exploitation IdP Authentic

Administration de Réseaux d Entreprises

La dernière base de données de Teradata franchit le cap du big data grâce à sa technologie avancée

Contrôle d accès UTIL TP N 1 découverte

Exonet : sauvegarde automatisée d une base de données

Informatique & Systèmes de Communication. Stages de 12 à 16 semaines aux Etats-Unis

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Robot humanoïde NAO Système d étude de la robotique mobile

VIDÉOSURVEILLANCE. Procédures de paramétrage des différentes box du marché

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

Le tout à l usage dans un IaaS public «Comment une plateforme industrielle permet de déployer des usages applicatifs en accord avec cette promesse»

Installation Client (licence réseau) de IBM SPSS Modeler 14.2

2 Comment fonctionne un ordinateur, dans les grandes lignes

Bac Professionnel Systèmes Electroniques Numériques

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

DESCRIPTIF DES PROJETS 3EME ANNEE QUI SERONT PRESENTES LORS DE LA JOURNEE DE PROJET DE FIN D ETUDE LE 26/01/2012

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

Journée IJD. Moussa Tari Bako Bachir. 25 juin 2012 ARLES/INRIA. Introduction Travail Chez ARLES

Fiche Produit IPS Manager Assistant

18 TCP Les protocoles de domaines d applications

Contrôleur de communications réseau. Guide de configuration rapide DN

Java Licence Professionnelle CISII,

1.Introduction - Modèle en couches - OSI TCP/IP

NiceLabel pour Services Microsoft Windows Terminal Serveur et Citrix MetaFrame

Installation Windows 2000 Server

eurobraille VOYONS ENSEMBLE MANUEL D'UTILISATION WIFI iris 40, 20 iris-s 32, 20 iris-kb 40,20 VERSION 1.82

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Programmation Internet Cours 4

Agence web en Suisse romande CH-1260 Nyon

Instructions relatives à l installation et à la suppression des pilotes d imprimante PostScript et PCL sous Windows, version 8

Environnements informatiques

Spécialiste Systèmes et Réseaux

Sommaire: Contenu de l emballage : 1x

ALCATEL IP1020. Guide de Configuration pour l offre Centrex OpenIP

Le Tunneling DNS. P.Bienaimé X.Delot P.Mazon K.Tagourti A.Yahi A.Zerrouki. Université de Rouen - M2SSI. 24 février 2011

Partie II PRATIQUE DES CPL

Les formations. Administrateur Systèmes et Réseaux. ENI Ecole Informatique

Une imprimante compacte. Des performances optimales. La meilleure valeur ajoutée.

Rapport du projet Qualité de Service

Transcription:

Suivi d un drone par un autre 1

Sommaire L AR Drone Objectif Idées Faire communiquer les drones Comment programmer le drone? Explication de la solution Difficultés rencontrées 2

L AR Drone 2.0 Quadrirotor Connexion Wifi 3

L AR Drone 2.0 6 capteurs inertiels Mesures des rotations et des accélérations (Centrale inertielle de type MEMS) Capteur ultrasonore Mesures d altitude Caméra verticale Mesures de vitesse linéaire Caméra frontale HD Utilisée pour la détection de tags 4

L AR Drone 2.0 Détection de tags 5

L objectif Réaliser le suivi d un drone par un autre En translation et en rotation En utilisant La détection de tags Les données du drone de tête 6

La commande du drone Comment envoyer et recevoir des données de plusieurs drones simultanément? 7

La communication «commerciale» du drone Création d un réseau WiFi AdHoc géré par le drone Drone : 192.168.1.1 et DHCP pour les clients Comment connecter plusieurs drones Services disponibles En UDP, port 5554 : retour d informations des capteurs «navdata» : Rotations, accélérations, détection de tags, En UDP, port 5555 : flux vidéo Codec : MJPEG-like (DVD) ou H.264-like (TNT) En UDP, port 5556 : contrôle et configuration AT commands 8

Le protocole de communication Principes d AT Commands Un très vieux protocole Exemple pour une commande : AT*PCMD(2,.2,.3,0,0) Cf. Guide du développeur du SDK 9

Communiquer avec 2 drones (1) Utiliser le SDK? Oui mais Utiliser un node.js? Langage simple Expérimental : Implémentation toujours de bas niveau, communication entre plusieurs drones douteuse Utiliser ardrone_autonomy? Plateforme destinée à la robotique : ROS 10

Communiquer avec 2 drones (2) Plateforme ROS avec ardrone_autonomy Simple d utilisation, sous Linux S appuie évidement sur le SDK officiel Permet utilisation de lignes de commande, de python ou de C pour commander Les commandes AT deviennent de simples données dans une matrice, publiés vers le pilote La double commande : possible théoriquement 11

Connecter 2 drones au même point d accès Réseau de type infrastructure : Routeur Non sécurisé, Masque réseau imposé Configuration des drones (machine UNIX) Création d un script de configuration Implémenté dans /data sur les drones et exécuté à distance par Telnet Permet des changements non permanents Exécution du pilote En ajoutant un argument : -ip 192.168.1.1x 12

Avoir un processus différent pour chaque drone Bug dans le SDK de Parrot corrigé partiellement par la communauté Mais ressources partagées : impossible de commander séparément les drones 2 machines virtuelles 13

Idées d algorithmes 14

Un premier algorithme Bleu : vitesse du drone de tête 15

Un premier algorithme Variables utilisées : distance entre les 2 drones et temps d échantillonage V=d/t Avantage : simple, et efficace, mais peu précis 16

Architecture du programme En route vers l inconnu 17

Architecture et fonctionnement Fonctionnement d un ROS : du programme Topic BUS de communication Parameter server Données globales Nodes And master Type de donnée Msg Service disponible via d autres nodes Services 18

Architecture du programme Les modules.py et les références Nodes de contrôle Nodes de commande Fichiers classes Ardrone_suivi.py (Suivi, synchronisation, animations, PID position) Ardrone_controle.py (Envoie commandes, PID vitesse) pid.py (définitions) Keyboard_controller.py (contrôle clavier, mouvements et actions spéciales) Drone_controller.py (synchronisation, status.py (définitions) Nodes spéciaux : Référence : Mike Hammer (Clavier) et Falkor (commande et contrôle) 19 subs_server (1 capteur) et ardrone_autonomy (driver/capteurs)

Contrôle au clavier Drone_controller : création des publishers et des subscribers Drone_status : définition de statuts pour le drone Keyboard_controller : définition du mapping des touches et réactions aux évènements Drone_video_display : gestion de l affichage de la vidéo 20

Drone_controller (extraits) self.subnavdata = rospy.subscriber('/ardrone/navdata',navdata,self.receivenavdata) self.publand = rospy.publisher('/ardrone/land',empty) self.pubcommand = rospy.publisher('/cmd_vel',twist) self.commandtimer = rospy.timer(rospy.duration(command_period/1000.0),self.sendcommand) def ReceiveNavdata(self,navdata): self.status = navdata.state def SendTakeoff(self): if(self.status == DroneStatus.Landed): self.pubtakeoff.publish(empty()) def SendCommand(self,event): if self.status == DroneStatus.Flying or self.status == DroneStatus.GotoHover or self.status == DroneStatus.Hovering: self.pubcommand.publish(self.command) 21

Drone_status class DroneStatus(object): Emergency = 0 Inited = 1 Landed = 2 Flying = 3 Hovering = 4 Test = 5 TakingOff = 6 GotoHover = 7 Landing = 8 Looping = 9 22

Keyboard_controller class KeyMapping(object): PitchForward = QtCore.Qt.Key.Key_E PitchBackward = QtCore.Qt.Key.Key_D RollLeft = QtCore.Qt.Key.Key_S RollRight = QtCore.Qt.Key.Key_F YawLeft = QtCore.Qt.Key.Key_W YawRight = QtCore.Qt.Key.Key_R IncreaseAltitude = QtCore.Qt.Key.Key_Q DecreaseAltitude = QtCore.Qt.Key.Key_A Takeoff = QtCore.Qt.Key.Key_Y Land = QtCore.Qt.Key.Key_H Emergency = QtCore.Qt.Key.Key_Space def keypressevent(self, event): key = event.key() if key == KeyMapping.Emergency: controller.sendemergency() elif key == KeyMapping.Takeoff: controller.sendtakeoff() elif key == KeyMapping.Land: controller.sendland() else: if key == KeyMapping.YawLeft: self.yaw_velocity += 1 elif key == KeyMapping.YawRight: self.yaw_velocity += -1 elif key == KeyMapping.PitchForward: self.pitch += 1 elif key == KeyMapping.PitchBackward: self.pitch += -1 23

Keyboard_controller def keyreleaseevent(self,event): key = event.key() if key == KeyMapping.YawLeft: self.yaw_velocity -= 1 elif key == KeyMapping.YawRight: self.yaw_velocity -= -1 elif key == KeyMapping.PitchForward: self.pitch -= 1 elif key == KeyMapping.PitchBackward: self.pitch -= -1 24

Les transitions mode manuel/automatique Problème : le code original de Falkor est conçu pour un contrôle avec une manette de PS3 1ère solution : implémenter la classe Keymapping dans le fichier, faire hériter la classe ardrone_follow de la classe Drone_video_display et y implémenter directement les réactions aux évènements 2ème solution : faire cohabiter les nodes de contrôle automatique et les nodes de contrôle manuel. On supprime alors le subscriber lié au topic joy/. Plusieurs nodes envoient alors des commandes de vitesse au drone. 3ème solution : faire cohabiter les nodes de contrôle automatique et les nodes de contrôle manuel, mais en faisant publier ces dernières dans un topic goal_vel_manual intermédiaire, auquel souscrit la node de contrôle automatique. 25

Pid.py et Ardrone_suivi.py Pid2.py et Ardrone_controle.py Ar Drone Explication de chaque programme Explication du double asservissement : Consigne et capteur (Ardrone_suivi.py) Erreur et correcteur de Position Erreur et Correcteur de Vitesse Processus 26

Explication de chaque programme Ar-drone : pid.py class Pid2: def init ( self, gain_p = 0.0, gain_i = 0.0, gain_d = 0.0, time_constant = 0.0, limite = -1.0 ): 1. def update( self, new_input, x, dx, dt ): Écrêtage par la limite Elaboration du dt et dconsigne Elaboration des erreurs (dérivées, intégrales et simples) Application du correcteur 2. def reset( self ): Remise à zéro des paramètres calculées 27

Explication de chaque programme Ar-drone : pid.py class Pid: def init ( self, Kp = 0.0, Ti = 0.0, Td = 0.0, outputlimit = None ): 1. def get_output( self, pv, dt ): Erreur Intervalles Limites Dérivées et intégrales Stockage ancienne erreur Calcul 1/Ti Sortie et Ecrétage Correction Limitation existante? 28

Explication de chaque programme Ar-drone : ardrone_suivi.py Imports, objets, paramètres Subscribers, Publishers, rospy.timer Méthode Suivi (Timer/Synchronisée) Méthodes annexes (Navdata) Main + rospy.spin() def main(): rospy.init_node( Ardrone_suivi' ) af = ArdroneSuivi() try: rospy.spin() except KeyboardInterrupt: print "Keyboard interrupted" af.usb_service() 29

Principe du suivi Tag visible (derrière le drone suivi) Centrage du tag par rapport à la caméra en un point déterminé (Asservissement par rapport à un point) Positionnement à une distance donnée (asservissement de distance, distance tag) Tag absent On suppose que cela implique une rotation du robot adverse. Engendre une rotation de centre ancienne position du robot adverse, asservie en position angulaire par rapport aux données du drone suivi. Si Tag vu, reprise de l asservissement cidessus, sinon mode «Hover()». 30

L échange de la rotation entre les programmes Drone de tête 192.168.1.10 navdata «topic» rotationz Machine virtuelle de commande du drone de tete 192.168.1.201 (client) Connexion TCP/IP Echange de navdata.rotz Machine virtuelle de commande du drone suiveur 192.168.1.200 (serveur) 31

Explication de chaque programme Ar-drone : ardrone_controle.py Même structure que précédente. MAIS réception et re-correction des commandes reçues : Ardrone_suivi Elaboration de la commande «Correction» positions Topic pub : «cmd_vel_goal» Topic sub : «cmd_vel_goal» Ardrone_controle «Correction» vitesse (PID2) Topic pub : «cmd_vel» Topic sub : «cmd_vel» Ardrone_ autonomy Envoie commandes moteurs 32

Difficultés rencontrées Implémentation de keyboard_controller (gestion des nodes et «cannibalisme», listening events) Détection du tag (gestion de la luminosité, tremblements) Apprentissage partiel du python et du ROS (types, syntaxe, indentation, nodes, sub et Pub, listening events) Compréhension du SDK de base Instabilité du drone en vol stationnaire 33

Conclusion Puissance de l environnement ROS Contrôle des drones simple à effectuer Améliorations Cohabitation entre contrôle manuel et automatique Réglage des PID 34