Projet Roulette : Synthèse et Bilan

Sommaire

  1. Cahier des charges
  2. Spécifications fonctionnelles générales
    1. Fonctionnalités modernes
    2. Investissement
    3. Haut et Bas niveau
  3. Spécifications techniques générales
    1. Mécanique et Motorisation
    2. Choix du contrôleur ou micro-contrôleur
      1. Critères de choix
      2. Modèles envisagés
      3. Modèle retenu
    3. Choix de la caméra
    4. Architecture logicielle générale
  4. L'expérimentation
    1. Le matériel
    2. Les fournisseurs
    3. Le logiciel
      1. Bas niveau
      2. Haut niveau
    4. Les premiers tests
    5. Gestion des servomoteurs
    6. Gestion de la caméra
    7. Alimentation
    8. L'emballement
      1. Châssis et Motorisation
      2. Raspberry PI et bus I2C
      3. Capteurs et relais
    9. Spécifications fonctionnelles détaillées
  5. Conclusions
    1. Livrables
    2. Prototype physique : roulette
    3. Prototype logiciel
    4. Coût du matériel
    5. Références
      1. Raspberry PI - Généralités
      2. Caméra de vidéo surveillance avec PI
      3. Recherche Streaming
      4. Fournisseurs
    6. Historique de navigation (extraits)
      1. PI et camera
      2. arduino
      3. elctroteck
      4. robotique
      5. Distrib Linux PI
      6. boutiques
      7. Autre
    7. Pour aller plus loin

Cahier des charges

Réaliser une étude de faisabilité (Proof of Concept - PoC) répondant à la question : est-il possible de fabriquer une caméra sur IP dotée de "toutes" les fonctionnalités modernes, et ce, à moindre coût ?

Le PoC doit montrer la meilleure ergonomie possible à destination de l'utilisateur, et masquer toute complexité sous-jacente. De même, le PoC doit montrer que le développement de haut niveau est aisé, une fois les développements ou configurations de bas niveaux achevés.

Spécifications fonctionnelles générales

Fonctionnalités modernes

Le cahier des charges évoque "une caméra sur IP dotée de 'toutes' les fonctionnalités modernes". Il convient de lister les fonctionnalités indispensables que le PoC doit étudier : streaming vidéo, enregistrement vidéo et photo, déclenchement sur détection de mouvement, reconnaissance faciale, vision nocturne, motorisée pan/tilt (pan : orientation, tilt : inclinaison), mode patrouille, contrôlable à distance, équipement réseau à adresse IP fixe ou dynamique, client WIFI ou point d'accès, sur secteur ou batterie, étanchéité.

ThèmeItemCritère spécifique à étudier
Vidéo/photo : Caractéristiques
Résolution Full HD au moins
Vélocité 25 fps au mois
Vision nocturne
Vidéo/photo : Fonctionnalités
Streaming Protocole, latences
Enregistrement à la demande
Enregistrement à heure programmé
Enregistrement sur mouvement à l'image Enregistrer les minutes précédant le déclenchement
Enregistrement déclenché sur capteur Enregistrer les minutes précédant le déclenchement
Reconnaissance symbolique
Reconnaissance faciale
Motorisation et étanchéité
Pan Angle
Tilt Angle
Mode patrouille Facilité de programmation
Etanchéité
Contrôle à distance
IP et protocoles sur IP Fixe ou dynamique, tout protocole
Wifi : client
Wifi : point d'accès
Ethernet
Gestion de l'énergie
Alimentation secteur
Alimentation sur batterie Microcoupures au branchement/débranchement

Investissement

L'investissement en matériel doit être inférieur au coût moyen de l'équipement équivalent (une caméra IP motorisée) dans le commerce. La charge consommée ne doit pas dépasser les 10 jours-hommes.

Haut et Bas niveau

Quelle que soit la technologie de bas niveau, la technologie de haut niveau doit s'appuyer sur un langage objet et disposer des API suffisantes pour s'affranchir de la complexité de plus bas niveau. Par exemple, s'il s'agit de contrôler une lampe, l'utilisateur dispose d'un interrupteur à l'écran (un bouton par exemple), et le développeur de fonctions allumeLaLampe() et eteintLaLampe(). Toute l'électronique sous-jacente doit être masquée à l'utilisateur final bien sûr, mais aussi au développeur.

Spécifications techniques générales

Mécanique et Motorisation

Servo moteur

La motorisation de la caméra se fait sur deux axes : vertical et horizontal. Deux servomoteurs montés l'un sur l'autre feront donc l'affaire. L'angle maximum de rotation de ceux-ci détermine donc les capacités de mouvement de la caméra. On trouve dans le commerce des tourelles "Tilt/pan", qui sont constituées d'un châssis assemblant deux servomoteurs de taille standard, à un angle de 90°.

Choix du contrôleur ou micro-contrôleur

arduino uno Raspberry PI hummingboard

Critères de choix

Modèles envisagés

Modèle retenu

Raspberry PI Modèle B rev2 .

Choix de la caméra

Le choix de la caméra aura été plus aisé ! En pleine comparaison de caméras USB et autres WebCam, la PiCam , dédiée au PI, est rendue disponible.

Architecture logicielle générale

Schéma

Architecture générale

Cinématique


  1. Boot du PI, avec lancement d'un environnement graphique (server X)
  2. Connexion au PI en ssh (putty)
  3. Lancement de VNC sur le PI au travers de ssh
  4. Connexion au VNC du PI
  5. Lancement des applications java au travers de VNC
  6. Lancement de la consommation du futur flux vidéo en provenance du PI
    sur une Debian sous VMWare hébergée sur machine Windows
  7. Lancement du streaming sur le PI

L'expérimentation

Le matériel

Raspberry PI Adaptateur WIFI/USB PI cam Tourrelle pan/tilt

Nous voici donc avec un raspberry PI, une clé USB/WIFI, la PI Cam, une tourelle pan/tilt à intégrer. Pour ce faire, il nous faudra aussi un fer à souder (ou une breadboard), des câbles et une centrale nucléaire (ou des alimentations, batteries et autres piles)...

Les Fournisseurs

Outre les fournisseurs connus comme amazon.fr, ldlc.com ou materiel.net, citons :
Logo roboshop

Le logiciel

Bas niveau

Système d'exploitation : Raspbian OS
Gestion des servomoteurs : Servoblaster
Gestion de la caméra : raspistill et raspivid

Haut niveau

Gestion du PI : PI4J
Interface Homme Machine : Java/SWING

OS Raspbian, distribution Linux basée sur Debian.
Voir le site Raspbian

Cette distribution semble la plus adaptée à l'usage auquel on la destine. Par exemple, un dongle USB/WIFI y fonctionnera 'out of the box'.

Servoblaster et deamon servod.
Voir le readme.txt

"This is software for the RaspberryPi, which provides an interface to drive multiple servos via the GPIO pins. You control the servo positions by sending commands to the driver saying what pulse width a particular servo output should use. The driver maintains that pulse width until you send a new command requesting some other width."

raspistill et raspivid
Voir la Documentation de la Caméra du Raspberry PI.

"There are three applications provided: raspistill, raspivid and raspistillyuv. Both raspistill and raspistillyuv are very similar and are intended for capturing images, while raspivid is for capturing video. All the applications are command-line driven."

API PI4J
Voir le Site du projet Pi4J

Projet Pi4J

Téléchargement :
wget http://pi4j.googlecode.com/files/pi4j-0.0.5.deb
Installation :
sudo dpkg -i pi4j-0.0.5.deb
Désinstallation :
sudo dpkg -r pi4j

Java/Swing et programmation événementielle

Pour une meilleure expérience utilisateur, les applications seront développées en mode client riche, en l'occurence SWING. Une première application : modifier l'angle d'un servomoteur en réponse au déplacement d'un JSlider. Voir "Les premiers tests".

Compile, run
javac -classpath .:classes:/opt/pi4j/lib/'*' ...
sudo java -classpath .:classes:/opt/pi4j/lib/'*' ...
Choix parmi les versions java installées (Liste et Mise à jour)
update-java-alternatives -l
update-java-alternatives -s [nom du jdk donné par -l]

Les premiers tests

Première application Tourelle tilt/pan : premiers tests

Gestion des servomoteurs

Une fois le deamon servod lancé, un driver gère la complexité du déplacement des servomoteurs (il s'agit d'envoyer un signal pulsé aux servomoteurs). Pour modifier l'angle d'un servomoteur, il suffit alors d'écrire dans le fichier (émulé par le driver) les commandes associées .

Lancer servod : ./servod <options>
Exemple de commande en shell (centrer le servo n°3) : echo 3=1500us > /dev/servoblaster

L'interface avec un langage de haut niveau ne pose aucun problème. Il est alors aisé de proposer à l'utilisateur des 'sliders' permettant le contrôle fin des servos. L'IHM présentée ici montre aussi plusieurs cercles concentriques. Il s'agit d'une émulation de stick analogique (en déplacant le cerle noir). Celui-ci permet de prendre le contrôle de la tourelle tilt/pan de manière naturelle.

De même, il est aisé d'écrire un programme enregistrant les actions de l'utilisateur, pour reproduire les mouvements associés ultérieurement, en déclenchant ou non enregistrement et streaming. C'est le mode patrouille.

Gestion de la caméra

De nombreuses techniques de streaming sont envisageables sur la plateforme. Des recherches ont été effectuées en direction de celles apportant la plus faible latence, en conservant débit et qualité d'image suffisante. Les latences constatées peuvent être de plusieurs secondes. La latence obtenue lors des tests est de moins de 300ms .

Côté Pi

raspivid -o - -t 0 -b 2000000 | nc.traditional [ip du client] [port]

Côté Client (testé sur debian desktop virtualisé VMWare)

nc.traditional -l -p [port] | mplayer -fps 60 -cache 1024 -

Alimentation

Le raspberry PI, associé à sa caméra et sa clé wifi, consomme moins de 1A. Un servomoteur consomme à pleine charge de l'ordre de 100 mA. Le PI ne pourra pas fournir l'énergie nécessaire aux servomoteurs. Il faudra donc disposer de deux sources d'énergie, l'une pour le PI, une autre pour la motorisation.

Pour rendre la caméra autonome, une batterie 9000mAh, proposant 2 ports USB est adaptée. Elle fournira l'alimentation nécessaire pour plus de 5 heures, en cas de coupure du courant. Les problèmes de microcoupures sont du passé. Le Pi ne rebootera pas lors de la mise en charge ou de la coupure de la charge de la batterie.

Pour les tests sur breadbord, une alimentation 500mA (pour breadboard) suffit. 4 piles AA feront aussi l'affaire (pour 6V). La beadboard fera office de prise multiple pour l'alimentaton des servos, et les câbles de données entre PI et servos.

L'emballement

A ce stade, le PoC est bien avancé. La viabilité est démontrée, la majeure partie de la spécification fonctionnelle est adressée. Des spécifications détaillées commencent à être rédigées. Pourtant, seulement la moitié du budget est dépensée. D'autres fonctionnalités peuvent être envisagées.

Châssis et Motorisation

La caméra maintenant à notre disposition dispose d'une autonomie de l'ordre de 5 heures. Pourquoi ne pas envisager de la rendre mobile ? Nous savons déjà gérer les servomoteur de la tourelle pan/tilt. En ayant recours à des servos à rotation continue, aucune recherche supplémentaire ne sera nécessaire.

Ne reste plus qu'à fabriquer un châssis (tubes et plaques en alu, trouvés en magasin de bricolage), et lui ajouter 2 ou 4 roues montées sur les servos. Sauf que le prototype sans châssis pèse déjà plusieurs centaines de grammes ! Il n'est pas possible d'appliquer une telle force sur l'axe d'un servomoteur commun sans le détériorer...

Nous avons donc recours à un système de chenilles, où le châssis repose sur des roues non motrices, reposant elles-mêmes sur des chenilles. Les chenilles sont entraînées par 2 roues crantées fixées aux servos, eux-mêmes fixés au châssis. Le poids de l'engin ne repose donc pas sur les roues motrices, mais sur les roues libres.

Servomotor à rotation continue Kit chenilles

La clé du succès ? Des plans précis et une gestion des câbles sans faille !

Premier châssis Premier plan

A ce stade, le projet de Proof of Concept est rebaptisé Roulette, surnom que Sheldon voudrait donner au professeur Hawking dans "The Big Bang Theory". Dans cette série américaine mettant en scène une bande de geeks, un épisode montre la prise de contrôle à distance de véhicules radiocommandés, disposant de caméras tilt/pan.

Toujours plus de fonctionnalités sont envisagées. La tourelle tilt/pan peut agir en "mode patrouille" ? Roulette peut faire des rondes. Lui adjoindre des capteurs ? Roulette pourra déclencher un enregistrement sur mouvements, température, luminosité, pourra se déplacer tout seul, tracer des plans...

Raspberry PI et bus I2C

Le raspberry PI n'est décidément pas destiné à l'électronique. Trop peu de ports d'entrée/sortie génériques (les fameux GIPO), trop peu de courant disponible. Cependant, il dispose d'un bus I2C. Par ce biais, nous allons par exemple pouvoir ajouter des entrées/sorties numériques ou analogiques, brancher un "nunchuk" de console Wii.

Convertisseur analogique numerique Port numériques suplémentaires Wii Nunchuck

Quant à l'alimentation, Roulette dispose maintenant d'un batterie pouvant fournir 9000mAh sur deux ports USB (2 et 1 Ampère). L'un d'eux pourra alimenter le PI et l'autre fournir une autre source d'alimentation.

Capteurs et relais

Capteur de collision Capteur de distance infra rouge Capteur de luminosite Capteur de mouvement Capteur de temperature Relais

Spécifications fonctionnelles détaillées

Une ébauche de spécifications fonctionnelles détaillées a été écrite lors de la réalisation du PoC .

ThèmeItemCritère spécifique à étudier
Se déplacer
Mode UVG ("drone terrestre") Latence flux vidéo
Définir le chemin d'une ronde et faire des rondes Reproductibilité d'une ronde automatique (nature du terrain...)
Se déplacer seul : suivre le mur de droite
Tracer des plans Etalonnage capteur IR
Capter pour déclencher
Détecteur de collision
Détecteur de distance IR
Détecteur de luminosité Analogique et/ou numérique
Détecteur de mouvement
Détecteur de température Analogique et/ou numérique
Relais

Conclusions

Livrables

Spécifications fonctionnelles détaillées, prototype.

Prototype physique : roulette

Roulette vu de face

Prototype logiciel

Nom de l'applicationDescription
PanTiltCamControl

Le PoC initial.

DirectionPanel

Roulette est né !

ScriptManagerGUI & RecorderPanel

RecorderPanel permet l'enregistrement d'un script.
Ce fichier au format texte retranscrit toutes les actions de l'utilisateur sur le châssis ou la tourelle.

ScriptManagerGUI liste le contenu d'un répertoire à la recherche de scripts. Pour chaque script trouvé, l'application présente un bouton permettant de le lancer.

NunchuckPanel

Premier test du bus I2C du PI.
L'application montre en temps réel les valeurs abstraites représentant la position du stick analogique et l'état des boutons du nunchuck. Le stick permet de contrôler naturellement la tourelle Tilt/Pan ou le châssis.

ControlPanel

Pour la prise de photos ou l'enregistrement de vidéos, manuellement.

PCF85575BreadBoardTest

Test de la carte d'extension 16 GPIO du PI.
L'application montre en temps réel l'état de chaque port d'E/S numérique sous la forme d'un bouton vert pour 1, rouge pour 0. Le clic sur un de ces boutons change l'état du oirt.

Logiciel java du prototype

Coût du matériel

ItemPU HT approx.PoCRoulette
Contrôleur
Raspberry PI 28€ 28€ 28€
Module de Caméra Raspberry Pi 23€ 23€ 23€
Clé USB/WIFI nano 7€ 7€ 7€
Convertisseur Analogique à Numérique à 8 Canaux, 12-bits I2C 15€ 15€
Platine de Déploiement Extenseur I2C PCF8575 SFE 9€ 9€
Motorisation - camera
Kit Tourelle Pan/Tilt Aluminium Lynxmotion 24€ 24€ 24€
Motorisation - déplacement
Kit Chenilles Tamiya seul 7€ 7€
Servomoteur à Rotation Continue Parallax (Futaba) 11€ 22€
Kit Véhicule sur Chenilles Tamiya 14€
Contrôleur de Moteur 4,5V à 36V, 1A SN754410 2€
Mécanique
Tube en aluminium 2€ 8€
Plaque en aluminium 5€ 10€
Capteurs et relais
Capteur de Luminosité Electronic Brick 2€ 2€
Capteur de Température Electronic Brick 2€ 2€
Capteur de Distance GP2Y0A02YK0F IR 12€ 12€
Module de Relais 5v à 2 Canaux 2€ 2€
Capteur de Collision 2€ 4€
Electronic Brick PIR Sensor 7€ 7€
Allimentation
DFRobot Breadboard Power Supply Kit 5V / 3.3V 4€ 4€ 4€
Batterie TeckNet® PowerBank 9000mAh 20€ 20€ 20€
106€ 207€

Références

Raspberry PI - Généralités

Caméra de vidéo surveillance avec PI

Recherche Streaming

Fournisseurs

Historique de navigation (extraits)

Pour aller plus loin

Robotique - bras articulé, moteurs gérés par pont en H, nouveau raspberry pi (rev b+), gérer les servos avec PI4J, mosfet pour contrôle de sous-circuits électriques. http://www.framboise314.fr/un-boitiercamera-pour-votre-raspberry-pi-b-avec-nwazet/

Contrôleur de moteur sn754410 Kit vehicule chenillé

Laissez-nous un commentaire !

Nom :

Prénom :

Société :

Fonction :

Adresse mail :

Objet :

Message :

Envoyer

Logo jServices-it