Aller au contenu


Photo

ROS MOVEIT Arduino Motor stepper

ROS MOVEIT Arduino Motor stepper

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

#21 DJAlexOfficiel

DJAlexOfficiel

    Membre

  • Membres
  • 20 messages

Posté 12 décembre 2022 - 01:07

Au choix, python3 ou C++ (les deux principaux langages supportés par ROS2, je ne te conseilles pas d'utiliser les autres langages supportés qu'à moitier par ROS sans une bonne raison).
 
Pour choisir entre python3 ou C++, c'est purement une question de gout :
- si tu maitrise l'un mieux que l'autre, alors choisit celui que tu maitrises le mieux
- C++, c'est en gros ce que tu as déjà sur Arduino (avec quelques fonctionnalités du C++ qui manquent sur Arduino, et quelques fonctions propres à l'arduino (delay, digitalWrite, ...) qui ne sont pas dispo en C++ coté Ubuntu)
- python est un peu plus facile à apprendre si on part de 0
- python est faiblement typé (ie tu ne dois pas déclarer les types explicitements) : ça permet d'écrire le code plus vite, mais augmente le risque d'erreurs
- python nécessite souvent moins de lignes de code pour arriver au même résultat
- C++ est plus performant (mais je penses pas que ton noeud ROS soit l'élément limitant)
- C++ permet un peu plus la manipulation au niveau des octets/bits, ce qui peut être pratique pour la communication série, mais si tu débutes, alors tu risque de ne pas exploiter ces fonctionnalités
- le fait d'utiliser du C++ à la fois coté arduino et coté Ubuntu facilite le fait de faire les mêmes manipulations des deux cotés de la liaison série
- les bibliothèques de liaison série sont probablement un peu plus simple en python
 
Donc pas d'avis tranché sur la question. Prends le language que tu maitrises le mieux et/ou qui t'intéresse le plus.
 


Je me suis pencher sur du c++ mais le problème c'est quand je regarde des tuto pour faire de la transmission de donne de linux vers Arduino en c++ il n'y a pas de tuto simple.

#22 DJAlexOfficiel

DJAlexOfficiel

    Membre

  • Membres
  • 20 messages

Posté 14 décembre 2022 - 01:36

Au choix, python3 ou C++ (les deux principaux langages supportés par ROS2, je ne te conseilles pas d'utiliser les autres langages supportés qu'à moitier par ROS sans une bonne raison).

 

 

Le problème que je vais avoir avec l'arduino c'est qu'il va contrôler les moteur 1 par 1 mais plusieurs en même temps. Il y a une solution pour régler le problème ?



#23 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 14 décembre 2022 - 04:22

Je ne suis pas sûr de comprendre : dans quel sens est le problème (l'arduino controle les moteurs un par un alors que tu voudrais les controler séparément, ou l'inverse).

En tout cas, les deux sont possibles.

 

Soit ton noeud ros envoie des messages sous forme numéro_moteur+vitesse, et l'arduino change juste la vitesse de ce moteur.

Soit ton noeud ros envoie un message avec la vitesse pour tous les moteurs, et l'arduino les change tous "en même temps" (enfin en une fraction de milliseconde)


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#24 DJAlexOfficiel

DJAlexOfficiel

    Membre

  • Membres
  • 20 messages

Posté 14 décembre 2022 - 07:44

Le problème c'est qu'un Arduino développe son programme ligne par ligne , c'est-à-dire il va lancer le moteur 1 attendre que le moteur il est fini pour lancer le moteur 2 attendre qu'il finisse...

Un robot industriel lance les moteurs tous en même temps donc il y a J1 J2 J3 qui bouge en même temps alors qu'avec un Arduino ça va faire J1 une fois J1 terminé il lance J2 et attend que J2 ...

Comment résoudre ce problème pour que tous les les moteurs des joints bougent en même temps comme un vrai robot industriel

#25 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 14 décembre 2022 - 07:52

Non on peut lancer plusieurs moteurs " en même temps " ...

Le truc c'est qu'un moteur pas à pas comme son nom l'indique se déplace pas à pas... 

Si tu veux déplacer deux moteurs à la même vitesse de 10 pas, au lieu d'avancer 10 pas 1 moteurs puis 10 pas l'autres, 
tu peux avancer 1 pas le moteurs A et 1 pas le moteur B et recommencer ça 10 fois.  Visuellement tu verras tes deux moteurs se déplacer en même temps. 

et tu peux aussi avancer plusieurs moteurs à des vitesses différentes en ajustant le nombre de pas à "incrémentation"

 


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  

 

 

 


#26 DJAlexOfficiel

DJAlexOfficiel

    Membre

  • Membres
  • 20 messages

Posté 14 décembre 2022 - 07:54

Non on peut lancer plusieurs moteurs " en même temps " ...

Le truc c'est qu'un moteur pas à pas comme son nom l'indique se déplace pas à pas... 

Si tu veux déplacer deux moteurs à la même vitesse de 10 pas, au lieu d'avancer 10 pas 1 moteurs puis 10 pas l'autres, 
tu peux avancer 1 pas le moteurs A et 1 pas le moteur B et recommencer ça 10 fois.  Visuellement tu verras tes deux moteurs se déplacer en même temps. 

et tu peux aussi avancer plusieurs moteurs à des vitesses différentes en ajustant le nombre de pas à "incrémentation"

 


J'y avais penser mais j'avais peur que cela dur trop longtemps mais vu que le code se déroule en quelque ms donc ça va merci bien

#27 DJAlexOfficiel

DJAlexOfficiel

    Membre

  • Membres
  • 20 messages

Posté 19 décembre 2022 - 01:40

Non on peut lancer plusieurs moteurs " en même temps " ...

Le truc c'est qu'un moteur pas à pas comme son nom l'indique se déplace pas à pas... 

Si tu veux déplacer deux moteurs à la même vitesse de 10 pas, au lieu d'avancer 10 pas 1 moteurs puis 10 pas l'autres, 
tu peux avancer 1 pas le moteurs A et 1 pas le moteur B et recommencer ça 10 fois.  Visuellement tu verras tes deux moteurs se déplacer en même temps. 

et tu peux aussi avancer plusieurs moteurs à des vitesses différentes en ajustant le nombre de pas à "incrémentation"

 

 

 

Avez-vous une solution simple en code pour faire bouger les moteur en même temps avec des angles différents.

 

Exemple : 

- moteur 1 : 80deg

- moteur 2 : 60deg

- moteur 3 : 10deg

- moteur 4 : 100deg

 

comme une vrai robot industriel, je sais que si on bouge 1pas le moteur 1 2 3 4 par tour de cycle de l'arduino cela marche pour tout les mêms degres mais avec des dégres différent cela est differennts



#28 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 19 décembre 2022 - 08:45

Bonsoir,

est-ce que tu pourrais préciser ce que tu veux obtenir exactement :

1) les angles, c'est la position "absolue" (entre guillements, car relative à la position initiale ou à une position de reset) ou le déplacement que tu veux?

2) tu veux que les moteurs fassent ce déplacement chacun le plus vite possible? Ou dans un temps imparti (ie tous les moteurs finissent en même temps)? Ou à une vitesse donnée (ie tous les moteurs iront à la même vitesse, ceux le plus proche de leur destination finissant en premier)? Ou chaque moteur à sa propre vitesse? ou avec sa propre durée? Ou encore autre chose?

 

La grande majortié de ces options n'est pas très compliquée à coder (il suffit de calculer, à chaque tour de boucle, si pour un moteur donné il faut faire un pas, ou pas). Mais il y a trop de combinaisons possibles pour que ça vaille la peine d'essayer au hasard, sans savoir laquelle t'intéresse


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#29 DJAlexOfficiel

DJAlexOfficiel

    Membre

  • Membres
  • 20 messages

Posté 20 décembre 2022 - 09:39

Bonsoir,

est-ce que tu pourrais préciser ce que tu veux obtenir exactement :

1) les angles, c'est la position "absolue" (entre guillements, car relative à la position initiale ou à une position de reset) ou le déplacement que tu veux?

2) tu veux que les moteurs fassent ce déplacement chacun le plus vite possible? Ou dans un temps imparti (ie tous les moteurs finissent en même temps)? Ou à une vitesse donnée (ie tous les moteurs iront à la même vitesse, ceux le plus proche de leur destination finissant en premier)? Ou chaque moteur à sa propre vitesse? ou avec sa propre durée? Ou encore autre chose?

 

La grande majortié de ces options n'est pas très compliquée à coder (il suffit de calculer, à chaque tour de boucle, si pour un moteur donné il faut faire un pas, ou pas). Mais il y a trop de combinaisons possibles pour que ça vaille la peine d'essayer au hasard, sans savoir laquelle t'intéresse

 

J'aimerai obtenir ce genre de simulation 



#30 DJAlexOfficiel

DJAlexOfficiel

    Membre

  • Membres
  • 20 messages

Posté 20 décembre 2022 - 10:34

 

J'aimerai obtenir ce genre de simulation 

 

J'ai trouver la librairies multistepper qui fais ce que je recherche.



#31 DJAlexOfficiel

DJAlexOfficiel

    Membre

  • Membres
  • 20 messages

Posté 22 décembre 2022 - 07:55

Bonjour a tous,

 

J'ai pu avancé sur le côté programmation arduino, grace a la librairie AccelStepper & MultiStepper je suis capable de faire fonctionné mes 6 moteurs en même temps, avec des consignes d'angles différents.

 

Maintenant je galère a extraire les données d'un topic qui proviens de ros avec rviz le logiciel qui permet de faire les déplacement et de la simulation sous ros.

 

Avez vous une idée ou un tuto ? Que ce soit en C++ ou Python.  







Aussi étiqueté avec au moins un de ces mots-clés : ROS, MOVEIT, Arduino, Motor, stepper

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

0 members, 0 guests, 0 anonymous users