Thymio II et la réflexion optique d'un papier coloré

Cette page illustre un exemple de machine qui teste la réflexion optique d'un papier. La machine dispose d'un levier à l'avant qui peut déplacer un échantillon de papier à une distance variable en face du capteur de proximité central avant. Une surface de référence se déplace en face d'un capteur latéral et permet d'avoir une référence de distance. Cette machine est réalisée uniquement avec des pièces du kit de construction LEGO Technic 8069.

reflex-paper-maker-lr.jpg

Le déplacement du papier coloré se fait avec un bras actionné per l'une des roues du Thymio II. Voici une séquence de positions possibles:

sequence.jpg

Cette machine se branche à l'ordinateur qui peut récupérer les données associées à des évènements:

setup-lr.jpg

La séquence de mesure est la suivante: d'abord on ramène le papier coloré proche du capteur, ensuite on l'éloigne lentement en prenant les mesures. Entre deux mesures on change le papier et on "note" le changement de papier avec les flêches latérales. Ceci permet d'ajouter dans les données un numéro différent pour chaque papier.
Voici ce que cela donne en vidéo:

Le code nécessaire pour réaliser la démarche de la vidéo est ci-dessous. ATTENTION: pour que ce code compile il faut créer (sur la droite dans l'environnement asebastudio), un évènement qui s'appelle plot et qui a trois paramètres.

var Tampon0[4] = 0,0,0,0
var TamponPos0 = 0
var Tampon1[4] = 0,0,0,0
var TamponPos1 = 0
var data[3]
var paper = 0          # variable qui aide à indentifier le papier dans l'analyse des données
var record               # variable qui indique si on emet les données ou pas

onevent buttons        #à chaque fois qu'on vérifie les bouton

  when button.forward==1 do    # avance pour la mesure
    motor.right.target=-100 
  end

  when button.center==1 do    # stop
    motor.right.target=0 
    record = 0
  end

  when button.backward==1 do    # recule vite
    motor.right.target=400 
  end

  when button.left==1 do    # permet de changer la variable papier qui identifie les échantillons
    paper = paper - 1
  end

  when button.right==1 do 
    paper = paper +1
  end

onevent prox
# on met dans data les 3 donnée qui nous intéressent: no_papier, référence, mesure
  data[0]=paper                                                # référence pour le papier
  Tampon0[TamponPos0] = prox.horizontal[4]  # référence de position
  TamponPos0 = (TamponPos0 + 1) % 4
  data[1] = Tampon0[0] + Tampon0[1] + Tampon0[2] + Tampon0[3]
  Tampon1[TamponPos1] = prox.horizontal[2]  # mesure sur le papier
  TamponPos1 = (TamponPos1 + 1) % 4
  data[2] = Tampon1[0] + Tampon1[1] + Tampon1[2] + Tampon1[3]

  if record==1 then  # seulement quand on enregistre
    emit plot data
  end

  when prox.horizontal[4]<1500 do    # si on est très proche
      motor.right.target=0
  end

  when prox.horizontal[4]<1600 and motor.right.target<0 do  # si on est proche et qu'on s'éloigne, on commence à enregistrer
    record = 1
  end

  when prox.horizontal[4]>3600 and motor.right.target<0 do #si on est trop loin on s'arrête
    record = 0
    motor.right.target=0
  end

La procédure pour enregistrer les mesures est un peu compliqué, car il s'agit de récupérer les données de l'expérience depuis AsebaStudio pour les analyser ensuite dans un logiciel comme excel ou openoffice.

Pour commencer il faut, avant de lancer AsebaStudio, ouvrir le port série sur lequel se trouve le Thymio II avec asebaswitch. Ce logiciel permet d'avoir plusieurs logiciels qui accèdent au même Thymio II. La commande dans un terminal, sur un Mac, dans le dossier bin de asebauniversal, est:

./asebaswitch "ser:device=/dev/cu.usbmodemXXX"

où XXX est un numéro attribué de cas en cas par le Mac. Vous pouvez voir ce numéro dans AsebaStudio.

Ensuite il est possible de se connecter avec AsebaStudio en choisissant Network (TCP) et comme host localhost et port 33333.

On se retrouve donc dans la situation habituelle d'avoir AsebaStudio connecté à Thymio II, mais avec asebaswitch entre les deux.

Ensuite il est possible d'enregistrer tous les événements lancés par Thymio II avec le programme asebarec, par la commande suivante:

./asebarec "tcp:localhost;port=33333" > monfichierlog.txt

Dans monfichierlog.txt on trouver des lignes de texte sous le format suivant:

timestamp source message_id taille data[0] data[1] data[2] data[n]

Les données envoyées par l’événement seront donc toujours les derniers chiffres.

Dans l'expérience de la vidéo on se retrouve avec les données suivantes dans monfichierlog.txt:

1309439074.659 1 0 3 1 5882 16306 
1309439074.722 1 0 3 1 5878 16302 
1309439074.785 1 0 3 1 5871 16301 
1309439074.849 1 0 3 1 5877 16302 
1309439074.912 1 0 3 1 5890 16307 
1309439074.975 1 0 3 1 5907 16312 
1309439075.039 1 0 3 1 5923 16317 
....
1309439115.768 1 0 3 1 14149 0 
1309439115.831 1 0 3 1 14152 0 
1309439115.893 1 0 3 1 14154 0 
1309439115.957 1 0 3 1 14154 0 
1309439116.020 1 0 3 1 14157 0 
1309439116.083 1 0 3 1 14170 0 
1309439116.147 1 0 3 1 14184 0 
1309439116.210 1 0 3 1 14193 0 
1309439116.273 1 0 3 1 14219 0 
1309439116.337 1 0 3 1 14235 0 
1309439141.989 1 0 3 2 5789 16283 
1309439142.052 1 0 3 2 5790 16279 
1309439142.115 1 0 3 2 5790 16279 
1309439142.179 1 0 3 2 5790 16280 
1309439142.242 1 0 3 2 5793 16281 
1309439142.305 1 0 3 2 5797 16281 
1309439142.369 1 0 3 2 5802 16277 
1309439142.432 1 0 3 2 5799 16271 
1309439142.495 1 0 3 2 5800 16268 
1309439142.559 1 0 3 2 5800 16266 
....

Le ficher original complet se trouve ici.

On peut observer que le troisième chiffre depuis la droite change quand on change de papier, ce qui permet de trier les données.

En traitant correctement ces données dans un logiciel comme excel ou openoffice, on peut générer le graphe suivant:

reflex-papier-graph.png

Ce graphe correspond à la réflexion des quatre papiers suivants:

papers-lr.jpg

Finalement quelques détails sur la construction:

details.jpg
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License