OpenDog

Salut les petits loulous,

Dans le cadre du second semestre de la seconde année du cycle préparatoire à Polytech Angers tous les étudiants ont à faire un projet de conception. Pour ma part j’ai décidé de travailler sur un robot car étant passionné par le sujet depuis l’enfance.

Le nom de ce robot OpenDog le chien robot. Le projet OpenDog est initialement réalisé par James Burton, un «Youtubeur» concepteur de robots en tous genres. Une série de vidéos relate la conception, la réalisation, ainsi que la programmation de ce robot.

James Burton à côté du projet OpenDog

James Burton à côté du projet OpenDog



Présentation du projet:

L’objectif de ce projet est de prendre ce qu’avait fait Baptiste Doineau durant le premier semestre, la partie mécanique et le squelette du chien robot, et de construire par-dessus pour faire en sorte que le chien robot puisse faire des mouvements simples.

Ces mouvements simples sont obtenus à l’aide de cartes électroniques. Ces cartes seront câblées aux encodeurs et aux moteurs puis fixées sur le robot par des pièces mécaniques qui seront à conceptualiser en 3D.

Un programme sera créé et téléversé sur les cartes afin d’animer le chien robot et de contrôler ses mouvements simples.

Les contraintes principales du projet sont :

  • l’utilisation de ce qui a été fait;
  • utiliser des cartes Odrive car indispensable pour faire tourner les moteurs de la même marque;
  • programmer sur des cartes Arduino;
  • réalisation d’explications sur ce qui va être réalisé pour permettre au projet de pouvoir être repris par d’autres élèves.


Travail réalisé:

a) Modélisation 3D

Afin d’intégrer les cartes électroniques et l’alimentation au robot il était nécessaire de faire la CAO (Conception assistée par ordinateur) d’une structure similaire à un dos. Cette structure se sépare en 2 parties, le bloc batteries et le porte-cartes.

Les récepteurs de cartes servent à fixer les cartes sur le robot afin qu’elles ne chutent pas lorsqu’il est en mouvement.

Par sécurité et aspect pratique des poignées ont été rajoutées afin de faciliter les futures expériences à réaliser sur le robot.

b) Étude du système mécanique

Afin de mieux visualiser le comportement mécanique du genou, j’ai schématisé ce mécanisme sur GéoGebra. Ce qui est ressorti de cette schématisation est une formule liant l’angle du genou en fonction de la longueur variable, qui est formé par le roteur et la partie supérieure de la pâte. Sont aussi ressorties une deuxième et une troisième formule pour former la réciproque c’est-à-dire la longueur en fonction de l’angle.

Voici un schéma fait sur GeoGebra d'un genou en mouvement.  PS: Mettre l'image en plein écran pour voir le mouvement.

Voici un schéma fait sur GeoGebra d’un genou en mouvement.
PS: Mettre l’image en plein écran pour voir le mouvement.


La première formule fût trouvée grâce au théorème des cosinus généralisé qui s’exprime dans un triangle usuel sous cette forme :
Triangle quelconque ainsi qu'en haut à gauche une équation exprimant la loi des cosinus et la même équation réarrangée pour isoler l'angle

Triangle quelconque ainsi qu’en haut à gauche une équation exprimant la loi des cosinus et la même équation réarrangée pour isoler l’angle


les deux autres formules servant à calculer la réciproque fût trouver en séparant le triangle quelconque en deux triangles rectangles selon-ci l’angle variable est aigu ou obtus :
Triangle usuel séparé en deux triangles rectangles pour alpha aigu. En haut à gauche on peut voir le cheminement pour arriver à la formule de la longueur c en fonction d'alpha, de b et de a

Triangle usuel séparé en deux triangles rectangles pour alpha aigu. En haut à gauche on peut voir le cheminement pour arriver à la formule de la longueur c en fonction d’alpha, de b et de a


Triangle usuel séparé en deux triangles rectangles pour alpha obtus. En haut à droite on peut voir le cheminement pour arriver à la formule de la longueur c en fonction d'alpha, de b et de a

Triangle usuel séparé en deux triangles rectangles pour alpha obtus. En haut à droite on peut voir le cheminement pour arriver à la formule de la longueur c en fonction d’alpha, de b et de a


c) Développement du système électronique

Pour qu’un moteur puisse accomplir sa fonction il lui faut recevoir des informations par l’intermédiaire de cartes électroniques dans ce cas étant un moteur Odrive il est impératif que le moteur reçoive des informations d’une carte de la même marque.
En effectuant un travail de recherche sur le site officiel, puis en ouvrant l’onglet « DOCS » j’ai trouvé un schéma explicatif du câblage de la carte Odrive.

Schéma explicatif du câblage de la carte Odrive

Schéma explicatif du câblage de la carte Odrive


De la même manière les cartes Odrive doivent recevoir des instructions d’un microcontrôleur. J’ai décidé d’utiliser une carte Arduino comme microcontrôleur pour leur facilité d’utilisation (Langage informatique proche du C++) et la quantité de renseignement disponible.

d) Programmation

Suite aux recherches effectuées sur le site d’Odrive et sur le GitHub, il est mis à disposition une librairie et un programme de test pour l’utilisation de cartes Arduino comme microcontrôleur.

Il y a dans le programme de test une initialisation et 4 parties. L’initialisation paramètre les 2 moteurs branchés sur la carte et demande à l’utilisateur d’envoyer un caractère. Selon le caractère envoyé par l’utilisateur, le programme initialise l’une des quatre parties suivantes :

  • Caractères ‘0’ et ‘1’ : Calibre le moteur 0 si ‘0’ est envoyé ou le moteur 1 si le caractère ‘1’ est envoyé.
  • Caractère ‘s’ : Effectue un mouvement teste. En utilisant la fonction SetPosition qui couplé aux fonctions sinusoïdes fait tourner les deux moteurs.
  • Caractère ‘b’ :Écris la valeurs de la tension fournie à la carte Odrive sur le moniteur série.
  • Caractère ‘p’ : Écris sur le moniteur série la position des moteurs 0 et 1 toute les 10 s.

Il y a deux fonctions sur la librairie (notifiée plus hauts) permettant de changer la position du moteur, SetPosition et SetVelocity. J’ai sélectionné la fonction SetVelocity pour son fonctionnement qui se résume à une vitesse de rotation dépendant de deux variables sélectionné par l’utilisateur. La variable de vitesse de rotation du moteur en count/s et le courant fourni au moteur en Ampère.

Il me restait à trouver une fonction liant le temps de déplacement avec la longueur variable et un moyen de mettre en place une valeur étalon. Pour la fonction, j’ai mis en place une expérience.

Tout d’abord il faut mesurer la longueur variable. Ensuite, il faut faire fonctionner le moteur à la vitesse sélectionné durant une période de temps quelconque. Puis on mesure de nouveau la longueur variable pour finalement calculer la différence entre avant et après ce déplacement. On répète ces manipulations une seconde fois avec une période de temps supérieur à la précédente tout en gardant la même vitesse. Finalement, j’ai considéré que la fonction liant le temps de déplacement avec la longueur variable formait une droite passant par l’origine, ce qui me permet de dire que la pente se calcule suivant cette équation :

  • pente=(t2-t1)/(x2-x1)

Avec x1 ou 2 la différence entre avant et après le déplacement respectivement dans l’expérience 1 et 2.
et t1 ou 2 la période de temps sélectionner respectivement dans l’expérience 1 ou 2.

Grâce à cette expérience ma fonction liant le temps de déplacement à la longueur variable est :

  • Tps=dépla/0.563158

Avec Tps le temps de déplacement en seconde
et dépla la longueur de déplacement en cm

Pour que la pratique concorde avec la théorie plusieurs vérifications ont été nécessairees. Les résultats ont confirmé mon équation.

Montage pour le calcul du temps de déplacement en fonction de la longueur de déplacement

Montage pour le calcul du temps de déplacement en fonction de la longueur de déplacement



Conclusion:

Bien que toutes les tâches qui m’ont été fixées en début de projet soient effectuées, en obtenant du temps supplémentaire il m’aurait été permis d’avoir la possibilité de brancher un ordinateur intégré (carte Raspberry Pi) et un connecteur Bluetooth afin, dans le cadre d’une application sur mobile également à créer, de contrôler les mouvements du robot à distance. Et pour conclure sur les améliorations à ma porté, il m’aurait été intéressant de voir pour changer le bout des pâtes du robot afin que les mouvements soient plus faciles à effectuer et également plus esthétique.

Pour résumé ce fut autant un plaisir qu’un calvaire de travaillé seul sur ce projet. Plus que les raisons citées plus hauts je me retrouvais dans l’incapacité de partager des moments avec d’autre personnes telles que la joie d’enfin avancé après des heures de travail sur un sujet, ou la frustration de rester des heures durant bloquer sur un problème sans ressentir une réelle progression. Ainsi indirectement j’ai pu apprendre l’importance du travail en équipe dans un projet de cette envergure.

Entre autres ce fut enrichissant personnellement, la robotique étant une passion depuis l’enfance comme expliqué dans l’introduction. Un autre point gratifiant était d’observer la progression technique et technologique du projet au fur et à mesure que mes connaissances s’enrichissaient. On peut voir ce projet comme l’aboutissement de l’un de mes rêves d’enfant.

J’aimerais tout de même remercier Monsieur MERCIER Franck, mon tuteur pour ce projet, sans qui l’avancée de ce projet aurait été encore plus limité, que ce soit pour l’aide à l’impression des pièces 3D ou encore des techniques de soudure qui m’ont permis d’accélérer la soudure et surtout d’éviter de me brûler.

Merci pour votre lecture
TIERCELIN Lucas