1. Introduction

Le Thymio possède des capteurs appelés accéléromètres, utiles pour les événements de l’inclinaison horizontale ou verticale par rapport au centre d’équilibre de sa masse. Quand celle-ci bouge, il est capable de reconnaître sa position dans l’espace. Dans l’expérience qui suit, le Thymio fera office de masse en équilibre suspendu à l’envers par ses roues à une poutre ou un quelconque point fixe par un longue ficelle. Le défi à réaliser sera de balancer le Thymio continuellement en avant et en arrière comme un enfant sur une place de jeu. Cette performance est limitée par l’utilisation de deux axes d’accélération, l’acc 1 et l'acc 2 qui peuvent mesurer une variation du penchement avant-arrière qui va être lue pour déterminer une direction et vitesse à emprunter pour les moteurs du Thymio durant sa trajectoire. Il sera difficile d’obtenir un système constamment en équilibre et qui n'ensuit pas de même des dérèglements au niveau de la position horizontale (lue par l'acc0 et acc1) et du décalage entre le point d'accroche des roues sur lesquelles une tension est appliquée continuellement. Le Thymio peut-il garder un équilibre? Selon les informations obtenues sur les capteurs, l’accélération est mesurée à une fréquence de 10 Hz, équivalent à 10 événements par second. Sera-t-il possible de faire traiter l’information assez rapidement et agir de façon à rentabiliser et augementerla force de basculement? Cette expérience permettra par conséquent, d’évaluer la performance réactive du robot et de voir, si oui ou non, les deux roues (qui devraient toujours executer le même programme) ne sont pas déréglés au cours de l'expérience. Ce n'est sûrement pas la première fois qu'un prgramme de ce type a été fait en programmation robotique mais il sera intéressant de voir si cela est réalisable par un débutant de l'informatique.

2. Matériel et méthodes

2.1 Matériel

Vue de face du montage initial de la balançoire

FigureThy Kopie.jpg Légende: Matériel représenté et initialement prévu: -4 pieds (idéalement lego, sinon bois ou autre matériel pas cher et solide) -1 barre centrale solide (idéalement même matériel que les pieds) car les reliera -Ficelle / bras rigides (ficelle pas difficile à trouver (les bras plus, car doit tenir Thymio mais capable d’être balancé librement)) -Ruban adhésif ou colle forte -Eventuels ajouts selon l’évolution du projet (poids supplémentaires pour établir un centre d’équilibre plus proche des roues du Thymio) Mais le seul matériel finalement utilisé était une ficelle solide de environ 70 cm pour suspendre le Thymio par les roues. Il se trouvait donc accroché d'une hauteur de 30 cm environ à une poutre sous mon lit à étage.

2.2 Méthode

Les étapes décomposés du projet initial étaient les suivants: Assemblement et construction du model extérieur de la balançoire (4 pieds + 1 barre centrale solide avec points de fixation des ficelles/bras). Ceci se fera avec des bouts de bois ou lego fixés ensemble, ensuite attachement du robot au model. Durée : 2h La programmation du Thymio, incluant les essais pratiques et les éventuelles modifications/adaptations de la construction et du système/codage Azeba. Durée : 6h Les soumissions graduelles dans l’avancement du projet dans le blog destiné à cet effet. Durée : 2h Mais ceci a différé du projet actuel: Pas de construction de la balançoire car un fil accroché aux 2 roues simplifiait non seulement le travail (- de temps investi et de matériel à fournir) mais le rendait aussi plus pratique et mobile (pas de construction à avoir avec soi pour essayer le programme et éviter le transport).

Donc la méthode a été la suivante: 2.2.1 Montage: Accrocher les roues du Thymio par les 2 extrémités d'une ficelle et passer la boucle sur une barre/poutre quelconque mais solide. 2.2.2 Codage: Aller sur Studio Aseba pour Thymio et connecter le Thymio sans câble par la clef USB, ce qui évite de devoir être à côté de l'ordinateur en question et éviter des forces non-considérés au niveau de la résistance du robot (le câble pourrait tirer d'un côté ou de l'autre quand le Thymio penche).

3 variables ont été posées:

var speed.forward=310

  1. la vitesse vers l'avant

var speed.backward=280

  1. la vitesse vers l'arrière, plus petite car le centre de masse du Thymio n'est pas exactemement au milieu, mais plud à l'arrière, donc moins de force nécessaire

var stopping.signal.distance=2000

  1. la distance minimale à laquelle la main detectée pourra engendrer un arrêt du programme en cours

onevent acc

if acc2<0 and acc1>-20 then motor.left.target=speed.forward motor.right.target=speed.forward

  1. La fonction qui fait avancer le robot dès qu'il a atteint une hauteur équivalente à acc1>-20 et qu'il est penché d'un certain côté acc2<0, tant que une des 2 conditions au moins est respectée, elle va continuer d'être exécuté jusqu'à ce que la 2ème fonction (-> elseif) aura 2 conditions true (par rapport à qu'une pour le pendule avant)

elseif acc2>0 and acc1>-20 then motor.left.target=-speed.backward motor.right.target=-speed.backward

  1. La fonction du côté opposé avec la même logique derrière, sera enclenchée de la même manière dans l'autre sens et s'arrêtera aussi quand l'autre fonction a ses 2 conditions justes

end

onevent prox if prox.horizontal2>stopping.signal.distance then motor.left.target=0 motor.right.target=0 end

  1. sert à arrêter les moteurs des roues plus simplement par un geste de la main près du capteur prox.horizontal2 l'avant (pointant vers le bas) ou en le saisissant

3. Résultats

Le résultat était, malheureusement, imparfait. Malgré cela un programme qui fonctionnait un temps limité a pu être réalisé, ceci parce que un déréglage de la position des roues engendrait un balancement moins contrôlé. Même si cela perturbait la fluidité de ses mouvements et la hauteur atteinte, le Thymio a parfois pu reprendre la trajectoire initialement prévu par le balancement de ce dernier. Ceci n'arrivait que quand les roues restaient parallèles sinon les 2 ficelles n'étaient plus exactement de la même longueur et le mouvement n'était plus dirigé droit en avant et arrière mais penchait des côtés. Dans ces cas, il a fallu l'arrêter parce que les roues étaient attachées à des endroits presque opposés de la roue. Male cela, le Thymio a pu maintenir une hauteur stable et a donc démontré que la force appliqué par les moteurs accompagnait et ajoutait de la dynamique dans la direction à laquelle le Thymio était soumise sous la force d'attraction de la Terre. D'ailleurs on peut entendre un grincement au niveau d'une des roues ce qui montrait peut-être une ussure du Thymio qui pourrait engendrer un dérèglement aussi.

Démonstration du programme final vu de face,

Légende: Lit à étage avec une simple ficelle attachée aux 2 roues. Cet essai était un test comme les autres avec le code qui a été retenu des multiples essais, il était toujours déclenché manuellement.

4. Discussion

Les variables que j'ai posés ont été essayées et changées à multiple reprises; la vitesse des roues ayant comme valeurs entre -500 et 500, une précision particulière était possible. Je me suis arrêté aux 10aines car la vitesse ne variait que très peu entre 2 valeurs si proches.

L'ajout de la fonction de détection "prox" a permis de: -faciliter l'arrêt en stoppant l'activité des roues du robot quand on approchait une main sous le Thymio sans devoir passer par Aseba Studio -remettre en place manuellement le montage -éviter des dégâts non-nécessaires quand le mouvement perd sa forme J'ai essayé aussi de faciliter le montage manuel entre les essais en écrivant un code permettant de remettre en place automatiquement le Thymio à sa position de départ: perpendiculaire avec la ficelle en haut des roues. Il était envisageable que ceci puisse aussi être applicable durant le balancement. Mais cela n'a pas été faisable car une précision particulière était requise et rediriger le point d'accroche de la ficelle automatiquement vers le haut ne pouvait être réalisé précisément, déjà à l'arrêt. parce qu'il ne pouvait réellement être déduit où la ficelle était accrochée. Le penchement horizontal (acc 0) nous en donnait une indication mais le déréglage entre les 2 roues a ajouté une variable supplémentaire bien moins évidente à réarranger mécaniquement. Il aurait pris bien plus de temps à réaliser ce supplément et semble même impossible car ces 2 facteurs influencent la même variable et on ne pourrait corriger l'un sans négliger l'autre. Il en a été déduit que ceci n'aurait pas été efficace en vue du but du projet.

Le mouvement des roues qui était censé être exactement le même des 2 côtés, a montré que la qualité des roues n'était pas la meilleure et surtout que un très léger dérèglement de la position prévue engendrait des décalages des roues et de la position du Thymio de plus en plus grands. Il est d'ailleurs nécessaire de remarquer que l'acc1 est influencé par les 2 penchements possibles: gauche-droite et avant-arrière; ceci définissant la hauteur que le Thymio devait atteindre avant de basculer dans l'autre sens, n'était donc que la même si le Thymio était perpendiculaire et ne penchait pas. Il s'ensuit que la hauteur qui devait être atteinte pouvait être avant ou après.

Le temps consacré à ce projet a été dans l'ensemble dépassé d'une estimation de 2/3 heures, dû au temps consacré pour l'écriture du billet. Alors que la construction a pris nettement moins de 2 heures (30 minutes environ) et que le codage a aussi pris moins de temps que pensé (vu que le code qui a le mieux fonctionné était plus simple que prévu), l'écriture a malheureusement été la partie la plus consommatrice en termes de temps. Ceci est bien dommage puisque nos connaissances ne s'y développent que très peu. Par contre, il m'a permis de réaliser que mon projet n'a pas été assez osé et que je voudrais essayer de résoudre des défis plus présent dans mon entourage et plus globaux dans les connaissances requises et les liens à faire entre de multiples domaines.

5. Conclusion

La réalisation de ce projet m'a permis de me rendre compte de l'ampleur que peut prendre une idée simple et les différents problèmes inconsidérées auxquels on fait face pendant sa réalisation. Non seulement mon projet s'est modifié au niveau du but quand il a été vu sous un aspect plus critique mais il a aussi fait naître des chemins alternatifs pour contourner les problèmes de la manière la plus optimale. L'objectif a été atteint même si le programme comporte des lacunes difficiles à combler suite au déréglage des roues et donc de son impact progressif sur la basculation. J'ai été motivé par ce projet mais il a été assez monotone et ne demandait pas un apprentissage approfondi de certains savoir-faires. Il serait intéressant de pouvoir donner un but plus concret à ce projet et à développer la performance des roues ou d'ajouter un moyen pour réguler l'activité des roues. Ceci impliquerait des moyens plus grands en termes de contrôle de l'activité d'un Thymio et il vaudrait mieux se proccurer un robot plus performant.

Références

Aucune référence n'a été utilisée.