22H — thymiomo
Par admin le mardi, février 8 2022, 12:00 - 2021–2022 - Lien permanent
Ce projet a été réalisé par Zurbuchen, Marc.
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
///
- !/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