Drone et occulus rift
Cahier des charges
Présentation générale du projet
Contexte
Depuis quelques années seulement, les drones se sont popularisés dans le domaine de l'utilisation civile.
Équipés de caméras, ils peuvent être utilisés pour lutter contre l'insécurité, surveiller des manifestations ou pour savoir le nombre de personnes prises au piège d'un immeuble en flammes.
Ils peuvent être aussi utilisés pour la prise de vues aériennes.
Description du projet
L'objectif de ce projet est de concevoir et implémenter, sur un drone de bonne manufacture, un système embarqué capable de diffuser un flux vidéo en 3D stéréoscopique sur un casque de réalité virtuelle.
De plus, nous avons eu deux idées pour la gestion du drone :
La première idée est de contrôler le drone en position directement via les mouvements de la tête à l'aide du casque, et nous aurions simplement fixé une caméra sur le drone pour pouvoir nous repérer.
La deuxième idée, retenue après discussion avec notre encadrant M. Dequidt, est de contrôler le drone en position via une télécommande par exemple.
Nous aurions cependant une caméra fixée sur le drone capable de tourner suivant deux axes et contrôlée via les mouvements de la tête grâce au casque. Un ordinateur embarqué (type Raspberry) récupérera en liaison sans fil les informations (inclinaison par ex.) du casque pour agir sur les moteurs en plus d'envoyer le flux vidéo des caméras.
Contraintes
- Notre système embarqué ne devra pas excéder le poids de charge du drone (1kg).
- Il faudra pouvoir alimenter notre système soit via l'alimentation du drone, soit à l'aide d'une source d'énergie supplémentaire.
- La communication entre le drone, la télécommande pour piloter le drone et l'oculus doit se faire depuis une distance raisonnable (au moins 20 mètres).
Choix techniques : Matériel et Logiciel
- Matériel
- x1 ou x2 Caméras (résolution 800x600 minimum) pour récupérer des images depuis le drone, la vision 3D sera soit faite grâce à deux caméras, soit grâce à une caméra suivi d'un traitement d'image plus poussé.
- x1 Raspberry Pi 2 pour le traitement d'image lié aux caméras, l’émission et réception du flux vidéo et le contrôle de la ou les caméras à distance. [Fournie 27/01/2015]
- x1 Dongle Wifi (compatible Raspberry Pi 2, Wi-Pi par exemple) pour la communication sans fil entre l'utilisateur du drone et la structure montée sur le drone.[Fourni 27/01/2015]
- x1 Drone de bonne manufacture (déjà commandé par l'école)
- x1 Oculus Rift (déjà commandé par l'école)
- x1 Servomoteurs pour faire pivoter selon 2 axes la structure où seront fixés les caméras (360°).[1 fourni 27/01/2015]
- X1 Micro Servomoteur pour piloter "" (180°) Acheté par les élèves
- X1 breadboard
- X10 fils mâle/mâle
- Logiciel
- Solidworks ou un autre logiciel de modélisation 3D pour concevoir les différents supports de la structure.
- Tout logiciel de traitement de texte pour la programmation (certainement C)
- Autres
- Utilisation de l'imprimante 3D du FabLab pour concevoir les différents supports de la structure.
Calendrier prévisionnel
Avancement du Projet
Semaine 1 (25 janv - 30 janv)
- Rassemblement du matériel disponible à l'école (manque Oculus et Drone)
- Recherche sur internet pour une batterie, deux caméras
Semaine 2 (1 fev - 6 fev)
- Documentation sur la Raspberry (configuration des GPIO)
- Installation et configuration de la Raspberry (connexion automatique sur réseau local)
- Installation des bibliothèques pour la commande des servomoteurs via Raspberry
- Premiers essais de commande des servos : problème au niveau des librairies
- Premières idées sur la structure du support caméra pour 3D Stéréoscopique
Semaine 3 (8 fev - 13 fev)
- Résolution (partielle) du problème de librairie pour contrôler les servomoteurs (toutes les fonctions non disponibles)
- Précision angulaire d'environ 10° avec la fonction de contrôle utilisée (insuffisant)
- Début de conception de support pour fixer la Raspberry et la batterie externe sur le drône
- Réception du drone
Semaine 4 (22 fev - 27 fev)
- Résolution complète du problème de librairie pour contrôler les servomoteurs
- Nouvelle fonction de la librairie utilisée pour le contrôle des servomoteurs
- Précision angulaire d'environ 0,1° avec la nouvelle fonction de contrôle utilisée mais sur une plage de 120° au lieu de 180°
- Essais et recherches pour contrôler les servomoteurs précisément et sur une plage plus grande
- Problème de Wifi qui se déconnecte tout seul
- On essayera de transformer la Raspberry en Hotspot pour voir si c'est mieux
- Sinon on utilisera une borne wifi (solution mieux adaptée dans ce cas)
- Discussion avec notre tuteur (M. Dequidt)
- Mise au point sur l'avancement du projet
- Une salle va nous être prêtée pour effectuer les tests au moment venu (plafond de 6m pour le drone)
- L'Oculus, prêté par un laboratoire ne va pas tardé à arrivé
- Notre tuteur se propose de passer quelques heures avec nous pour travailler sur la manière de récupérer les valeurs de l'accéléromètre de l'Oculus
Semaine 5 (29 fev - 5 mars)
- Installation et paramétrage de la Raspberry en tant que point d'accès wifi
- Point d'accès wifi sur la Raspberry impossible à faire fonctionner (problème au niveau du DHCP...)
- On verra plus tard pour le wifi, à ce qu'il parait le réseau de l'école "fonctionne très bien" du coup on pourrait travailler dessus
- OpenCV
- Documentation
- Compilation et test de fonctionnement sur une machine indépendante
- Diverses méthodes étudiées vis à vis des flux vidéo des deux caméras
- Motion, OpenCV, (et d'autres à ajouter car j'ai plus les noms) //screens videos inc.
- Streaming sur une page internet ?
Semaine 6 (7 mars - 12 mars)
- Travail sur l'Oculus DK2 dans les locaux de l'IRCICA avec notre tuteur (M. Dequidt)
- Recherche sur le SDK pour comprendre le fonctionnement "logiciel" de l'Oculus
- Code minimaliste et fonctionnel (testé sur OSX) récupérant les valeurs de l'orientation de l'Oculus
- OpenCV est un peu trop lourd pour la Raspberry et peut être inadéquate pour l'utilisation qu'on souhaite en faire
- Nouveaux objectifs
- On va essayer d'ouvrir deux flux vidéos en même temps sur Raspberry
- Tester la compilation du code minimaliste sur Windows et Linux
- Tester le code avec un Oculus DK1 pour juger de la compatibilité du code
- Trouver un moyen pour diffuser les valeurs sur le réseau (certainement de la même manière qu'en Tutorat S&R)