Drone autonome
Sommaire
- 1 Présentation générale du projet
- 2 Etapes du projet
- 3 Avancement du Projet
- 3.1 Semaine 1 (26 janvier 2015)
- 3.2 Semaine 2 (2 février 2015)
- 3.3 Semaine 3 (9 février 2015)
- 3.4 Semaine 4 (16 février 2015)
- 3.5 Semaine 5 (23 février 2015)
- 3.6 Semaine de vacances de février.
- 3.7 Semaine 6 (09 mars 2015)
- 3.8 Semaine 7 (16 mars 2015)
- 3.9 Semaine 8 (23 mars 2015)
- 3.10 Semaine 9 (30 mars 2015)
- 3.11 Semaine 10 (6 avril 2015)
- 3.12 Semaine 11 (13 avril 2015)
- 3.13 Semaine 12 (20 avril 2015)
- 4 Fichiers Rendus
Présentation générale du projet
Contexte
Les drones sont déjà en phase de test pour la livraison de colis. Pour cela, il leur faut être autonome d'un point A à un point B en s'adaptant à leur environnement.
Objectif du projet
Le but est d'équiper un drone de type AR Drone de chez Parrot pour lui faire effectuer une tâche de façon autonome.
Description du projet
Les drones que nous possédons peuvent être télécommandés tant qu'ils sont à porté d'un point d'accès WiFi. Vous allez en équiper un d'un système embarqué de type pcDuino pour le rendre autonome et pouvoir naviguer hors de porté du WiFi.
Vous commencerez par installer un pcDuino sur un drone avec alimentation sur la batterie déjà disponible.
Un système avec deux interfaces WiFi doit ensuite être étudié, une première pour la connexion pcDuino/drone et la seconde pour la communication avec le pcDuino.
Implantez deux mode de fonctionnement : un premier permettant de contrôler le drone avec une interface Web simple et efficace, un second permettant de spécifier un trajet à plus longue distance. Vous pourriez tester le second mode par un vol circulaire autour des batiments de Polytech'Lille ou un vol à moyenne altitude aux dessus des bâtiments de Polytech'Lille.
Un plus serait de pouvoir reconstituer le vol par un graphique notant la position (système GPS) et l'altitude. Le graphique serait illustré par des images de la caméra embarquée.
Choix techniques : matériel et logiciel
Matériel
- AR Drone 2.0 de Parrot [fourni le 26/1/2015][Récupéré le 18/05/2015]
- pcDuino v1 [fourni le 26/1/2015][Récupéré le 18/05/2015]
- pcDuino V3 nano [fourni le 4/2/2015][Récupéré le 18/05/2015]
- diverses Clef WiFi [fournies le 28/1/2015]
- Shield GPS pour pcDuino [fourni le 4/2/2015][Récupéré le 18/05/2015]
- Matériel pour régulation 5v à partir de la batterie du drone [commandé le 4/2/2015]
- 2 x Clef WiFi pcDuino [fourni le 9/2/2015][Récupéré le 18/05/2015]
Logiciel
- Systéme UNIX
- API ARDRONE lien
Etapes du projet
- Rechercher une solution pour pouvoir envoyer des commandes au drone (voir le SDK fournit par Parrot)
- Prévoir l'alimentation du pcDuino avec la batterie du drone
- Réaliser une liaison entre le pcDuino et le drone via Wifi.
- Faire communiquer les deux appareils.
- Créer un serveur web léger sur le pcDuino
- Utiliser le réseau Wifi de Polytech (PolytechLille)
- Réaliser une interface web simple et efficace pour la gestion des déplacements du drone.
- Mettre en place une mémoire de données sur la localisation voulue et réelle (avec le gyroscope pour obtenir un angle de vue)
- Ajouter un module GPS au pcDuino pour obtenir les données de positionnement.
- Conception d'un shield pour le GPS.
- Réaliser le déplacement automatique en fonction de la différence de coordonnées.
- Récupérer et enregistrer le flux vidéo, le flux de données (positions GPS, angle, …)
- Réaliser le suivi de déplacement sur une carte.
- Réaliser un système de commande en cas d’urgence (ex : l’appareil ce pose a un certain point, ou prise du contrôle par manette, …)
- Réalisation d'une coque adaptée au drone avec le pcDuino
Avancement du Projet
Semaine 1 (26 janvier 2015)
- prise en main du drone via application existante sous androïd
- prise en main de la clé wi-fi
- gestion de l'alimentation du pcDuino via le port USB sous l'arDrone (connecteur à faire) qui délivre du 5V
- prémices de l'interface Web
Semaine 2 (2 février 2015)
- conception shield pour le GPS
- réception pcDuino v3 nano donc reconfiguration
- prise en main des clés wi-fi sans succès
- schéma du site web réalisé et conception en cours
Semaine 3 (9 février 2015)
- réception nouvelles clés wi-fi pour pcDuino
- connection réussie avec les deux clés sur les arDrone
root@ubuntu:~# iwlist wlan0 scan | grep 'ESSID' ESSID:"PolytechGuests" ESSID:"" ESSID:"" ESSID:"" ESSID:"ardrone_105754" ESSID:"PolytechLille" ESSID:"eduroam" ESSID:"LILLE1" ESSID:"PolytechLilleStaff" root@ubuntu:~# iwconfig wlan0 essid ardrone_105754 root@ubuntu:~# iwconfig wlan0 wlan0 Ralink STA ESSID:"ardrone_105754" Nickname:"RT2870STA" Mode:Managed Frequency=2.437 GHz Access Point: 00:26:7E:4F:F9:80 Bit Rate=48 Mb/s RTS thr:off Fragment thr:off Encryption key:off Link Quality=90/100 Signal level:-72 dBm Noise level:-72 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0
- Réalisation de la page de contrôle manuel avec les boutons de commande de base et avec une fonction javascript de test pour vérifier l'envoi d'une donnée
- apprentissage API google maps pour le mode automatique (marqueurs sur la carte et récupération coordonnées GPS)
- utilisation de la librairie node-ar-drone (node.js)
Semaine 4 (16 février 2015)
travaux fonctionnels :
- Connection série entre le GPS et le pcDuino
$GPGGA,000311.800,,,,,0,00,,,M,,M,,*73 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPRMC,000311.800,V,,,,,0.00,0.00,060180,,,N*49 $GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32
- Prise en main de nodejs
- page php intégrant une Google maps avec possibilité de récupérer les coordonnées d'un marqueur via le déplacement de celui-ci ou via une adresse
- alimentation du pcDuino avec la batterie du drone
Semaine 5 (23 février 2015)
- Mesure de consommation électrique
Point de mesure | Convertisseur 12V/5V | pcDuino | GPS | WiFi (x1) | Drone |
---|---|---|---|---|---|
Documentation | ??? | 700mA | 20mA | ??? | ??? |
"Repos" | 16,3mA | 110mA | 10 - 15mA | 13mA | 220 mA |
- Réalisation d'un code en C pour gérer les trames GPS et faire un traitement sur les données
- Prise en main du SDK pour utiliser un programme C pour le contrôle du drone
- Liste des services a retirer du démarrage de Linux
liste via : service --status-all alsa-restore alsa-store anacron cron lightdm plymouth plymouth-log plymouth-splash plymouth-stop plymouth-upstart-bridge x11-common
Semaine de vacances de février.
- Finalisation du programme C pour le GPS
- Test de vol via un programme C qui envoie des requêtes UDP : tous les arguments sont donnés dans la console (port, commande(s), délai ...) => fonctionnel
- Programme C avec commande au clavier : reprise de l'ancien code + ajout des commande AT spécifiques à l'ARDrone + switch case pour gérer les entrées clavier => en cours
Semaine 6 (09 mars 2015)
- Test du GPS
Time: Hour : 14 Minute : 25 Seconds : 9 Milliseconds : 0 Date: Day : 11 Month : 3 Year : 15 Fix : 1 Quality : 1 Location : Latitude : 50.607395 N Longitude : 3.135820 E Other: Speed (knots) : 0.840000 Angle : 210.619995 Altitude : 70.099998 Satellites : 5
- Test de vol du drone à partir du pcDuino. A l’atterrissage le drone se met en mode défaut ce qui empêche un redécollage immédiat.
- Résolution des problèmes de connections ( dhcp dans le fichier rc.local )
- Test des deux codes C avec le PCDuino : premier fonctionnel, mais pas le deuxième
- Débogage du deuxième code
Semaine 7 (16 mars 2015)
- Débogage du programme C de l'envoie des commandes AT terminé, code fonctionnel au clavier avec une interface dans le terminal
- Création d'un cgi-bin pour que la page php envoie une commande ( sous forme d'un simple caractère ) au programme C
- Débogage du programme C du GPS terminé
Semaine 8 (23 mars 2015)
- Reprise du site web pour le mode manuel
- Test d'un cgi-bin qui récupère un caractère envoyé via un "button" avec un "post"
- Création d'une fonction Javascript "envoyer" qui envoie via "Ajax" de type "post" la lettre correspondant à sa définition dans le programme c
- Intégration de cgi-bin dans le programme c pour récupérer le "post"
- Test de la fonction a priori correcte mais le drone ne réagit pas
- Test de la partie GPS sur le Pcduino 1
- Mise à jour du Pcduino nano 3 vers ubuntu 14 pour palier à des problèmes de communications série
Semaine 9 (30 mars 2015)
- Débogage du programme c
- Le drone décolle puis s'arrête après 2s => SDK
- Le drone décolle mais ne répond à aucune autre commande => problème de statut du drone utilisé lors des premiers tests
- Le drone réagit entièrement à toutes les commandes
- Intégration des événements clavier dans la page Web pour plus de confort avec une fonction JavaScript "traitement"
- Reprise de la page Web du mode automatique pour récupérer des coordonnées GPS de Maps et les envoyer via la même méthode => en cours
- Recherche de solutions aux problèmes du port Ethernet (perte du proxy). La solution a été de passer par une connexion Wi-fi afin de coller au cahier des charges
- Réalisation d'une coque pour faire voler le drone avec l'équipement nécessaire
Semaine 10 (6 avril 2015)
- Finalisation de la coque du drone
- Abandon de l'utilisation du cgi-bin pour faire voler le drone en autonomie. Le programme ne peut tourner en continu.
- Nouvelle organisation : le programme de gestion de déplacement attend que le cgi-bin mettent les coordonnées dans un fichier et vient ensuite lire sa position pour décider de ou partir.
Semaine 11 (13 avril 2015)
- Mise en place d'un partage des informations du positionnement GPS entre les différentes applications.
- Test du drone en extérieur, peu concluant dû à l'utilisation d'un téléphone portable comme routeur
- Réalisation d'un nouveau Shield GPS.
Semaine 12 (20 avril 2015)
- Test du drone dans les différents modes de fonctionnement : peu concluant.
-> Un problème survient a chaque vol. Le drone n'arrive pas à gérer le poids supplémentaire ainsi que le changement de centre de gravité et l'aérodynamisme.
- Changement de la carte-mère du drone et de sa carte de gestion ultrasons : Pas concluant, le drone ne réagis plus a nos commandes.
- Modifications du programme de gestion du mode autonome : Aucun changement visible.
- Test du mode manuel avec le pcDuino hors du drone : Fonctionnel.
- Test du mode autonome sans drone en déplacent le matériel et en exécutant ces commandes : Fonctionnel.
- Modifications interne au pcDuino pour faciliter le fonctionnement du projet.
- Réalisation d'un nouveau site web de gestion du drone.
Fichiers Rendus
Fichier:P17 drone autonome LEFORT COLAUTTI.pdf
Fichier:Code source.zip