Drône contrôlé par gestes : Différence entre versions

De Wiki de Projets IMA
(Contrôle de drone avec télécommande à gestes)
m (Etude du diagramme de classe)
Ligne 84 : Ligne 84 :
 
Cela nous permettra en théorie de conserver une librairie en tant que moteur "DroneControllerLib"
 
Cela nous permettra en théorie de conserver une librairie en tant que moteur "DroneControllerLib"
 
et de la réutiliser aussi bien sur PC que sur Android.<br/>
 
et de la réutiliser aussi bien sur PC que sur Android.<br/>
Exemple d'utilisation :
+
Principe d'utilisation :
 
<center>[[Fichier:DescriptionLib.png|Description des librairies]]</center>
 
<center>[[Fichier:DescriptionLib.png|Description des librairies]]</center>
On voit bien que selon le système d'exploitation cible il sera nécessaire de créer une surcouche spécifique. Dans notre projet nous aurons une librairie DroneControllerLibStd qui apportera la surcouche pour PC et DroneControllerLibAndroid qui fera la même chose pour android.  
+
On voit bien que selon le système d'exploitation cible qu'il sera nécessaire de créer une surcouche spécifique. Dans notre projet nous aurons une librairie DroneControllerLibStd qui apportera la surcouche pour PC et DroneControllerLibAndroid qui fera la même chose pour android.
 +
Chacune de ces libraries spécifiques devront redéfinir leurs propres classes Factory, Utility et Controlleur qui dériveront des classes de la librairie de base DroneControlleurLib.
 +
<center>[[Fichier:ExSurCouche.png|Diagramme de classe du moteur]]</center>
  
 
==='''Séance 3'''===
 
==='''Séance 3'''===

Version du 13 mars 2014 à 15:53

Contrôle de drone avec télécommande à gestes

Cahier des charges


Présentation générale du projet


Contexte

Les télécommandes à gestes sont en passe de devenir des outils incontournables dans les domaines de l’informatique, de la robotique et du multimédia. Déjà présente dans nos consoles et nos télévisions, ces dispositifs proposent différents types de reconnaissance de nos mouvements.
On peut notamment citer les dispositifs suivants :

  • La Kinect pour une reconnaissance des gestes par caméra.
  • La Wiimote qui dispose d’un accéléromètre et d’un gyroscope (en option) afin de détecter les angles d’inclinaisons.
  • Le Leap motion qui permet dans un espace limité de détecter les mouvements des doigts


La start-up canadienne Thalmic Labs a mis au point une technologie peu commune pour piloter une interface ou des objets communicants. Il s’agit d’un brassard nommé « Myo » . Myo est un brassard qui se porte à l’avant-bras, il interprète l’activité électrique des muscles lors de l’utilisation de la main, des doigts et du bras. Cela permet d’associer les mouvements de l’utilisateur à des tâches à envoyer aux appareils compatibles Bluetooth.

Objectif du projet

Le but du projet est de piloter un drone quadcoptère du commerce par le biais d’une interface à geste. Par défaut l’interface utilisée sera le brassard Myo de Thalmic Lab. En cas d’indisponibilité de celui-ci nous utiliserons une télécommande Wiimote.


Description du projet

Le projet s’articule autour de 3 entités :

  • La télécommande qui communique les mouvements de l’utilisateur par liaison Bluetooth au système embarqué.
  • Le système embarqué qui sera la passerelle entre l’interface à geste et le drone. Le système embarqué doit disposer du Wifi et du Bluetooth afin de pouvoir communiquer avec les autres entités.
  • Le drone qui doit être pilotable par le Wifi.


Description du projet


Choix techniques : matériel et logiciel

Dans le cadre du projet, les matériels et logiciels suivants vont être utilisés :

  • Un ArDrone version 1 de la société française Parrot
  • Un smartphone sous Android (version 4.3 ou ultérieure)

Afin de disposer d’un système embarqué léger qui puisse être porté par l’utilisateur nous avons décidé de développer la passerelle directement sur un smartphone de type Android.

  • Un brassard Myo et/ou une télécommande Wiimote

Pour éviter de bloquer le projet suite à une indisponibilité du brassard Myo, qui est en précommande, nous allons travailler en parallèle avec une Wiimote. Il sera donc nécessaire de bien penser notre application (au niveau conception objet) afin de disposer d’un système dynamique.

  • La conception de l’application Android se fera en langage Java qui est largement préconisé pour ce type de système.

Le logiciel Netbeans (version 7.4) a été choisi pour concevoir les applications Android.

  • Une clé bluetooth (emprunté à l'école)


Etapes du projet

Afin de mener à bien le projet, différentes étapes ont étés posées.

=> Prise en main du drone

L’objectif de cette partie est de développer des classes permettant d’envoyer au Drone les routines nécessaires au pilotage de celui-ci en passant par le Wifi. Un soin tout particulier devra être apporté quant à l’aspect marche dégradé de cette partie. Que se passera-t-il pour le drone si l’application plante…

=> Prise en main de la wiimote (en attendant Myo)

Dans cette partie il est question de développer des classes permettant la communication avec une Wiimote à l’aide de la librairie VRPN. Cette étape va permettre de récupérer les informations venant de la Wiimote comme par exemple, l'ordre de déplacement, de décollage ou d'atterrissage.

=> Prise en main du brassard myo

Une fois le brassard en notre possession, il va falloir réaliser une batterie de test avec le sdk de thalmic afin d’étudier la précision du brassard. En effet, il va falloir déterminer les mouvements à utiliser pour le pilotage. Une fois cette phase d’étude terminée nous allons pouvoir réaliser les classes de contrôle correspondantes.

=> Réalisation d'un protoype sur PC

Une fois les classes des étapes précédentes réalisées, nous allons dans un premier temps essayer de piloter le drone avec avec une wiimote en utilisant un pc comme passerelle.

=> Intégration dans Android

Cette ultime étape consistera à intégrer les librairies conçues dans une application Android. Cette étape nécessitera une adaptation au niveau de la surcouche spécifique du système ainsi que la réalisation d'une interface homme machine pour l'application.

Avancement du Projet

Séance 1

Préparation de l'environnement de développement

Nous avons installé et configuré l'environnement de développement nécessaire à la réalisation du projet sur nos machines cela comprend :

  • le Java
  • Netbeans(+plugins NbAndroid et plantUML)
  • le SDK Android
  • une machine virtuelle avec Android sous VirtualBox (pour les tests et déboguage car nous n'avions qu'un seul smartphone compatible avec la version 4.3 d'android)
  • création et utilisation d'un repository sous GitHub pour gérer les sources

Séance 2

Etude du diagramme de classe

Nous devons disposer d'un système générique, permettant l'utilisation de multiple contrôleur et assurant une portabilité PC, Android. Ces différentes contraintes ont été étudiées lors de la réalisation du diagramme de classe de l'application dont voici la représentation UML :

Diagramme de classe du moteur

Le diagramme n'est pas exhaustif. En effet toutes les méthodes et propriétés ne sont pas présentes de plus il évoluera dans le temps. Mais il nous permet d'avoir une bonne vision d'ensemble de la librairie de base du projet.
Le rôle de chacune des classes sera expliqué en détail dans le compte rendu.
Un des points essentiels à retenir du diagramme est l'utilisation du pattern Abstract Factory qui nous permettra de construire dynamiquement nos contrôleurs ainsi que nos classes utilitaires en fonction du système cible.
Cela nous permettra en théorie de conserver une librairie en tant que moteur "DroneControllerLib" et de la réutiliser aussi bien sur PC que sur Android.
Principe d'utilisation :

Description des librairies

On voit bien que selon le système d'exploitation cible qu'il sera nécessaire de créer une surcouche spécifique. Dans notre projet nous aurons une librairie DroneControllerLibStd qui apportera la surcouche pour PC et DroneControllerLibAndroid qui fera la même chose pour android. Chacune de ces libraries spécifiques devront redéfinir leurs propres classes Factory, Utility et Controlleur qui dériveront des classes de la librairie de base DroneControlleurLib.

Diagramme de classe du moteur

Séance 3

Nous avons séparé le travail en 2 parties (une partie par personne).
=>Partie Commande du drone

=>Partie Contrôle de la wiimote