wiki:SensorTrslator

Chapitre1: La classe sensorTranslator

*les télémètres

*les repères
*Le passage d'un repère à l'autre

*Filtre de Kalman

*Généralités
*Les avantages d'un filtre de kalman

Chapitre 2 : L'ajout d'une camera

*Fonctionnement
*Exemple d'exécution

*Perspectives



Présentation générale:

La classe sensorTranslator rassemble les informations qui proviennent de différents capteurs

(caméra, télémètres) et donne une estimation des coordonnés des objets détectées dans l'entourage du robot, cette estimation est amélioré grâce au filtre de Kalman.

Chapitre1: La classe sensorTranslator

1.les télémètres
1.1.les repères:
Il existe deux repères dans le programme: le repère dit "local" et le repère dit "global".

• Le repère "local": celui du robot, dans lequel on donne les coordonnées des capteurs. • Le repère "global": celui de la table.

1.2.Le passage d'un repère à l'autre Le passage d'un repère à l'autre se fait à l'aide de la fonction « localToAbsolute(robotPosition(), targetPosition) » où « robotPosition() » représente la position global du robot et « targetPosition », qui est de type « Point2D », la position local de la cible.



2.Filtre de Kalman

2.1Généralités:

Le filtre de Kalman est utilisé dans une large gamme de domaines technologiques (radar, vision

électronique, communication ...). C'est un thème majeur de l'automatique et du traitement du signal. Un exemple d'utilisation peut être la mise à disposition, en continu, d'informations telles que la position ou la vitesse d'un objet à partir d'une série d'observations relative à sa position, incluant éventuellement des erreurs de mesures.

Par exemple, pour le cas des radars où l'on désire suivre une cible : sa position, sa vitesse et son

accélération sont mesurées à chaque instant mais avec énormément de perturbations dues au bruit ou aux erreurs de mesure. Le filtre de Kalman fait appel à la dynamique de la cible qui définit son évolution dans le temps pour obtenir de meilleures données, éliminant ainsi l'effet du bruit. Ces données peuvent être calculées pour l'instant présent (filtrage), dans le passé (lissage), ou sur un horizon futur (prédiction et extrapolation).

Pour le robot, l'utilisation d'un filtre de Kalman permet plus de précision dans la localisation des

balles, cela est dû au fait que ce dernier permet d'ajouter un « télémètre virtuel » qui permet plus de précision, et qui est utile aussi au cas où aucune valeur n'est retournée par les télémètres (cas de panne par exemple).

l'algorithme de ce capteur virtuel est simple: « la balle est toujours a la position où elle étais à

l'instant n-1, elle a juste bougée d'une distance Alpha.

Algorithme: Telemetre1 G( Moy1_n, ecart1_n) Telemetre1 G( Moy2_n, ecart2_n) Telemetre virtuel : G( MoyV_n, ecartV + Alpha)

où : moyV_n= MoyT_n-1 et ecatV_n= ecartT_n-1

et:

MoyT_n = ((Moy1_n/ ecart1_n )+ (Moy2_n/ ecart2_n) +(MoyV_n/ ecartV_n))/((1/ ecart1_n ) +(1/ecart2_n) + (1/ ecartV_n))



ecartT_n =1/((1/ ecart1_n ) + (1/ecart2_n) + (1/ ecartV_n) )

L'écart type dans l'algorithme de filtre de Kalman est déterminé ainsi:


Ecart =(1-probabilité)/probabilité


où la probabilité est déduite à partire de la distance (la probabilité tant vers 1 quant la distance est proche de 35 dm).

dans le programe cela est représenté pas la fonction:

double SensorTranslator:: getProba (double distance) {

double mu=3.5;

double sigma=2.0/(sqrt(2.0 * M_PI));

double proba=((1.0/(sigma * (sqrt(2.0 * M_PI)))* exp(-0.5 * pow((((distance/10)-

mu)/sigma),2.0)))) + 0.5; return proba;

}

2.2.Les avantages d'un filtre de Kalman:

• Des résultats plus précis:

Le filtre de Kalman utilise les valeurs X1 et X2 retournées par les 2 télémètres en tenant compte de leurs facteurs de confiance FC1 et FC2, tous ça en intégrant les données du capteur virtuel.

• Des résultats plus robustes:

Dans le cas où les capteurs ne retournes aucune valeur (cas de panne par exemple) le capteur virtuel essaye de prédire la position de l'objet.



CHAPITRE 2 : L'ajout d'une caméra:

le robot est équipé avec une caméra qui permet la détection des coordonnées des balles sur la

table. La fonction camDetect()de la classe sensorTranslator permet de déterminer les coordonnées sur la table.

FONCTIONNEMENT :

Supposons que nous avons d'une part une table, sur laquelle est posée un objet quelconque. Supposons ensuite que nous fixions par photographie l'image de cette scène, à partir d'une position donnée.

Dans l'image que nous avons obtenu, l'objet occupe une position Zim, Yim, exprimée à partir du centre de celle-ci, de telle sorte qu'un point à gauche ait Yim=1 à droite, Yim=-1, en haut Zim=1, en bas Zim=-1 Ces valeurs peuvent facilement être obtenues à partir de la colonne et de la rangée du pixel correspondant. Dans l'espace, cet objet occupe la position x,y,z La position de la caméra, elle, est décrite par Xc,Yc,Zc. Pour retrouver la position x,y à partir de l'image, expliquons déjà ce qui les lie: Une rayon de lumière, passant par la focale de la camera, le point du plan image, et l'objet. Il suffit donc de recréer ce rayon. Si l'on se place dans le repère de la caméra, à l'origine, nous pouvons imaginer l'image devant nous, comme un poster. Cette image occupe une zone déterminée par l'angle de vue de la caméra horizontal et vertical. Pour déterminer les coordonnées du rayon calculons les coordonnées dans la caméra de chaque pixel de l'image. Ensuite, il faut transformer ce rayon pour qu'il soit exprimé dans le repère de la table. Ceci repose sur une série de transformations en coordonnées homogènes. Une fois le rayon transformé, il suffit de trouver l'intersection de la droite définie par le centre de la caméra et le vecteur avec le plan de la table. le problème peut être représenté par le système d'équations suivant:

positionDeCaméra + alpha*vecteur = posiontObjet<=> xC+alpha*xRt = x yC+alpha*yRt = y zC+alpha*zRt = z

Pour simplifier, on suppose que l'objet est plat, et donc que Z=0. on a donc : alpha = -zC/zRt. On pourrait améliorer l'estimation en utilisant une valeur de Z déterminée à partir de la géométrie attendue de l'objet et l'élévation du rayon.


PERSPECTIVES :

Fusion des informations qui proviennent de la caméra et ceux des télémètres dans un filtre de Kalman pour plus précision.

Attachments