P24 Robot de surveillance domestique

De Wiki d'activités IMA
Révision datée du 16 octobre 2014 à 13:02 par Sdeltomb (discussion | contributions) (Semaine 3)

Robot de surveillance domestique


Cahier des charges


Présentation générale du projet


Contexte


La robotique est au service de l'homme dans de nombreux domaines y compris dans celui de la surveillance de nos maisons.
En effet de nouveaux robots voient le jour permettant de voir, d'entendre, de parler et de vous déplacer chez vous (ou ailleurs) depuis n'importe quel point de la planète.
Il y a par exemple le robot espion Rovio de la société WoWee:

Rovio

Ou encore pour un usage plus professionnel Lucos de la société Abankos Robotic.

Lucos

Le roomba est un robot aspirateur de la société IRobot. Les Roomba contiennent une interface électronique et logicielle permettant la modification du firmware et ainsi, le contrôle, la modification du comportement et la lecture des données recueillies par les capteurs du robot. Cette fonction, appelée iRobot Roomba Open Interface par le constructeur, a été introduite afin d'encourager les programmeurs et ingénieurs en robotique à apporter leurs propres améliorations au Roomba.
Roomba

Objectif du projet

Le but du projet est la reconversion d’un vieux Roomba dont le bloc de rammasage est HS, en robot de surveillance domestique à l’aide d’un système embarqué dont les différentes fonctionnalités seront les suivantes :
=> Programmation de ronde
=> Détection des intrus (par le biais d’une caméra)
=> Pilotage à distance du robot (par le biais d’une interface web ou application android)
=> Envoi de notification en cas de détection d’une intrusion

Les avantages de la reconversion d'un roomba pour ce projet sont :
=> Réutilisation du dock de recharge
=> Utilisation des différents capteurs embarqués
=> Envoi des commandes par le port série (via la connectique MiniDIN)

Description du projet

Le projet consiste à greffer au Roomba un système embarqué qui dispose du Wifi et sera relié à une webcam. Le système devra permettre de piloter le roomba et de visualiser la vidéo de la webcam par le biais d'une page web.

En fil du temps des nouvelles fonctionnalités pourront être ajoutées:
=> Ajout d'un micro et d'une carte son
=> Programmation de Ronde
=> Détection d'intrus par la caméra
=> Envoi de notification en cas de détection

Choix techniques : matériel et logiciel

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


Étapes du projet

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

=> Prise en main du roomba

L’objectif de cette partie est de créer un programme simple sur le PcDuino permettant de communiquer avec le Roomba. Principalement envoyer des ordres et récupérer les informations des capteurs.

=> Étude et réalisation de la partie alimentation du PcDuino

La batterie du Roomba délivre une tension qui varie en fonction de la charge de celle-ci (de 12V jusque 20V sur la base de recharge). Il est donc nécessaire de prévoir une régulation de cette tension afin d'obtenir l'alimentation nécessaire au bon fonctionnement du PcDuino.

=> Prise en main du kit webcam

Dans cette partie il est question de piloter les servomoteurs du kit et d'installer un logiciel permettant la récupération du flux vidéo de la webcam.

=> Réalisation de la prise en main à distance

Il s'agit ici de disposer pour fin octobre d'une première version du système permettant de prendre à distance le roomba via un site web. Il faudra être capable depuis le site de :

  • piloter le roomba
  • visualiser le flux vidéo de la webcam
  • visualiser les informations des capteurs

=> Détection d'intrus, alarme et notification

Une fois la première version du système finalisé, il faudra étudier et mettre en place un dispositif de détection d'intrusion. Avec la possibilité de déclencher une alarme sonore et envoyer une notification au propriétaire.

=> Programmation de rondes

Dans un dernier temps, si possible, réaliser un système de ronde permettant au Roomba d'inspecter une pièce tout les N temps.

Avancement du Projet

Semaine 1

Réalisation des tests de communication avec le roomba.

Connecteur Mini DIN



J'ai récupéré dans un premier temps la documentation du IROI (iRobot Roomba Open Interface). L'IROI permet de communiquer avec le roomba par le biais d'un port série dont le connecteur est un Mini DIN avec 8 pin. Il a donc fallut faire l'acquisition d'un câble de ce type afin de pouvoir relier le roomba au système embarqué.





Description des pins


Il a fallut ensuite déterminer le rôle de chacun des 8 petits files de couleurs différentes se trouvant dans le cable Mini DIN. Afin de distinguer notamment les files servant pour la communication série par rapport aux files qui permettent l'alimentation. Une breadboard a ensuite été utilisé afin de permettre de relier les files permettant la communication série au PcDuino.






A l'issue de cette première semaine des commandes de mouvement ont été envoyés avec succès au Roomba à l'aide d'un programme en C même si la communication semble fastidieuse. En effet la réussite des commandes semblent pour le moment aléatoire.


Semaine 2

L78S05

J'ai choisis de travailler sur plusieurs parties en parallèle afin de permettre une avancée globale du projet et éviter de me retrouver bloquer trop longtemps sur une même partie. Évolution des différentes parties :

  • Partie Webcam : Montage du kit Webcam. Test du logiciel mjpg-streamer afin de récupérer le flux vidéo de la webcam. Test concluant récupération réussi du flux vidéo via une page web depuis un pc sur le même réseau wifi que le PcDuino.
  • Partie Communication série : création d'un programme en C++ permettant la réalisation des différentes commandes d'actions disponibles. La communication série semble toujours perturber. Le roomba, par moment, ne veut pas répondre aux commandes. Premiers tests de récupération des informations des capteurs réalisés mais non concluant car aucune information n'a été reçu par le PCDuino.
  • Partie régulation : Test d'utilisation d'un régulateur de tension linéaire L78S05. Le résultat n'est pas concluant non seulement le PcDuino n'arrive pas à se lancer mais en plus le régulateur chauffe énormément même avec un dissipateur.


Semaine 3

L78S05
  • Partie régulation : Après étude il semblerait qu'un régulateur à découpage est mieux adapté à la situation. En effet en plus de proposer un meilleur rendement il chauffe beaucoup moins qu'un régulateur linéaire. Les régulateurs à découpage utilisent le rapport cyclique entre l'état passant et l'état bloqué du transistor de découpage pour réguler la tension et le courant de sortie.

Une commande d'un régulateur de tension basé sur un LM2596 est réalisée courant de la semaine dont les caractéristiques sont les suivantes.
      => Tension d'entrée du module prévue 4 à 40V (Tension d'entrée de 12 à 20V fournit par le roomba)
      => Tension de sortie 1.25V à 37V (5V sera suffisant dans notre cas)
      => Sortie en 2A normale et stable (demandé pour le PcDuino)
Le module a été reçu le weekend les premiers tests sont concluants. Le PcDuino démarre et il a fonctionné pendant plus d'une heure.

  • Partie Communication série : Les tests de récupération des informations des capteurs sont toujours problématiques seul le mode stream semble fonctionner. C'est à dire que c'est le roomba qui nous envoie périodiquement les données des capteurs. Cependant une fois le mode activé le roomba ne répond plus aux commandes. La connection série semble toujours instable des problèmes de TEM sont envisagés à cause de la breadboard.



Semaine 4

T Board V2
  • Partie Communication série : Plusieurs actions ont été réalisées pour améliorer la communication série. La breadboard a été remplacée par un câblage en direct (sauf pour l'alimentation), les petits files ont été soudés sur des fils de plus gros diamètre de type jumper mâle (pour la liaison facile avec le PcDuino). Des gaines thermorétractables ont également été utilisées pour protéger les soudures. Un ralentissement de la communication a été réalisé en temporisant l'écriture sur le port série (150ms entre chaque écriture) car le roomba n'arrive pas à gérer la réception si l'intervalle entre deux paquets est trop court. Le baudrate a également été diminué il est passé de 115200 à 19200.

Les tests suite à ces changements se sont avérés concluants en effets le roomba réponds correctement à toutes les commandes. De plus les différents modes de récupération des données capteurs sont désormais opérationnels.

Une incompatibilité des entrés/sorties a été détectée entre les DIOs du PcDuino qui sont à 3,3V et ceux du roomba qui fonctionnent en 5V. Même si cela semble marcher un shield de type TBoard V2 d'adaptation 3V vers 5V a été commandé afin d'éviter d'endommager le PcDuino.