Aller au contenu


Photo

Roby/ Robot bipede basé sur le kit Bioloid Comprehensive


  • Veuillez vous connecter pour répondre
129 réponses à ce sujet

#121 Dens26

Dens26

    Membre occasionnel

  • Membres
  • Pip
  • 134 messages
  • Gender:Male

Posté 01 septembre 2024 - 03:25

Petite vidéo de l'assemblage du pied

 

La cheville à un angle d'action de 90° pour l'axe Gauche/Droite (-45° à 45°) et 100° pour l'axe Avant/Arrière (-50° à 50°)

WhatsApp Image 2024-09-01 à 16.58.36_ad10709e.jpg WhatsApp Image 2024-09-01 à 16.58.35_791b7e20.jpg

WhatsApp Image 2024-09-01 à 16.58.35_ddd7584b.jpg WhatsApp Image 2024-09-01 à 16.58.35_45bd58de.jpg

 

 

J'ai réussi à ne pas trop prendre de hauteur

Je passe de 14cm à 15cm du sol à l'axe du genoux.

 

Le poids quand à lui passe de 225g à 390g soit une augmentation de 75%. C'est assez énorme  (x1,75) mais avec plus de puissance (x2,75).

Je pense que l'augmentation du poids sur les pieds n'aura pas trop d’impact (en tout cas j'espère) vu que les pieds sont le plus souvent posés au sol.

 

Par contre il va falloir pouvoir lever le pied ^^ du coup genoux et hanche devront certainement avoir le même réducteur planétaire.

 

J'ai donc le même système pour les hanche qui vont prendre 165g par coté et les genoux qui devraient prendre 80g par coté également soit une augmentation sur la partie basse sans compté les pieds ((165+80)*2) = 490g et si j'arrive à ne pas monter plus en hauteur, 2 cm de plus.

 

Normalement la partie haute n'aura pas besoin d'augmentation de couple



#122 Dens26

Dens26

    Membre occasionnel

  • Membres
  • Pip
  • 134 messages
  • Gender:Male

Posté 02 septembre 2024 - 12:53

Je vous présente l'interface graphique du gestionnaire de position de Roby

Sans titre.jpg

 

C'est encore très basique mais ça me permet de tester plus facilement le bon fonctionnement des servomoteurs

 

J'ai disposé les inputs de façon à mieux repérer les partie concerné sur le robot avec un descriptif du moteur sélectionné

Il est possible de modifier la valeur du servomoteur de plusieurs façons :

- dans l'input du moteur avec la valeur brut (0 à 1023),

- dans l'input Angle moteur en saisissant une valeur en degrés,

- via le curseur

 

Il est possible d'envoyer vers l'Arduino les valeurs des servomoteurs qui ont été coché.



#123 Dens26

Dens26

    Membre occasionnel

  • Membres
  • Pip
  • 134 messages
  • Gender:Male

Posté 12 septembre 2024 - 02:37

Salut les makers.

 

Petite présentation des avancé concernant Roby.

 

J'ai avancé sur l'application Roby Motion dont voici l'interface :

Roby_Motion.jpg

 

Fonctionnalités actuelles de Roby Motion :

  1. Gestion des animations servo-moteurs :

    • Importer et gérer des animations complètes pour Roby, avec des étapes successives contenant des positions spécifiques pour chaque servo (jusqu'à 26 servos).
    • L'application permet de jouer une animation complète en envoyant toutes les étapes, avec les pauses (Break) et les vitesses (Speed) définies pour chaque étape.
    • Possibilité d'envoyer une étape unique en spécifiant manuellement les positions des servos.
  2. Interface utilisateur intuitive :

    • Affichage graphique des étapes : Pour chaque animation, les étapes sont listées dans un tableau interactif avec des colonnes pour les positions des servos, les pauses et les vitesses.
    • Modification dynamique des étapes : Chaque étape peut être modifiée directement dans le tableau (positions des servos, vitesse, pause).
    • Boutons pour ajouter ou supprimer des étapes : Il est possible d'ajouter jusqu'à 10 étapes ou d'en supprimer si nécessaire.
    • Réorganisation des étapes : L'utilisateur peut déplacer une étape vers le haut ou le bas pour ajuster l'ordre des mouvements.
  3. Gestion des paramètres d'animation :

    • Possibilité de définir les paramètres de lecture comme :
      • Le nombre de répétitions d'une animation (RepeatTime),
      • Le taux de vitesse global (SpeedRate),
      • La force d'inertie pour adoucir les mouvements (InertialForce).
    • Sauvegarde des animations sous format JSON, et possibilité de les importer ultérieurement pour continuer à travailler dessus.
    • Affichage du nom du fichier ouvert dans la barre de titre de l'application avec une étoile (*) pour signaler les modifications non sauvegardées.
  4. Fonctionnalité de joint softness :

    • Ajustement de la softness (souplesse) pour chaque articulation. Chaque articulation peut être configurée individuellement dans le tableau associé.
  5. Calcul et gestion des temps d'exécution :

    • L'application calcule automatiquement le temps total d'exécution de chaque étape en fonction des différences de positions et des vitesses.
    • Le temps de pause est ajusté dynamiquement selon la vitesse du servo pour que le mouvement reste fluide, même à des vitesses plus faibles.
    • Le temps réel d'exécution total d'une animation est affiché, prenant en compte le nombre de répétitions et le taux de vitesse global.
  6. Sécurisation des données :

    • Avant d'importer un fichier, l'application vérifie si un autre fichier est déjà ouvert et non sauvegardé, et prévient l'utilisateur pour éviter toute perte de données.
    • Vérification des données entrées : Si les valeurs des positions, des vitesses ou des pauses dépassent les limites autorisées, l'application affiche un message d'erreur et restaure les valeurs précédentes.
  7. Interaction avec l'Arduino Mega 2560 :

    • L'application communique avec l'Arduino Mega 2560 pour contrôler les servo-moteurs.
    • Les commandes envoyées peuvent jouer une animation complète ou une étape unique, avec une gestion du temps et des pauses ajustées par rapport au temps de mouvement réel des servos.
    • Gestion automatique des temps de transmission et d'exécution pour éviter les décalages entre les étapes (inclusion d'une compensation pour le temps pris par les servos à atteindre leur position).
  8. Sauvegarde et exportation :

    • L'utilisateur peut sauvegarder les animations créées et les exporter sous format JSON pour les partager ou les réutiliser.
    • Les boutons de sauvegarde sont dynamiquement activés/désactivés selon l'état des modifications (ex. l'étoile s'affiche dans la barre de titre si des modifications sont en cours).



#124 Dens26

Dens26

    Membre occasionnel

  • Membres
  • Pip
  • 134 messages
  • Gender:Male

Posté 25 septembre 2024 - 11:33

Salut les makers,

Voici la bête !

WhatsApp Image 2024-09-25 à 12.12.25_4c540295.jpg

 

En ce moment, je travaille sur l'application Roby Motion et le code Arduino. J'arrive à envoyer des instructions via le pin TX, mais je rencontre des difficultés à recevoir des informations via le pin RX.

Les instructions de position sont envoyées à chaque servomoteur dans une boucle for comme ceci :

for (int i = 0; 26; i++) {
  if (pos[i] != -1)
    ax12a.moveSpeed(i + 1, pos[i], 312);
}

Le problème est que chaque boucle prend environ 15 à 20 ms pour être exécutée.

 

Cela peut sembler peu, mais entre le servo_1 et le servo_26, il peut s'écouler jusqu'à 500 ms.

Sachant qu'un tour complet de 300° prend environ 1 seconde pour une rotation de 0 à 1023, le servo_1 est déjà à mi-course alors que l'information de position n'a même pas encore été envoyée au servo_26.

 

Je suis donc en train de chercher une solution pour envoyer un paquet d'instructions que les servomoteurs AX-12 exécuteraient simultanément, mais j'avoue galérer un peu.

Actuellement, le data des AX-12 est connectée directement sur le RX/TX de l'Arduino.

 

J'arrive à transmettre des informations via le pin TX, mais toujours pas à recevoir via le pin RX.

J'avais déjà réussi à faire fonctionner tout ça, mais j'ai malheureusement perdu mon travail 😞.

 

À suivre...



#125 Forthman

Forthman

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 467 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 25 septembre 2024 - 12:51

il faut abandonner les temps d'attente, et travailler en temps réel en utilisant les interruptions

 

Je ne l'ai jamais fait sur arduino donc je ne pourrais pas te donner d'exemple concret

 

Le but est d'avoir une ou plusieurs variables qui seront incrémentées à chaque interruption

(il faut un code très simple pour l'interruption )

Le programme principal est en fait une boucle indéfinie qui surrveille les valeurs de ces variables

et qui déclenche des opérations en fonction

 

Il faut bien choisir la vitesse de l'interruption si par exemple tu définis une fréquence de 1000Hz (1KHz),

et que ton moteur a besoin de 500 impulsions secondes pour tourner à la vitesse max, ça veut dire que

tu vas devoir lui envoyer une impulsion toutes les 2 interruptions, mais dans ce cas, avec une impulsion

toutes la 4 interruption, il sera à la moitié de sa vitesse et donc entre VMax et VMax/2 il n'y aura qu'une vitesse intermédiaire.

 

si tu définis une fréquence de 10KHz, ça augmentera le nombre de vitesses intermédiaires, mais ça va augmenter également

la charge de travail du processeur pour gérer l'interruption (ces valeurs sont juste pour donner une idée, la limitation doit être bien plus haute)



#126 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 164 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 25 septembre 2024 - 01:17

Tu es sur des AX12, tu est donc sur le protocole 1.0  https://emanual.robo...n/dxl/protocol1

les paramètres suivants devraient t'intéresser : 

 

  • 0x04 Reg Write Instruction that registers the Instruction Packet to a standby status; Packet is later executed through the Action instruction
  • 0x05 Action Instruction that executes the Packet that was registered beforehand using Reg Write

 

Le but c'est de dire à tous tes servomoteurs quelle est leur consigne dans un premier temps, sans qu'ils y aillent, puis leur dire " action " pour qu'ils y aillent tous en même temps ... 
Dans ce cas là tu auras toujours un petit délais entre deux actions, mais il sera moins gênant car tu n'auras pas un moteur qui commence à bouger avant un autre...


Sinon il y a également : 

  • 0x83 Sync Write For multiple devices, Instruction to write data on the same Address with the same length at once

à bien confirmer que c'est bien dispo avec les ax12, qui permettrait de piloter les AX12 tous d'un coup ... 

Pour lire les données des ax12 il faut utiliser la commande read, mais tu dois avoir l'électronique qui va bien pour convertir le signal RX TX sur un seul fil du dynamixel, en deux fils RX et TX ...
Et pendant l'attente du retour, ton arduino ne doit pas envoyer de données ... 

Le mieux c'est que tu refasse un montage à côté avec un seul ou deux dynamixel pour refaire tes tests de code ... =)

En tout cas comme le dit forthman, tu dois également supprimer tous les delay si jamais il y en a dans ton code ;)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

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!

 

Les réalisations de Mike118  

 

 

 


#127 Forthman

Forthman

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 1 467 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 25 septembre 2024 - 01:46

c'est là que je me rend compte que ça fait longtemps que je n'ai pas touché à la programmation,

avant il fallait tout se farcir à la main, maintenant le niveau est bien plus haut et on peut faire abstraction de beaucoup de choses :crazy:



#128 Dens26

Dens26

    Membre occasionnel

  • Membres
  • Pip
  • 134 messages
  • Gender:Male

Posté 25 septembre 2024 - 01:59

Merci pour vos retour.

Je suis effectivement en train de faire des test avec 2 servomoteurs AX-12+ et AX-12A car il y a les deux sur le robot

Je me concentre sur la réception de données des servomoteurs sur la pin rx

J'ai suivi cette vidéo sans succès pour l'instant
https://youtu.be/FNL...PGc7yWSv6oZmEw0

Une fois que j'arriverai à récupérer les donnes des AX-12 je pourrai me pencher sur la fonction syncWrite() afin d'envoyer les positions sur tout les servos en même temps

#129 Dens26

Dens26

    Membre occasionnel

  • Membres
  • Pip
  • 134 messages
  • Gender:Male

Posté 25 septembre 2024 - 10:47

Petit retour.

 

C'est OK pour la récupération des data des servomoteurs AX_12.

 

J'avais inversé les fil GND et Data. Heureusement, ça na pas occasionné de dommage sur les servomoteur testé. :dash2:

 

Capture d'écran 2024-09-25 232701.png

 

Il me reste à créer cette fonction syncWrite() qui n'es pas existante dans la bibliothéque Ax_12

https://github.com/j...rvo-library.git



#130 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 164 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 27 septembre 2024 - 07:23

Il y a cette librairie : https://github.com/N.../DynamixShield/


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

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!

 

Les réalisations de Mike118  

 

 

 





1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users