1. Introduction

Le but initial de ce projet était de retranscrire des mouvements d'un utilisateur en commandes pour le thymio et de retranscrire les informations des capteurs de celui-ci en sens comme l'ouï, la vue ou le touché. l'utilisateur aurait alors plus fait que un avec la machine étant donné que celle ci fait les même mouvement que celui-ci et que l'utilisateur aurait les même "sensation" que le robot. De là il serait possible de manipuler le robot alors que celui ci est hors de porté de vue et même dans une autre pièce.
Malheureusement j'ai vite décidé de limité les commandes a celle du mouvement contrôlé par un gyroscope placé sur la main de l'utilisateur. Quant aux sens j'ai décidé de me limiter a la vue en allumant une led pour chaque capteur de proximité du robot.

2. Matériel et méthodes

Pour réaliser ce projet il faut connecter un gyroscope a un raspberry pi ainsi que des led disposé de façon a ce que la capteur correspondant a chacune soit évident.

2.1 Matériel

  • 1 x Raspberry Pi 3 (Model B)
  • 1 x Thymio II Wireless
  • 1 x 9 Degrees of Freedom Breakout
  • 5 x led bleu
  • 2 x led rouge
  • 2 x led vert
  • 1 x Pi Wedge B+
  • 1 x petite Breadboard
  • 1 x grande Breadboard

2.2 Méthode

2.2.1 hardware

Pour la connectique et la disposition des leds je l'ai faite comme sur le dessin ci-dessous

Quant au gyroscope il a juste fallu connecter au wedge le gnd et le vcc pour l'alimentation, le sda pour les information et le scl pour la fréquance de l'horloge

2.2.2 software

Le thymio ne comprend malheureusement pas d'autre langage que aseba mais il existe tout de même des solution pour pouvoir coder en python, notamment a ma connaissance deux qui sont tdmclient et D-Bus. j'ai personnellement choisi d'utiliser D-Bus car j'ai au départ trouvé plus de documentation dessus
Pour commencer il faut télécharger Aseba pour Raspberry via ce lien: http://aseba.wikidot.com/en:linuxinstall. Travaillant en ssh je l'ai directement fait dans le terminal via lynx. Pour l'installer il faut ensuite faire cette commande

sudo dpkg -i aseba_1.3.1_armhf.deb

et celle-ci dans le cas où il manquerait des package.

sudo apt-get -f install

une fois installer j'ai crée un fichier .exe avec dans lequel j'ai mis la commande suivante qui permet de connecter le thymio au raspberry

asebamedulla "ser:name=Thymio-II"

une fois lancé dans un deuxième terminal il est possible d'utiliser le thymio avec le raspberry
Avant de commencer a coder il faut installer D-bus

sudo apt install python-dbus
#!/usr/bin/python
import RPi.GPIO as GPIO
import dbus
import dbus.mainloop.glib
import time
GPIO.setmode(GPIO.BCM)
#aseba Network
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
network = dbus.Interface(bus.get_object('ch.epfl.mobots.Aseba', '/'), \\
    dbus_interface='ch.epfl.mobots.AsebaNetwork')
from dbus.mainloop.glib import DBusGMainLoop
#leds
horiz0 = 19
horiz1 = 20
horiz2 = 21
horiz3 = 22
horiz4 = 23
horiz5 = 24
horiz6 = 25
gnd0 = 26
gnd1 = 27
try:
    GPIO.setup(horiz0, GPIO.OUT)
    while True:
        #horizontalprox value
        horizontalProximity = network.GetVariable('thymio-II', 'prox.horizontal')
        print(', '.join(map(str, horizontalProximity))
        #groundprox value
        #groundProximity = network.GetVariable('thymio-II', 'prox.ground.delta')
        #print(', '.join(map(str, groundProximity))
        #test
        #capteurs.append(', '.join(map(str, horizontalProximity)))
        #print(horizontalProximity)
        #allumage des led
        #if horizontalProximity < 2000:
                        #GPIO.output(horiz0, GPIO.HIGH)
        #else:
                #pass
        time.sleep(1)
except KeyboardInterrupt:
    pass

except Exception as error:
    print error

Tout d'abord sous aseba network il y a les lignes de code pour initialiser le réseau D-bus pour qu'il puisse communiquer avec le thymio ensuite j'ai mis les variable des leds horiz0-6 correspondent aux 7 capteur de proximité horizontal et gnd0-1 aux 2 diriger vers le sol. Leurs valeurs correspondent aux pin auquel ils sont branché sur le GPIO.
sous horizontalprox value se trouve les commande pour demander au thymio la valeur de ses capteurs de proximité horizontaux et les afficher dans le terminal. De même pour groundprox value même si je n'ai pas pu tester si cela fonctionnait avec ceux-ci. Dans test se trouvent différente partie de code que j'ai essayer afin d'écrire la suite du code pour allumer les leds a partir d'une certaine valeur des capteurs de proximité.
Pour finir j'ai mis un time.sleep de 1 seconde car il n'est pas nécessaire d'avoir une fréquence plus grande.

maintenant il faut s'occuper du gyroscope mon camarade Adrien m'a beaucoup aidé sur cette partie là car sans la bonne méthode il peux être compliqué d'utiliser le gyroscope.
voici le code qui utilise un module disponible sur github

///

  1. !/usr/bin/python

import time from mpu6050 import mpu6050 sensor = mpu6050(0x68) try:

   while True:
       gyro_data = sensor.get_gyro_data()
       print "x "+ str(gyro_data'x')
       print "y "+ str(gyro_data'y')
       print "z "+ str(gyro_data'z')
       time.sleep(0.1)

except KeyboardInterrupt:

   pass

except Exception as error:

   print error

///

3. Résultats

Je n'ai pas eu de résultat très concluant pour ce projet étant donné que je n'arrive pas a finir mon code. J'ai tout de même réussi a faire afficher les valeurs du gyroscope ainsi que celles des capteurs du thymio. Pour les valeurs des capteurs il aurait ensuite fallut séparé chacune des valeurs de la liste et crée une boucle if dans lequel nous définissons un seuil a partir duquel la led correspondant au capteur s'allume. Pour contrôler le thymio j'avais pour projet initial d'adapter à un gyroscope un code existant mais je n'ai pas su le faire. le code en question : http://aseba.wdfiles.com/local--files/en:asebamedulla/test-medulla.py

4. Discussion

Ce projet n'a malheureusement pas obtenu de résultat concluant car j'ai choisi un projet au dessus de mes capacités notamment au niveau de la programmation. Quant à la partie hardware je n'ai eu aucune difficulté et j'aurait pu choisir un projet plus compliqué a ce niveau là. J'ai tout de même appris a mieux utilisé python en apprenant quelque notions supplémentaires grâce a ce projet.

5. Conclusion

Ce projet a été un échec avec seulement peu de résultat. Selon moi l'idée initial était bonne mais compliqué a réalisé avec mes connaissances actuelle.

Références

http://aseba.wikidot.com/en:thymioexplorer http://aseba.wikidot.com/en:asebamedulla http://aseba.wikidot.com/en:thymioraspyexample https://github.com/m-rtijn/mpu6050 https://oci.gyre.ch/blog/?post/19H-rochinhachaves