Bras robotisé 5 axes et ARDUINO

  • Auteur de la discussion floun
  • Date de début
F

floun

Nouveau
Bonjour.

Je réfléchis à concevoir un bras robotisé 5 axes. Cependant j'ai quelques questions concernant son contrôle avec ARDUINO.

1/ Est il possible moyennant une programmation adéquat sur ARDUINO (au moyen d’équations qui me dépassent j'imagine) de voir la pince avancer ou reculer à l'horizontale lorsque je lui demande? De voir la pince monter ou descendre à la verticale lorsque je lui demande.

2/ Est il possible de faire bouger manuellement le bras (à l'aide d'un joystick) et d'enregistrer ce mouvement afin de le répéter à la demande?

Je demande simplement si tout ceci est possible avec ARDUINO et non pas comment le réaliser, ca viendra plus tard :wink: .

MERCI D'AVANCE POUR VOS PRÉCIEUSES LUMIÈRES.

PS : Je ne connais rien à ARDUINO, si ca se trouve on ne peut même pas procéder par équation...
 
S

stanloc

Compagnon
Je ne vois pas comment on pourrait dire que c'est possible si on ne sait pas comment le faire ou si on ne sait pas comment le faire que cela est possible de le faire. C'est indissociable.
Il faudrait déjà préciser ce que tu entends pas 5 axes et ce que cela sous-entend comme nombre d'axes de rotation. Moi j'ai un énorme doute que ce soit possible compte tenu de l'importance des calculs que cela implique. Je pense qu'il faut commencer par résoudre le problème sur un PC et voir ensuite si le programme tient sur une arduino.
Stan
 
L

LETARTARE

Compagnon
Bonjour,
il y a longtemps, j'avais réalisé la commande d'un robot 5 axes de démonstration très rustique, par le port parallèle d'un PC. Il servait à déplacer les pièces d'un échiquier.
1/ Est il possible moyennant une programmation adéquat sur ARDUINO
Donc ma réponse est : c'est possible si vous êtes un bon programmeur et que votre programme ne dépasse pas les capacités de votre carte 'Arduino'.
Pour l'autre question, je ne sais pas.
Bien cordialement.
 
F

fredcoach

Compagnon
Je ne vois pas pourquoi l'une quelconque de ces fonctions ne serait pas possible.
Il suffit de les programmer, et ça ne me semble pas très difficile.
Pour enregistrer les mouvements, bien sûr, il faut disposer de suffisamment de mémoire, sur disque par exemple.
 
L

louloute30

Compagnon
Salut,
C'est tout à fait possible avec Arduino (avec les limites qu'elle présentera) mais peut être qu'il en faudra plusieurs suivant la motorisation que vous utiliserez.
Mais je pense que la difficulté repose bien plus sur la qualité de fabrication du bras que sur la prog ! Un 5 axe, c'est pas rien !
 
A

antoine_cvra

Apprenti
fredcoach a dit:
Je ne vois pas pourquoi l'une quelconque de ces fonctions ne serait pas possible.
Il suffit de les programmer, et ça ne me semble pas très difficile.
Pour enregistrer les mouvements, bien sûr, il faut disposer de suffisamment de mémoire, sur disque par exemple.

C'est quand même relativement compliqué, surtout la partie génération de trajectoire. Il y a plusieurs approches possibles, mais obtenir une belle ligne droite pour le manipulateur est plutôt difficile d'un point de vue mathématique (algébre linéaire surtout). L'avantage par contre c'est que ca a été fait et refait. Trouver des exemples est donc assez facile.

Est-ce que tu comptes utiliser des servos moteurs de modélisme ou des moteurs CC que tu asservis (ou encore autre chose) ? Les servos de modélisme sont plus simples à commander mais beaucoup moins précis.
 
S

stanloc

Compagnon
antoine_cvra a dit:
C'est quand même relativement compliqué, surtout la partie génération de trajectoire. Il y a plusieurs approches possibles, mais obtenir une belle ligne droite pour le manipulateur est plutôt difficile d'un point de vue mathématique (algébre linéaire surtout). L'avantage par contre c'est que ca a été fait et refait. Trouver des exemples est donc assez facile.

Est-ce que tu comptes utiliser des servos moteurs de modélisme ou des moteurs CC que tu asservis (ou encore autre chose) ? Les servos de modélisme sont plus simples à commander mais beaucoup moins précis.

C'est même impossible ce ne sera qu'une ligne brisée approchant au mieux une ligne droite et cela d'autant que la résolution de chaque rotation des axes du bras sera très fine. Etant donnés les bras de levier qu'il va falloir mouvoir je crains que des servo de modélisme soient exclus.
Attention ce genre d'équipement est rapidement d'un tel niveau d'exigences que seules des entreprises avec des équipes très expérimentées s'y aventurent.
Stan
 
B

Barbidou

Compagnon
Bonjour,

Autant commander 3 axes avec une Arduino, c'est relativement simple, autant pour 5 axes je suis plus sceptique...

Il faut déjà déterminer les modèles géométriques directs et inverses, du point de vue des maths c'est vite complexe et les équations devienne rapidement tordues... L'Arduino est probablement capable de les calculer, mais de là à le faire en temps réel c'est une autre paire de manche...

L'idée de commencer par le programmer sur un PC est certainement la meilleure. Une fois cet exercice réalisé, tu sauras exactement à quoi t'en tenir.

L'avantage d'une simu sur un PC, c'est que les essais ne coûtent que du temps...
 
L

louloute30

Compagnon
Après, ça dépend ce qu'il entend par reproduire les mêmes mouvements...
On peut aussi comprendre par là qu'il souhaite passer d'un point A à un point B...
En ce sens, on divise le mouvement en une somme de point étape à franchir.

Voici un code basique qui peut être amélioré, et permet de passer d'un point A à un point B, et la chorégraphie entre A et B n'est pas forcément connu du demandeur, sera celle qui permet d'atteindre le point B le plus rapidement possible (du moins, avec la longueur de parcourt la plus courte):

Ce code est valable pour des moteurs PAP ou des servomoteurs de modélisme; Ce sera bp plus complexe si vous utilisez des motoréduteurs asservis...

Ce code détermine d'abord la vitesse maximum attribué à un moteur qui a le plus de "trajet" à effectuer, et en déduit alors la vitesse de rotation de chacun des autres moteurs.


Résultat en vidéo des impulsions par ex qui seront envoyées aux moteurs PAP ou des infos envoyés aux servo.
La première led à gauche fait 200 impl, en attendant que la 2ème en fait 300, que la 3ème en fait 50, la quatrième 25, et la dernière 10.
 
A

antoine_cvra

Apprenti
stanloc a dit:
antoine_cvra a dit:
C'est quand même relativement compliqué, surtout la partie génération de trajectoire. Il y a plusieurs approches possibles, mais obtenir une belle ligne droite pour le manipulateur est plutôt difficile d'un point de vue mathématique (algébre linéaire surtout). L'avantage par contre c'est que ca a été fait et refait. Trouver des exemples est donc assez facile.

C'est même impossible ce ne sera qu'une ligne brisée approchant au mieux une ligne droite et cela d'autant que la résolution de chaque rotation des axes du bras sera très fine.

Je pense qu'avec un peu de théorie du contrôle on arrive à des résultats vraiment propres :) Et ca ne sera en tout cas pas une ligne brisée, qui demanderait des accélérations infinies.

Barbidou a dit:
L'Arduino est probablement capable de les [modèles géométriques] calculer, mais de là à le faire en temps réel c'est une autre paire de manche...

Pourquoi le faire en temps réel ? Il peut aussi précalculer sa trajectoire et simplement la "jouer" en temps réel. Pour la partie avec le joystick c'est une autre paire de manche, mais il y a surement moyen de faire un compromis.
 
S

stanloc

Compagnon
antoine_cvra a dit:
stanloc a dit:
antoine_cvra a dit:
C'est quand même relativement compliqué, surtout la partie génération de trajectoire. Il y a plusieurs approches possibles, mais obtenir une belle ligne droite pour le manipulateur est plutôt difficile d'un point de vue mathématique (algébre linéaire surtout). L'avantage par contre c'est que ca a été fait et refait. Trouver des exemples est donc assez facile.

C'est même impossible ce ne sera qu'une ligne brisée approchant au mieux une ligne droite et cela d'autant que la résolution de chaque rotation des axes du bras sera très fine.

[glow=red]Je pense qu'avec un peu de théorie du contrôle on arrive à des résultats vraiment propres :) Et ca ne sera en tout cas pas une ligne brisée, qui demanderait des accélérations infinies.[/glow]

Barbidou a dit:
L'Arduino est probablement capable de les [modèles géométriques] calculer, mais de là à le faire en temps réel c'est une autre paire de manche...

Pourquoi le faire en temps réel ? Il peut aussi précalculer sa trajectoire et simplement la "jouer" en temps réel. Pour la partie avec le joystick c'est une autre paire de manche, mais il y a surement moyen de faire un compromis.

Peux-tu développer ta pensée car cela m'intéresse de connaitre ton approche du problème. Merci.
Stan
 
S

syoctax

Apprenti
antoine_cvra a dit:
Il peut aussi précalculer sa trajectoire et simplement la "jouer" en temps réel.

Peut-être une approche encore plus simple, et c'est utilisé pour certains bras robotisés industriels: enregistrer un mouvement et le rejouer.

Il faut une mesure de l'angle de chaque axe, elle peut être repiquée sur les potentiomètres des servos de modélisme, ou bien lue avec des "smart servos" type AX-12. Il y a une phase d'apprentissage du mouvement ou l'utilisateur bouge manuellement le bras (moteurs éteints) et l'arduino enregistre à pas d’échantillonnage fixe les positions de chacun des axes, et les rejoue par la suite.

Bien-sûr c'est limité à des gestes répétitifs et non calculés dynamiquement mais je trouve que c'est une approche qui permet de valider la partie mécanique et faire pas mal de choses.

Pour moi partir dans des changements de repères et de calculs de trajectoires d'entrée de jeu, c'est un peu mettre la charrue avant les bœufs.
 
F

fredcoach

Compagnon
syoctax a dit:
antoine_cvra a dit:
Il peut aussi précalculer sa trajectoire et simplement la "jouer" en temps réel.

Peut-être une approche encore plus simple, et c'est utilisé pour certains bras robotisés industriels: enregistrer un mouvement et le rejouer.

Il faut une mesure de l'angle de chaque axe, elle peut être repiquée sur les potentiomètres des servos de modélisme, ou bien lue avec des "smart servos" type AX-12. Il y a une phase d'apprentissage du mouvement ou l'utilisateur bouge manuellement le bras (moteurs éteints) et l'arduino enregistre à pas d’échantillonnage fixe les positions de chacun des axes, et les rejoue par la suite.

Bien-sûr c'est limité à des gestes répétitifs et non calculés dynamiquement mais je trouve que c'est une approche qui permet de valider la partie mécanique et faire pas mal de choses.

Pour moi partir dans des changements de repères et de calculs de trajectoires d'entrée de jeu, c'est un peu mettre la charrue avant les bœufs.
C'est bien ainsi que je voyais les choses.
 
L

louloute30

Compagnon
EDIT après le message de Stan
En fait floun, si tu te poses la question du possible ou non, il faudrait nous dire quel type de motorisation vas-tu utiliser, et quelle qualité de déplacement t'attends tu (chirurgicale ou pas trop précis) ?
- des Servo de modélisme
- des moteur PAP
- des Motoréducteurs avec encodeurs

A partir de ça, tu as déjà des exemples qui utilisent une arduino:
- Les petits bras motorisés
https://www.youtube.com/watch?v=HpQH-ePQ4D4
- Les imprimantes 3D DIY sont souvent gérées par des arduino (4 moteurs PAP en fonctionnement synchronisé) lisant des G-codes
https://www.youtube.com/watch?v=xLYPwSA34cE
- Par contre, jamais tu verras une seule arduino (sauf peut être la DUE) capable de gérer 5 motoréducteurs avec encodeurs de manière synchrone. En pratique, il te manquera des pins d'interruptions et tu verras vite que contrôler 1 seul motoréducteur ayant 18000impl / tour c'est la limite maxi qu'elle peut prendre (Mega 1280).

Par contre, il existe d'autres cartes que les arduinos pouvant te conduire à une réalisation de ton souhait. Coté prog, ça reste un peu pareil...
 
Dernière édition par un modérateur:
S

stanloc

Compagnon
Il y a erreur de destinataire, non ? Ce n'est pas fredcoach qui a initié ce fil.
Stan
 
A

antoine_cvra

Apprenti
stanloc: je ferais simplement une interpolation de la trajectoire entre les deux points de départs et d'arrivée, éventuellement en limitant les accélérations. Pour chaque point interpolé tu calcule la cinématique inverse et tu exécutes la trajectoire obtenue. Tu peux faire un truc plus propre en calculant les vitesses et accélération à appliquer et réguler ca en plus de réguler la position.
 
F

floun

Nouveau
Bonjour,

Et bien merci pour chacune de vos réponses.
Et je crois que ce nouveau boulot de programmateur n'est pas pour tout de suite.

Je voyais un bras en bois avec un rayon d'action d'environ 80cm utilisant des servomoteurs et pouvant soulever jusqu'a 20kg, le tout mesdames messieurs avec une précision de 5mm.

Bonne journée
 

Sujets similaires

RzO
Réponses
89
Affichages
8 355
RzO
S
Réponses
112
Affichages
21 732
manum01
M
A
Réponses
37
Affichages
17 433
Alexandre
A
Haut