Robots suiveurs 3 - Capteurs : Différence entre versions

De Learning Lab Environnements Connectés
Sauter à la navigation Sauter à la recherche
(Émetteur-récepteur)
Ligne 63 : Ligne 63 :
  
 
= Émetteur-récepteur =
 
= Émetteur-récepteur =
 +
 +
== Champs des nodes Emitter et Receiver ==
 +
=== Emitter ===
 +
{| class="wikitable center"
 +
|-
 +
| '''Nom'''
 +
| '''Type'''
 +
| '''Valeur par défaut'''
 +
| '''Valeurs possibles'''
 +
|-
 +
| type
 +
| SFString
 +
| "radio"
 +
| {"radio", "serial", "infra-red"}
 +
|-
 +
| range
 +
| SFFloat
 +
| -1
 +
| {-1, [0, inf)}
 +
|-
 +
| maxRange
 +
| SFFloat
 +
| -1
 +
| {-1, [0, inf)}
 +
|-
 +
| aperture
 +
| SFFloat
 +
| -1
 +
| {-1 ,[0, 2*pi]}
 +
|-
 +
| channel
 +
| SFInt32
 +
| 0
 +
| [0, inf)
 +
|-
 +
| baudRate
 +
| SFInt32
 +
| -1
 +
| {-1, [0, inf)}
 +
|-
 +
| byteSize
 +
| SFInt32
 +
| 8
 +
| [8, inf)
 +
|-
 +
| bufferSize
 +
| SFInt32
 +
| -1
 +
| {-1, [0, inf)}
 +
|}
 +
=== Receiver ===
 +
{| class="wikitable center"
 +
|-
 +
| '''Nom'''
 +
| '''Type'''
 +
| '''Valeur par défaut'''
 +
| '''Valeurs possibles'''
 +
|-
 +
| type
 +
| SFString
 +
| "radio"
 +
| {"radio", "serial", "infra-red"}
 +
|-
 +
| aperture
 +
| SFFloat
 +
| -1
 +
| {-1 ,[0, 2*pi]}
 +
|-
 +
| channel
 +
| SFInt32
 +
| 0
 +
| [0, inf)
 +
|-
 +
| baudRate
 +
| SFInt32
 +
| -1
 +
| {-1, [0, inf)}
 +
|-
 +
| byteSize
 +
| SFInt32
 +
| 8
 +
| [8, inf)
 +
|-
 +
| bufferSize
 +
| SFInt32
 +
| -1
 +
| {-1, [0, inf)}
 +
|-
 +
| signalStrengthNoise
 +
| SFFloat
 +
| 0
 +
| [0, inf)
 +
|-
 +
| directionNoise
 +
| SFFloat
 +
| 0
 +
| [0, inf)
 +
|}

Version du 11 mai 2020 à 16:10

Le logiciel Webots dispose d'une large collection de capteurs déjà configurés disposant de méthodes associées. Le robot E-puck que nous utilisons dans ce projet dispose de différents capteurs prépositionnés :

  • 8 capteurs de distance infrarouge
  • Camera couleur VGA
  • Accéléromètre 3D (non utilisé)
  • Émetteur-récepteur ZigBee

Nous allons donc détailler dans cette partie le fonctionnement des capteurs utilisés.

Capteur de distance

Afin de détecter des obstacles, nous utilisons des capteurs de distance qu'on modélise grâce au node DistanceSensor. Nous allons décrire ici son fonctionnement.

Champs du node DistanceSensor

lookupTable Vec3f lookup table
type String {"generic", "infra-red", "sonar", "laser"}
numberOfRays Int32 [1, inf)
aperture Float [0, 2*pi]
gaussianWidth Float [0, inf)
resolution Float {-1, [0, inf)}

lookupTable

Fonction de transfert du capteur de distance

La LookUpTable est un tableau à 2 dimensions servant à faire la correspondance entre la distance en mètre mesurée par le capteur et la valeur de sortie du capteur. Cette table consiste en une liste de coordonnées de points qui, une fois reliés, nous donne la fonction de transfert du capteur. A chaque point est associé une valeur d'écart type pour son bruit associé.

Les valeurs de la table sont pré-configurés pour correspondre à un capteur précis. On peut voir sur le graphique que plus la distance est faible, plus la valeur de sortie augmente vite. Afin d'éviter précisément des obstacles, et de simplifier la mesure des distance, nous avons modifié la table. En ne positionnant que deux points aux extrémités des intervalles, nous obtenons une droite affine. Nous avons donc une précision constante en fonction de la distance et les conversions distance/code sont plus simples. Il serait possible par la suite d'étudier l'influence du bruit sur les performances du robot. Nous pourrons aussi questionner la pertinence de ces modifications qui changent peut-être trop le fonctionnement des capteurs pour correspondre à la réalité.

Méthodes utilisées

void wb_distance_sensor_enable

(WbDeviceTag tag)

WbDeviceTag tag : tag du capteur afin de le cibler Active le capteur de distance ciblé.
double wb_distance_sensor_get_value

(WbDeviceTag tag)

WbDeviceTag tag : tag du capteur afin de le cibler Renvoie la valeur associée à la distance mesurée du capteur ciblé.

Camera

Émetteur-récepteur

Champs des nodes Emitter et Receiver

Emitter

Nom Type Valeur par défaut Valeurs possibles
type SFString "radio" {"radio", "serial", "infra-red"}
range SFFloat -1 {-1, [0, inf)}
maxRange SFFloat -1 {-1, [0, inf)}
aperture SFFloat -1 {-1 ,[0, 2*pi]}
channel SFInt32 0 [0, inf)
baudRate SFInt32 -1 {-1, [0, inf)}
byteSize SFInt32 8 [8, inf)
bufferSize SFInt32 -1 {-1, [0, inf)}

Receiver

Nom Type Valeur par défaut Valeurs possibles
type SFString "radio" {"radio", "serial", "infra-red"}
aperture SFFloat -1 {-1 ,[0, 2*pi]}
channel SFInt32 0 [0, inf)
baudRate SFInt32 -1 {-1, [0, inf)}
byteSize SFInt32 8 [8, inf)
bufferSize SFInt32 -1 {-1, [0, inf)}
signalStrengthNoise SFFloat 0 [0, inf)
directionNoise SFFloat 0 [0, inf)