Subject: Recherche de cible rouge
From: "Nicolas Gufflet"
Date: Sun, 15 Apr 2007 23:08:04 +0200
To: "Yves Gufflet"
CC: "Pascal BOUCHER" , "Eric Arrigo" , "Thomas Partiot"

Re!
 
on a fait aujourd'hui avec Pascal la recherche de cible rouge en local à l'aide de SYRTools et ca fonctionne plutot bien.
Le taux d'acquisition d'image de la webcam atteint les 30 images/seconde pour le serveur de SYR lorsque l'éclairage est suffisament élevé.
Par contre il peut descendre à 8 si l'éclairage est insuffisant (problème de temps d'exposition certainement...)
 
(je parle ici en utilisant qu'une seule Webcam) 
 
Le programme fait à l'aide de SYRTools fonctionne comme suit:
 
Après avoir choisi de se connecter en local (sur la caméra directement) ou à distance (via le serveur) on peut règler la détection de rouge sur l'onglet correspondant.
Filtrage HLS (voir document Yves) et seuillage en sont les deux mamelles. Voir la vidéo ci-jointe (RèglageRouge.avi)
 
Lorsque l'on règle les paramètres le programme utilise directement les filtres donnés par SYRTools et là (rien n'est optimisé - DLL écrite en VB) on descend en dessous de 1 image/seconde (sur SYR!).
 
 
Ensuite on passe sur l'onglet Recherche cible et là on peut règler les paramètres de la recherche.
Au passage il y a création d'un tableau "Combien c'est rouge" (construit à l'aide des fonctionnalités de SYRTools) comme Yves avait utilisé lors de son succès au 1er défi permettant un traitement plus rapide (3-4 images par seconde)
 
 
L'algorithme est celui d'Yves à savoir:
On peut aussi, au cas où SYR ne décolle pas, donner une impulsion à 200 d'une durée règlable ("Impulsion (ms)")
Ci-joint pour l'exemple une petite vidéo (SYRLocal.avi)...
 
Vous remarquerez que le robot à tendance à aller dans le buisson de temps en temps...
C'est parce qu'au sol il y a des feuilles qu'il considère comme rouge.
 
Ce n'est donc qu'un problème d'algorithmique qui devrai nous orienter sur la détection de "Blob" et aussi de règlage des paramètres.
Il y a quelques problème liés à la puissance des moteurs aussi.
Autant la vitesse de tracking de pose pas de problème et peut être assez élevée autant la vitesse de recherche ou de centrage ne doit pas être trop élevée (dans ces deux cas les moteurs tournent en sens inverse) d'où le problème:
Vitesse trop élevée => on dépasse la cible
Vitesse trop basse => on ne décolle pas
 
Yves avait opté pour une recherche par accoup (moteur à fond mais pendant un laps de temps court) et c'est certainement ce qu'il faudrait implémenter.
 
Mais en terme de principe ca fonctionne!
 
On a aussi fait, et là je crois qu'on peut mettre une croix dans le calendrier, la première recherche de cible avec cerveau déporté!
 
et ca marche aussi!
 
Pour ce faire j'ai créé vite fait (2 minutes max) un client-serveur sur mon ordinateur à l'aide de SYRTools.
Celui ci demande aussi rapidement que possible des images à SYR.
Ainsi mon ordinateur dispose des images pour que le programme de recherche puisse fonctionner.
En effet SYRTools fonctionnant de manière séquentielle si j'ai dans un même programme:
Acquisition de l'image depuis Benodet
puis
Envoie des commandes à Benodet
 
alors le taux de rafraichissement sera faible (1 image par seconde) du fait des temps de transfert entre l'allemagne et Benodet en sus des temps de traitements.
Par contre si j'ai deux "process" tournant en parallèle l'un (le client-serveur) demandant les images à Benodet et l'autre (le programme de recherche de cible) envoyant les commandes à Benodet et récupérant les images en local sur le client-serveur alors le temps est moindre et on peut obtenir des taux de rafraichissement de l'ordre de 2-3 images/s!
 
Bref! Je pouvais facilement règler les paramètres, laisser SYR chercher ou reprendre la main pour le guider... (sur mon ordi même lors du règlages des paramètres de détection de rouge j'avais plusieurs 10aines de traitement par seconde),
On s'est bien amusé et cela m'amène à faire quelques modifs avant publication...
 
Il faudra notamment que je retravaille un peu le protocole de communication pour qu'après on y touche plus et que n'importe qui, quel que soit le langage puisse l'utiliser.
Il faudra aussi tester si SYRTools est utilisable en C++
 
bref! un peu de pain sur la planche mais j'espère que bientôt tout un chacun pourra implémenter ces propres algorithmes...
 
Bises
Nico