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

De Wiki de Projets IMA
(Semaine 4)
(Semaine 3)
Ligne 161 : Ligne 161 :
  
 
<u> ROS </u>
 
<u> ROS </u>
 +
 +
De plus, nous avons profité de cette semaine pour nous intéresser à un autre moyen de communiquer avec le drone: ROS. ROS est une plateforme de développement logicielle pour les robots qui est compatible avec les drones Bebop 2 de Parrot. Nous voulons utiliser cette plateforme pour faire la passerelle wifi entre le drone et Matlab ou un autre langage de programmation.
 +
 +
La prise en main de ROS n'est pas forcément très évidente ce pourquoi nous avons commencé à suivre les tutoriels pour débutant proposé sur le site de ROS.
  
 
==Semaine 4==
 
==Semaine 4==

Version du 11 octobre 2018 à 14:02


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.

Nous travaillerons la plupart du temps en C006 ou C008, mais aussi en C305, car la salle sera équipée prochainement de filet afin de manipuler et faire des tests avec le drone en tout sécurité.

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

Choix techniques : matériel et logiciel

Drone Parrot Bebop 2

Environnement Linux

ROS : Robot Operating System

Parrot SDK

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

Python pour créer une IHM (Interface Homme/Machine)

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

En cours

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-

Semaine 3

Pour cette semaine, nous venons d'avoir l'accès au git d'un groupe de chercheurs travaillant également sur le bebop 2, ce qui nous permet d'avoir des informations supplémentaires sur le drone, notamment de la documentation.

Sur ce git, il y a notamment un prototype d'une IHM (Interface Homme/Machine) que nous allons étudier afin de trouver comment nous pouvons récupérer les données du drone en temps réel. Malheureusement, après étude de l'IHM, nous nous sommes rendus compte que la personne n'avait réaliser que l'interface "visuelle" et donc, là où nous pensions trouver des commandes pour récupérer des données, ce n'est qu'en réalité une zone de texte, où la personne a mis des valeurs aléatoires. Nous sommes donc toujours à la recherche de commandes afin de récupérer des données, notamment via SDK.

ROS

De plus, nous avons profité de cette semaine pour nous intéresser à un autre moyen de communiquer avec le drone: ROS. ROS est une plateforme de développement logicielle pour les robots qui est compatible avec les drones Bebop 2 de Parrot. Nous voulons utiliser cette plateforme pour faire la passerelle wifi entre le drone et Matlab ou un autre langage de programmation.

La prise en main de ROS n'est pas forcément très évidente ce pourquoi nous avons commencé à suivre les tutoriels pour débutant proposé sur le site de ROS.

Semaine 4

Au fil de nos recherches, nous avons pu remarquer que les technologies que nous souhaitons utiliser sont assez différentes. Nous avons d'un côté ROS, qui est très ouvert, où l'on peut trouver beaucoup d'informations, mais ça reste néanmoins un outil très généraliste dans la robotique. Alors que SDK de son côté, c'est un peu l'inverse, c'est-à-dire qu'il est très fermé, car nous avons du mal à trouver certaines informations, mais pour autant, c'est l'outil le plus proche du drone.

Cette semaine, nous avons donc focalisé nos recherches sur la récupération de données via SDK, car pour l'instant il n'y a qu'avec cet outil que nous avons réussi à le manipuler (hors smartphone et télécommande).

Documents Rendus