Voici un nouveau projet. Il s'agit de faire un "Spider" Kame, très populaire sur YouTube, avec une mécanique Lego.
Cela est rendu possible grace à ces nouveaux petits servos, https://www.robot-ma...ompatible-lego/
Ces servos sont des S9g avec un habillage Lego.
En faisant quelques recherches pour le projet de notre amie Manon, https://www.robot-ma...upede/?p=100203, je me suis intéressé aux quadrupèdes de type Spider et en particulier pour le Kame qui a la particularité de ne fonctionner qu'avec 8 servos. C'est donc un 8 DOF(Degree of Freedom) avec 2 servos par pattes, alors qu'habituellement ce type de quadrupèdes sont des 12 DOF avec 3 servos par pattes. Notez que l'une des caractéristiques du Kame est l'utilisation du parallélogramme pour la dernière articulation de la patte.
Indépendamment de la mécanique Lego, j'ai choisi d'utiliser un Arduino Nano au lieu de l'EV3 pour des questions de volume et de poids, mais il se pourrait que dans un deuxième temps je fasse une version avec l'EV3.
Par ailleurs, j'ai découvert le Shield Arduino Nano V3 sur lequel on enfiche directement le Nano et les connecteurs de servo. Cela évitera la forêt de connections habituelles que l'on voit sur une Breadbord.
Malheureusement, je n'ai pas réussi à trouver toutes les caractéristiques de ce Shield. Donc, si vous avez un lien, il sera bienvenu, merci d'avance.
Sur la photo, je ne montre que 2 pattes sur 4, car je n'avais commandé que 4 servos uniquement pour les tester. Je vais donc devoir attendre un mois avant d'avoir les autres. Mais je pense que l'on a déjà une bonne idée du résultat.
Voilà, il ne s'agit pas d'un projet collaboratif, néanmoins je suis impatient de pouvoir comparer mon quadrupède à celui de Manon qui devrait être assez similaire.
Cliquez moi.

Lego - Arduino Kame Quadruped
#1
Posté 26 novembre 2018 - 12:40
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#2
Posté 07 décembre 2018 - 11:15
Ce quadrupède est basé sur la version "Ez Arduino MiniKame" inspiré du Kame.
Cette version est basée sur un Arduino Nano enfiché sur un Shield Arduino Nano V3.
Liens Thingiverse, voir échanges sur la réalisation:
https://www.thingive...m/thing:2505147(28/08/2017) il semblerait que ce soit la référence. Code https://github.com/m...rduino-minikame
https://www.thingive...m/thing:2317065(13/05/2017) obsolète
https://www.thingive...m/thing:2872978(03/05/2018) fait référence au code https://github.com/m...no-minikame-mk2 et utilise le Huaduino https://www.instruct...OF-3D-Print-Qu/
https://www.thingive...m/thing:2523270(08/09/2017) fait référence au code https://github.com/m...rduino-minikame
Liens vers 2 codes. Ces 2 codes sont légèrement différents. Je n'ai pas encore fait mon choix :
https://github.com/m...rduino-minikame sans Bluetooth
https://github.com/m...no-minikame-mk2 avec Bluetooth
Connexion Bluetooth avec smartphone :
module HC05 ou HC06 : https://cdn.thingive...roid.chrome.png
- Mike118 aime ceci
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#3
Posté 07 décembre 2018 - 05:10
Il vraiment petit. C'est approximativement un carré dont le coté est égal au petit coté d'une carte de crédit.
J'ai fait un cable avec un connecteur type alim PC portable pour brancher ma batterie LiPo 2S.
Le Shield Arduino Nano V3 est pourvu d'une alimentation interne qui fournit du 5V et du 3,5V. Alors que ma LiPo 2S fournit du 8,3V.
Les servos sont alimentés en 5V.
Comme vous pouvez le constater sur l'image ci-dessous, tout est simplifié, pas de forêt de fils comme sur une Breadboard.
Le servo est directement branché sur un connecteur comprenant masse, tension et signal.
Pour l'instant, aucun problème, si ce n'est que les degrés du servo sont un peu large Il faut donc pondérer. En contrepartie, ces servos semblent d'excellente qualité.
J'ai reçu tous mes servos. J'attends une petite LiPo 2S très petite et légère.
Je vais donc commencer à étudier le code.
Cliquez moi.

Ma chaine YouTube : https://www.youtube..../oracid1/videos
#4
Posté 08 décembre 2018 - 08:37
Schéma d'implantation des servos.
Le premier chiffre correspond au numéro du servo. Le deuxième chiffre correspond au numéro de la connection du pin Arduino.
' left FRONT right'
' (3,9) (1,8) (0,2) (2,3)'
' (7,7) (5,6) (4,4) (6,5)'
En forme tableau :
' N° servo pin'
' 0 2'
' 1 8'
' 2 3'
' 3 9'
' 4 4'
' 5 6'
' 6 5'
' 7 7'
Le pire, c'est que dans le programme, les commentaires ne correspondent pas au code. Horrible !!!
board_pins[FRONT_RIGHT_HIP] = 2; // front left inner
board_pins[FRONT_LEFT_HIP] = 8; // front right inner
board_pins[BACK_RIGHT_HIP] = 4; // back left inner
board_pins[BACK_LEFT_HIP] = 6; // back right inner
board_pins[FRONT_RIGHT_LEG] = 3; // front left outer
board_pins[FRONT_LEFT_LEG] = 9; // front right outer
board_pins[BACK_RIGHT_LEG] = 5; // back left outer
board_pins[BACK_LEFT_LEG] = 7; // back right outer
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#5
Posté 08 décembre 2018 - 12:32
Voici le code de la version "Ez Arduino MiniKame".
Je pense que c'est ce code que je vais utiliser pour commencer. Déjà, la compile passe sans erreur.
minikame.ino
MiniKame.h
MiniKame.cpp
Octosnake.cpp
Octosnake.h
- Mike118 aime ceci
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#6
Posté 17 décembre 2018 - 11:54
J'ai complètement repensé la structure qui était trop étroite.
Les servos sont de bonne qualité. Ils maintiennent leur position et je n'ai pas réussi à bouger le palonnier à la main, sans aller au delà du raisonnable bien sûr. Je ne tiens pas à en briser un.
Malheureusement, leur déplacement physique est de 270°, alors que le déplacement électronique est bien de 180°.
Cela a eu pour conséquence des débattements désordonnés et quelques sueurs froides. D'où la présence d'un bouton d'arrêt d'urgence.
Autre bizarrerie, hors connexion, on peut faire tourner le palonnier en rotation continue, alors qu'ils ne sont pas prévus pour cela.
En attendant ma petite batterie, je lui fais faire des mouvements sur un piédestal. Le code n'est vraiment pas bien documenté et je me demande si je ne vais pas écrire le mien. Le problème, c'est que cela me prendra beaucoup de temps.
Mon objectif avec cette réalisation est d'avoir quelque chose qui fonctionne "rapidement" et d'extrapoler vers quelque chose de plus grand ou tout du moins de plus ambitieux.
Je trouve la programmation de l'Arduino très contraignante avec le cable USB, l'obligation d'arréter le programme manuellement.
Rien à voir avec le confort de l'EV3.
Cliquez moi.

Ma chaine YouTube : https://www.youtube..../oracid1/videos
#7
Posté 18 décembre 2018 - 02:19
De plus, parfois, il y a un servo qui part en vrille et qui cogne violemment contre la structure.
Impossible de l'arrêter, même avec le bouton d'urgence qui provoque une interruption qui remet les servos au neutre (90°), mais à condition que le servo accepte la commande.
Je vais changer cela et couper directement l'alimentation, avec ce bouton.
Il n'est pas impossible que le Nano ait également un problème. Je pense que je vais le changer.
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#8
Posté 18 décembre 2018 - 03:52
As tu branché le 5V de la nano avec le 5V des servomoteurs ? Si c'est le cas cela peut expliquer un problème ...
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#9
Posté 18 décembre 2018 - 06:03
Non, quand même !As tu branché le 5V de la nano avec le 5V des servomoteurs ? Si c'est le cas cela peut expliquer un problème ...
Quoique, des fois, par inadvertance, je retire la Lipo 2S, avant l'USB. C'est pas bon, ça !
Il faut retirer l'USB avant la Lipo 2S, sinon il y a un petit moment ou c'est l'USB, et donc le Nano qui alimente les servos.
Mais, en fait, ce n'est pas le Nano. J'ai flingué 3 servos. J'ai l'impression que ces servos ne supportent pas le dépassement de couple, du fait qu'ils maintiennent très fermement la position.
J'ai contrôlé ces servos avec un autre Arduino qui me sert de testeur. C'est très net, ils sont morts, ils font n'importe quoi.
Le programme est pas mal et je pense en avoir compris les rouages principaux.
Mais, j'ai décidé de tout reprendre avec mon propre programme, https://www.robot-ma...rupede/?p=84015qui est plus rustique et que je maitrise parfaitement.
Là, au moins, je saurai si c'est les servos qui sont morts ou mon programme qui n'est pas bon.
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#10
Posté 18 décembre 2018 - 06:15
N'hésite pas à t'inspirer du travail de nulentout sur la sonde quadrupède jekert D'ailleurs je dois encore mettre en ligne le dernière ouvrage + des vidéos ... Honte à moi de ne pas avoir encore fait ça ...
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#11
Posté 18 décembre 2018 - 06:52
Oui, oui, j'y pense. J'ai lu tout le dossier au fur et à mesure de sa parution, mais je dois reconnaitre que je n'ai analyser le code.N'hésite pas à t'inspirer du travail de nulentout sur la sonde quadrupède jekert D'ailleurs je dois encore mettre en ligne le dernière ouvrage + des vidéos ... Honte à moi de ne pas avoir encore fait ça ...
La cinématique doit être plus compliqué, c'est un 3-DOF, alors que là, je travaille sur un 2-DOF.
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#13
Posté 23 décembre 2018 - 09:34
Mais mdr excellent mec !!
#14
Posté 24 décembre 2018 - 10:12
oh oh oh
Sinon sur le robot et pas le monsieur tout rouge, pourquoi il "boite" ton robot? La marche ne semble pas symétrique, c'est voulu ou c'est un problème de je ne sais quoi (calibration, servomoteurs différents, le froid, l'arrivée des fêtes, etc.).
#15
Posté 24 décembre 2018 - 02:05
Oui, j'étais assez pressé de publier ma petite vidéo avant ce soir.oh oh oh
Sinon sur le robot et pas le monsieur tout rouge, pourquoi il "boite" ton robot? La marche ne semble pas symétrique, c'est voulu ou c'est un problème de je ne sais quoi (calibration, servomoteurs différents, le froid, l'arrivée des fêtes, etc.).
Mais, pour un premier test, je suis assez satisfait. C'est vrais qu'il y a quand même un gros potentiel de progression…
En fait, cette cinématique est le résultat d'un programme que j'ai écrit.
Il s'agit d'un utilitaire très facile à mettre en oeuvre et qui devrait me permettre d'améliorer très sensiblement la cinématique.
J'ai prévu de le publier et d'en parler dans le courant de la semaine.
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#16
Posté 27 décembre 2018 - 07:38
Les éléments principaux de ce programme sont le tableau qui contient toutes les positions des servos et la fonction Kinematic().
Chaque ligne correspond à un servo. Chaque ligne contient les valeurs successives que doit prendre le servo.
La fonction Kinematic() consiste en 3 boucles imbriquées qui positionnent les servos au degré suivant.
Ainsi, l'impression de simultanéité des mouvements des 8 servos est excellente.
Description de la fonction Kinematic :
- La première boucle se positionne sur les colonnes du tableau.
---La deuxième boucle se positionne sur le pas (ici, le pas est de 10). Ce pas, ou un multiple, sépare deux valeurs sur la même ligne.
---c'est là que se fait la progression degré par degré.
-----La troisième boucle se positionne sur les lignes du tableau, c'est à dire sur les servos
---------la première condition teste si la valeur en cours est supérieure à la suivante. Si c'est le cas, on la multiplie par -1.
---------De cette manière, en incrémentant un nombre négatif, on décrémente sa valeur absolue.
--
---------la deuxième condition teste si la valeur courante est égale à la suivante.
---------Si c'est le cas, on conserve la même position pendant tout le pas
---------positionnement du servo au degré suivant avec la valeur absolue trouvée, augmentée de la dérive propre à chaque servo.
---------une temporisation permet de définir la vitesse de la cinématique.
-Fin
Cette fonction fonctionne parfaitement bien et bien entendu, je ferai une vidéo ces prochains jours.
Je veux dire l'année prochaine
Pour moi, ce programme constitue une grosse avancée de mon projet Gato. Et cela, sans faire appel à du code que je ne maitrise pas.
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#17
Posté 27 décembre 2018 - 10:51
Bon à défaut de l'avoir publié dans le blog dédié au projet BRIEL, car le projet est en stand bye complet depuis plusieurs mois et il risque de le rester encore longtemps,
Je te partage le code tel qu'il l'est actuellement :
Bien entendu il y a de grosses différences entre nos deux projets, BRIEL est un bipède, qui utilise un driver de servo ... Toi non mais au delà de ça les similitudes dans le fait d'utiliser des séquences pré enregistrer font que tu peux éventuellement t'inspirer de certaines idées qui sont présentes dans le code pour faire évoluer le tiens en le rendant plus " facilement utilisable " ...
Dommage que je ne prenne pas d'avantage le temps de continuer la présentation de ce code étape par étape sur le blog de briel plutôt que de le lâcher comme ça d'un coup ...
Si tu as des questions hésites pas ! ( Après avoir regardé le blog bien entendu qui explique une première partie de la démarche =) )
Joyeux Noël !

Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#18
Posté 28 décembre 2018 - 08:37
J'ai survolé ton code. J'ai beaucoup de mal à lire le code d'une autre personne.Bien entendu il y a de grosses différences entre nos deux projets, BRIEL est un bipède, qui utilise un driver de servo ... Toi non mais au delà de ça les similitudes dans le fait d'utiliser des séquences pré enregistrer font que tu peux éventuellement t'inspirer de certaines idées qui sont présentes dans le code pour faire évoluer le tiens en le rendant plus " facilement utilisable " ...
La calibration des servos est beaucoup plus critique pour un bipède que pour un quadrupède. Je vois que tu calibres le servo sur sa course de -90°,0°,90°. Puis tu fais un map sur la plage trouvée avant de positionner le servo. C'est très intéressant.
Ma calibration, je ne la fais que sur la position 90° (0 pour toi). C'est plus simple et moins précis, c'est certain. Mais c'est pour un quadrupède, donc beaucoup moins de risque. Je note l'idée en cas de nécessité. Cette manière de faire est somme toute assez classique et on peut voir quelque chose basé sur le même principe dans le fichier MiniKame.cpp posté plus haut.
C'est justement en essayant de décrypter ce fichier que j'ai décidé de faire mon propre programme.
Mon programme a pour simple objectif de tester très rapidement la mécanique avec une séquence de positions des servos.
Il n'y a rien d'autre à faire que d'indiquer le nombre de servos utilisée et de remplir le tableau avec ses propres valeurs.
Et ça marche !
Ma chaine YouTube : https://www.youtube..../oracid1/videos
#19
Posté 28 décembre 2018 - 12:54
Je comprends ta démarche, et je comprends que tu trouves le code compliqué. Justement si je me suis lancé dans le blogs de briel c'était pour présenter les différentes parties du code au fur et à mesure avant qu'il ne devienne " complexe " ...
Grosso modo pour reprendre tes mots, le but du code proposé, c'est de" facilement" pouvoir faire la calibration de tes servomoteurs avec des fonctions prévues à cet effet, et de définir des positions de servomoteurs à atteindre tout en fournissant une fonction pour jouer les différentes positions.
Tu peux demander de jouer n'importe quel des mouvements à la suite, il joura le mouvement en douceur en prenant en compte sa position actuelle.
Exemple concret de ce que permet le code proposé .
Imaginons que pour avancer un quadrupède ait besoin de 8 positions intermédiaire :
P0, P1, P2, P3, P4, P5, P6, P7 , joués dans cet ordre.
Il peut être utile de savoir le jouer dans l'ordre inverse par exemple... Ainsi le robot reculerait ?
Il peut aussi être utilie de le jouer dans un ordre différent pour que le robot soit capable de tourner ....
Donc cela permet aussi de rapidement tester des séquence, mais le but c'est donc d'aller au delà du simple test avec la proposition de briques de codes qui vont se retrouver dans le code final d'un robot opérationnel capable de décider dans quel direction il peut aller "à la volée" sans avoir à juste jouer que des séquences de positions.
Sur le principe le code est pensé pour que le robot puisse être interompu au milieu de la réalisation d'un mouvement, et il pourra repartir d'exactement où il s'est arrêté, avec un mouvement fluide sans avoir à finir son mouvement.
Par contre je pense que si tu veux un bon résultat, la partie calibration / montage est une étape très importante ...
Si tu veux fournir une démarche " symétrique " , identique, sans avoir des valeurs différentes un peu partout pour compenser d'eventuelles imprécisions liées aux moteurs et au montage ... Je pense qu'une calibration avancée est indispensable avec ce genre de servomoteurs ...
Si mon commentaire vous a plus laissez nous un avis !
Nouveau sur Robot Maker ?
Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope aux articles, à la boutique et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être !
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!
#20
Posté 28 décembre 2018 - 02:50
Très intéressant.Sur le principe le code est pensé pour que le robot puisse être interompu au milieu de la réalisation d'un mouvement, et il pourra repartir d'exactement où il s'est arrêté, avec un mouvement fluide sans avoir à finir son mouvement.
Je suis bien convaincu par ce que tu dis. Mais il faut bien comprendre qu'une fois la vidéo faite, je passerai à un autre quadrupède.
Avec celui-là, j'aurais déjà beaucoup appris et de plus j'aurais fait un utilitaire très pratique pour la suite quite à l'améliorer en m'inspirant d'autres codes. Du tien, par exemple, merci d'avance.
Ceci dit, aujourd'hui, pas de problème ! Je vais en avant, en arrière, tourne à gauche et tourne à droite. Cela me suffit !
Je ne vais pas perdre mon temps à faire des figures de style ou le Moon Walk.
Je sais que cela se vend bien sur les vidéos, mais cela ne m'intéresse pas.
Ma chaine YouTube : https://www.youtube..../oracid1/videos
Aussi étiqueté avec au moins un de ces mots-clés : Quadrupède, Lego, HC05, Oracid, Kame, servomoteur
1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users