IMA5 2018/2019 P21 : Pilotage automatique d'un drone : Différence entre versions

De Wiki de Projets IMA
m (Description)
(Semaine 2)
Ligne 98 : Ligne 98 :
 
[[Fichier:ControleBebop2SDK.png|(800px|thumb|center|Contrôle du drone avec SDK]]
 
[[Fichier:ControleBebop2SDK.png|(800px|thumb|center|Contrôle du drone avec SDK]]
  
Une fois cette partie réalisée, nous nous sommes intéressés à la manière de connecter le drone à Matlab. Pour cela nous avons besoin d'utiliser ROS qui est un ensemble d'outils informatique permettant de réaliser des logiciels pour la robotique. ROS permet de faire la passerelle entre Matlab et le drone.
+
Tutoriel d'utilisation de SDK : [[Fichier:Parrot pour développeurs.pdf]]
 +
 
 +
Une fois cette partie réalisée, nous intéressons à la manière de connecter le drone à Matlab. Pour cela nous avons besoin d'utiliser ROS qui est un ensemble d'outils informatique permettant de réaliser des logiciels pour la robotique. ROS permet de faire la passerelle entre Matlab et le drone.
  
 
'''<u> SDK </u>'''
 
'''<u> SDK </u>'''

Version du 3 octobre 2018 à 17:09


Présentation générale

Drone Parrot Bebop 2

Description

Pour réaliser ce projet, nous avons à notre disposition le drone Parrot Bebop 2. Nous ferons donc initialement des essais de vols du drone de manière à le maitriser à l'aide de la manette de pilotage ou alors tout simplement de notre smartphone avec l'application FreeFlight Pro.

Notre projet portera principalement sur l'aspect détection d'objets et analyse de l'environnement en utilisant le traitement d'images. Le développement des applications pourra se faire sur MATLAB en passant par ROS (Robot Operating System) sous Linux, et/ou via une interface homme machine implémenté sur Python.

Une démarche de prospection et recherche bibliographique doit être nécessairement entreprise sur tous ces outils en début de projet.

Pour mener au mieux ce projet, nous avons mis en place une réunion hebdomadaire avec nos encadrants, où nous leur présenterons nos avancées, et choisirons par la suite ce qu'il y a à faire

Objectifs

L'objectif de ce projet est double :

  • Analyse de l'environnement à l'aide des différents capteurs disponibles, notamment le capteur image
  • Pilotage automatique du drone développé spécifiquement par les étudiants

Préparation du projet

Cahier des charges

Choix techniques : matériel et logiciel

Drone Parrot Bebop 2

Environnement Linux

ROS : Robot Operating System

Parrot SDK

MATLAB avec en particulier, la boîte à outils Robotics System

Python

Liste des tâches à effectuer

  • Découverte, prise en main et pilotage du drone
  • Recherche/Documentation sur les différents composants du drone
  • Réalisation d'un schéma bloc pour identifier les différents organes du drone et connaitre les différentes interactions qu'il peut y avoir entre eux
  • Recherche/Documentation pour définir quels outils nous allons choisir
  • Stabilisation du drone
  • Gérer le traitement d'images
  • Réalisation d'un rapport final exploitable afin que les personnes souhaitant travailler sur ce projet puissent ajouter eux même ce qu'ils souhaitent, et mettre en avant leurs connaissances et compétences

Calendrier prévisionnel

Réalisation du Projet

Semaine 1

Durant la première semaine, nous nous sommes entretenues avec nos encadrants de manière à mieux définir le contexte du projet et leurs attentes quant à ce projet. Nous avons ensuite effectuer des recherches générales sur le drone pour connaître ses capacités et être plus familier avec les différents capteurs qu'il possède ainsi que des recherches un peu plus approfondies sur les différentes technologies utilisables avec le drone pour préparer le développement futur.

Cette première semaine a aussi été l'occasion de commencer à prendre en main le drone en effectuant des premiers vols en utilisant l'application Android proposée par Parrot.

Recherches sur le drone :

Inventaire des composants/capteurs

Une caméra verticale pour la stabilisation du drone qui prend une photo du sol toutes les 16 millisecondes et la compare avec la précédente pour déterminer la vitesse du drone.

Un capteur ultrason qui analyse l'altitude de vol jusqu'à 5 mètres.

Un capteur de pression qui mesure la pression de l'air et analyse l'altitude de vol au-delà de 5 mètres.

Un gyroscope 3 axes qui mesure l'angle d'inclinaison du drone.

Un accéléromètre qui mesure la position du drone sur 3 axes et sa vitesse linéaire.

Un magnétomètre 3 axes qui aide à définir la position d'un drone comme une boussole.

Un système mondial de navigation par satellite qui combine un GPS et un GLONASS (système de positionnement par satellite d'origine soviétique) pour la géolocalisation du drone et aide à mesurer la vitesse de drone pour plus de stabilité à haute altitude.


Boîte à outils MATLAB

Nous allons devoir utiliser MATLAB dans le cadre de ce projet pour communiquer avec ROS, mais nous ne savions pas s'il fallait une boîte à outils en particulier ou non. Après plusieurs recherches nous avons trouvé qu'il ne fallait pas de boîte à outils propre au drone à notre disposition. De ce fait, la seule boîte à outils dont nous aurons besoin est : Robotics System Toolbox™

Celle-ci fournit une interface entre MATLAB et Simulink et le système d'exploitation robotique (ROS) qui vous permet de communiquer avec un réseau ROS, d'explorer de manière interactive les capacités des robots et de visualiser les données des capteurs. Il permet de développer, tester et vérifier des algorithmes et applications robotiques. Robotics System Toolbox permet également de créer un réseau ROS autonome directement dans MATLAB et Simulink et importer des fichiers journaux ROS (rosbags) pour visualiser, analyser et post-traiter les données consignées. Ces fonctionnalités vont nous permettre de développer des algorithmes de robotique dans MATLAB et Simulink, tout en nous permettant d'échanger des messages avec d'autres nœuds du réseau ROS. Avec Embedded Coder, nous allons pouvoir générer du code C ++ à partir d'un modèle Simulink pour une application ROS autonome pouvant s'exécuter sur toute plate-forme Linux sur laquelle ROS est installé.

Semaine 2

Lors de la deuxième semaine, nous avons effectué des premiers tests de connexion du drone à un ordinateur. Pour cela, nous avons utilisé le SDK fourni par Parrot ARDroneSDK3 qui possède un code d'exemple permettant de contrôler le Bebop2. Une fois l'ordinateur connecté au wifi du drone, on peut exécuter le programme d'exemple pour faire décoller le drone.

Contrôle du drone avec SDK

Tutoriel d'utilisation de SDK : Fichier:Parrot pour développeurs.pdf

Une fois cette partie réalisée, nous intéressons à la manière de connecter le drone à Matlab. Pour cela nous avons besoin d'utiliser ROS qui est un ensemble d'outils informatique permettant de réaliser des logiciels pour la robotique. ROS permet de faire la passerelle entre Matlab et le drone.

SDK

Le SDK offre une couche d'abstraction sur le bas niveau du drone ainsi peu d'informations issues des capteurs et des actionneurs sont accessibles et il n'est pas possible de piloter directement les moteurs. Néanmoins, Parrot fournit une grande quantité de messages permettant de réaliser des actions complexes (déplacement d'un point A à un point B, retour à la maison, ...) ou des figures acrobatiques (parabole, flip, ...).

Liste des entrées accessibles :

• latitude (double): Position en latitude (en degré)

• longitude (double): Position en longitude (en degré)

• altitude (double): Altitude (en mètre)

• speedX (float): Vitesse relative au nord (en m/s)

• speedY (float): Vitesse relative à l'est (en m/s)

• speedZ (float): Vitesse selon l'axe z (en m/s)

• longitude_accuracy (i8): Erreur de localisation en longitude (en mètre)

• latitude_accuracy (i8): Erreur de localisation en latitude (en mètre)

• altitude_accuracy (i8): Erreur de localisation pour l'altitude (en mètre)

• picture (caméra avant)

• Etat de la batterie : Battery state => percent (u8): Pourcentage de batterie

Liste des commandes offertes par le SDK :

• flip: Le drone fait un flip

• horizontal_panorama: Le drone tourne horizontalement sur lui-même

• dronie: Le drone vole sur une distance donnée avec un angle calculé

• horizontal_reveal: Le drone commence à regarder vers le bas, puis avance tout en regardant lentement à l'horizon

• vertical_reveal: Le drone commence à regarder vers le bas, puis se déplace vers le haut tout en regardant lentement à l'horizon

• parabola: Le drone fait une parabole au-dessus de sa cible et se termine de l'autre côté de celui-ci.

• candle: Le drone vole horizontalement en direction de la cible puis s'envole.

• take off : Décollage

• land : Atterrissage

Le détail sur tous les états et toutes les commandes se trouve ici : https://developer.parrot.com/docs/reference/bebop_2/index.html#bebop-2-reference

Documents Rendus