Donovandu88, j'espère que t'es bien payé pour tes formations

Moveo Bcn3d
#102
Posté 15 décembre 2019 - 03:51
L'horloge dans l'application sert à faire communiquer le téléphone et le robot tous les certains nombres de secondes.
Vaut mieux utiliser l'émulateur comme ça les modifications apparaîtrons en temps réel.
C'est mieux d'avoir un module bluetooth qui fonctionne dans les deux sens.
Qu'entends-tu par "sans apprentissage"?
Bonjour,
Je vois deux façons de "commander" un bras :
1) entrer des "waypoints" (les coordonnées des points de passage de la pince) dans un repère lié à la base du bras.
OU
2) emmener le bras dans les positions successives voulues et enregistrer les coordonnées articulaires (angle de rotation des différentes articulations) correspondantes.
En disant, "sans apprentissage, je voulais savoir si tu pouvais commander ton bras par la première méthode et ainsi imposer un déplacement de la pince de 100 mm sur l'axe des X, par exemple.
Merci,
Philippe
#103
Posté 16 décembre 2019 - 08:04
Quand je coche la case 1 j'enregistre toutes les coordonnées sous forme de tag avec TinyDb pareil quand j'ai choisi les autres coordonnées avec les sliders je coche la case 2 pareil pour la numero 3. Quand je clic sur effacer il vide le cache et decoche toutes les 3 cases... C'est le bouton play qui me pose des doute... Quand je clic dessus j'envoie la trame...
Cela veut dire que je dois tout le temps entrer les coordonnées sur les 3 cases sinon j'aurais des trous dans ma trame ? Cela pose problème d'avoir 3 coordonnées dans la trame pour le code sur l'arduino déjà que suis pas super fort en soft ?
Je pourais faire 3 trames différentes selon les cases que j'aurais coché sur l'appli mais après comment faire lors de la lectures sur l'arduino vu que la trame aura une longueur variable ?
#104
Posté 16 décembre 2019 - 08:21
J'ai commencé l'appli je voudrais pouvoir enregistrer différentes coordonnées avec l'aide des slider pour créer des séquences et choisir le nombre de fois ou jouer la séquence
Tu peux me donner des pistes stp ?
Il faut stocker les differentes coordonnées mais comment faire au niveau des trames ?
Les trames tu peux les stocker dans une variable tout simplement ou alors les écrire dans un fichier txt pour les récupérer plus tard.
Donovandu88, j'espère que t'es bien payé pour tes formations
Va falloir que je réfléchisse à mon taux horaire
Bonjour,
Je vois deux façons de "commander" un bras :
1) entrer des "waypoints" (les coordonnées des points de passage de la pince) dans un repère lié à la base du bras.
OU
2) emmener le bras dans les positions successives voulues et enregistrer les coordonnées articulaires (angle de rotation des différentes articulations) correspondantes.
En disant, "sans apprentissage, je voulais savoir si tu pouvais commander ton bras par la première méthode et ainsi imposer un déplacement de la pince de 100 mm sur l'axe des X, par exemple.
Merci,
Philippe
1) Je peux faire ce que tu dis grâce à la cinématique inverse avec des coordonnées en X, Y et Z
2) Avec mon application et des sliders, j'apprends au bras les mouvements qu'il devra reproduire.
Voila j'ai fait ca sous forme de case à cocher..
Quand je coche la case 1 j'enregistre toutes les coordonnées sous forme de tag avec TinyDb pareil quand j'ai choisi les autres coordonnées avec les sliders je coche la case 2 pareil pour la numero 3. Quand je clic sur effacer il vide le cache et decoche toutes les 3 cases... C'est le bouton play qui me pose des doute... Quand je clic dessus j'envoie la trame...
Cela veut dire que je dois tout le temps entrer les coordonnées sur les 3 cases sinon j'aurais des trous dans ma trame ? Cela pose problème d'avoir 3 coordonnées dans la trame pour le code sur l'arduino déjà que suis pas super fort en soft ?
Je pourais faire 3 trames différentes selon les cases que j'aurais coché sur l'appli mais après comment faire lors de la lectures sur l'arduino vu que la trame aura une longueur variable ?
Tes trois trames différentes, c'est pour faire une suite de mouvements ou c'est pour avoir trois mouvements enregistrées séparément?
#106
Posté 16 décembre 2019 - 08:30
1) Je peux faire ce que tu dis grâce à la cinématique inverse avec des coordonnées en X, Y et Z
2) Avec mon application et des sliders, j'apprends au bras les mouvements qu'il devra reproduire.
Peux tu m'expliquer comment, à partir des coordonnées en X, Y et Z, tu peux commander individuellement les différents stepper pour atteindre cette configuration ?
Merci
Philippe
#107
Posté 16 décembre 2019 - 08:40
J'aimerai faire une suite de mouvement et comme toi choisir le nombre de fois qu'il faut la jouer
J'enregistre des suites de trames dans un fichier texte que j'ouvre par la suite en définissant le nombre de répétition.
Essayes de les enregistrer pour commencer.
Peux tu m'expliquer comment, à partir des coordonnées en X, Y et Z, tu peux commander individuellement les différents stepper pour atteindre cette configuration ?
Merci
Philippe
Il faut que tu te tourne vers la Cinématique inverse pour comprendre tous ça.
Je te laisse étudier ce cours, c'est avec celui-ci que j'ai tous appris : http://www.mon-club-elec.fr/mes_docs/math/bras_5_servos/math_bras_5_servos.pdf
#108
Posté 16 décembre 2019 - 08:46
C'est fait je peux enregistrer toutes les coordonnées avec TinyDb ...J'enregistre des suites de trames dans un fichier texte que j'ouvre par la suite en définissant le nombre de répétition.
Essayes de les enregistrer pour commencer.
Il faut que tu te tourne vers la Cinématique inverse pour comprendre tous ça.
Je te laisse étudier ce cours, c'est avec celui-ci que j'ai tous appris : http://www.mon-club-elec.fr/mes_docs/math/bras_5_servos/math_bras_5_servos.pdf
J'ai un stockage de 3 jeu de postions pour tous les axes
Mais je peux le faire sur un fichier texte aussi comme ca j'apprend
Par contre tu stock toutes les valeurs dans un seul fichier à la suite ou alors chaque jeu de coordonnées dans un fichier distinct ?
Il faut separer les valeures avec une virgule ?
C'est surtout pour l'envoie que ca pose problème admettons que une fois tu stock 4 mouvement et la fois d'après que 2 comment adapter la trame ?
#109
Posté 16 décembre 2019 - 09:48
Par exemple : 36,54,0,0,24,180,f
36 = Rotation 1
54 = Bras 1
0 = Bras 2
0 = Rotation 2
24 = Bras 3
180 = Position Servo moteur pince
f = fin de trame
Je les stocks dans un fichier texte, à la suite.
L'application se charge de couper les trames à chaque "f" pour avoir "un paquet de coordonnées"
#110
Posté 16 décembre 2019 - 10:23
Ma trame comporte à chaque fois les coordonnées de tous les axes.
Par exemple : 36,54,0,0,24,180,f
36 = Rotation 1
54 = Bras 1
0 = Bras 2
0 = Rotation 2
24 = Bras 3
180 = Position Servo moteur pince
f = fin de trame
Je les stocks dans un fichier texte, à la suite.
L'application se charge de couper les trames à chaque "f" pour avoir "un paquet de coordonnées"
Bien comme ca je n'aurait besoin que d'un seul bouton pour enregistrer alors que avant je devais faire avec les cases à cocher... je fais ca demain et je vais essayer de trouver comment gerer3les decoupages au f et gérer les repetition des séquences
#111
Posté 16 décembre 2019 - 10:47
Ma trame comporte à chaque fois les coordonnées de tous les axes.
Par exemple : 36,54,0,0,24,180,f
36 = Rotation 1
54 = Bras 1
0 = Bras 2
0 = Rotation 2
24 = Bras 3
180 = Position Servo moteur pince
f = fin de trame
Je les stocks dans un fichier texte, à la suite.
L'application se charge de couper les trames à chaque "f" pour avoir "un paquet de coordonnées"
Tu utilises cette methode http://ai2.appinventor.mit.edu/reference/other/displaylist.html
Ou alors tu utilises l'outil fichier texte de l'onglet stockage ?
#112
Posté 16 décembre 2019 - 10:59
J'enregistre des suites de trames dans un fichier texte que j'ouvre par la suite en définissant le nombre de répétition.
Essayes de les enregistrer pour commencer.
Il faut que tu te tourne vers la Cinématique inverse pour comprendre tous ça.
Je te laisse étudier ce cours, c'est avec celui-ci que j'ai tous appris : http://www.mon-club-elec.fr/mes_docs/math/bras_5_servos/math_bras_5_servos.pdf
Merci, j'ai parcouru le document et j'ai compris !!
Il s'agit en fait du modèle Géométrique inverse (MGI).
Le Modèle Cinématique Inverse (MCI) permet de déterminer les vitesses de chacun des stepper à partir de la vitesse de l'effecteur imposée.
Est-ce que les calculs sont réalisés sur l'Arduino ?
Bonne soirée
Philippe
#113
Posté 17 décembre 2019 - 12:29
Voila c'est fait par contre impossible de rentrer les variables que j'avais attribué au valeur du slider j'ai du rentrer le texte directement dans le fichier de stockageMa trame comporte à chaque fois les coordonnées de tous les axes.
Par exemple : 36,54,0,0,24,180,f
36 = Rotation 1
54 = Bras 1
0 = Bras 2
0 = Rotation 2
24 = Bras 3
180 = Position Servo moteur pince
f = fin de trame
Je les stocks dans un fichier texte, à la suite.
L'application se charge de couper les trames à chaque "f" pour avoir "un paquet de coordonnées"
Par contre je galère pour la suite cad comment séparer, récupérer, choisir le nombre de fois à repeter la séquence et envoyer par bluetooth chaque trame
#114
Posté 17 décembre 2019 - 06:04
Tu utilises cette methode http://ai2.appinventor.mit.edu/reference/other/displaylist.html
Ou alors tu utilises l'outil fichier texte de l'onglet stockage ?
J'utilise "Fichier" de l'onglet Stockage.
Merci, j'ai parcouru le document et j'ai compris !!
Il s'agit en fait du modèle Géométrique inverse (MGI).Le Modèle Cinématique Inverse (MCI) permet de déterminer les vitesses de chacun des stepper à partir de la vitesse de l'effecteur imposée.
Est-ce que les calculs sont réalisés sur l'Arduino ?
Bonne soirée
Philippe
Oui tout les calculs sont fait directement sur l'arduino.
Voila c'est fait par contre impossible de rentrer les variables que j'avais attribué au valeur du slider j'ai du rentrer le texte directement dans le fichier de stockage
Par contre je galère pour la suite cad comment séparer, récupérer, choisir le nombre de fois à repeter la séquence et envoyer par bluetooth chaque trame
Il me semble que je remet le texte dans une variable que je divise ensuite en liste à tous les "f".
#115
Posté 17 décembre 2019 - 06:16
J'utilise "Fichier" de l'onglet Stockage.
Oui tout les calculs sont fait directement sur l'arduino.
Il me semble que je remet le texte dans une variable que je divise ensuite en liste à tous les "f".
Oui effectivement j'ai vu la fonction diviser du texte mais quand j'enregistre plusieures coordonnées dans mon fichier texte et que je divise ce texte j'obtient tout à la suite entre parenthèse avec des virgules mais je ne parvient pas vraiment à isoler les trames les une des autres
#118
Posté 21 décembre 2019 - 10:37
J'aimerai simplifier l'application en envoyant des commandes du type enable, disable...
Quand j'envoie la trame j'aimerai stocker les positions de chaque axes dans un tableau...
J'ai un bouton qui compte chaque sequences enregistrées et chaque sequence est du coup envoyée avec un identifiant pour ensuite prendre place dans le casier du tableau correspondant
String trame = ""; int Rot_1[10], Bras_1[10], Bras_2[10], Rot_2[10], Bras_3[10], Rot_3[10], Pince[10]; const int Enable_Pin =8; void setup() { Serial1.begin(9600); delay(20); pinMode(Enable_Pin, OUTPUT); } void loop() { if (Serial1.available() > 0) { trame = Serial1.readString(); if (trame == "enable") { digitalWrite(Enable_Pin, LOW); } else if (trame == "disable") { digitalWrite(Enable_Pin, HIGH); } else if ( trame == "reset") { int Rot_1[10]={0}; int Bras_1[10]={0}; int Bras_2[10]={0}; int Rot_2[10]={0}; int Bras_3[10]={0}; int Rot_3[10]={0}; int Pince[10]={0}; } if (trame == "run") { //mouvements } if (trame.startsWith("A")) { trame.substring(1, trame.length()); trame = Serial1.readStringUntil(','); Rot_1[0] = trame.toFloat(); trame = Serial1.readStringUntil(','); Bras_1[0] = trame.toFloat(); trame = Serial1.readStringUntil(','); Bras_2[0] = trame.toFloat(); trame = Serial1.readStringUntil(','); Rot_2[0] = trame.toFloat(); trame = Serial1.readStringUntil(','); Bras_3[0] = trame.toFloat(); trame = Serial1.readStringUntil(','); Rot_3[0] = trame.toFloat(); trame = Serial1.readStringUntil('f'); Pince[0] = trame.toFloat(); } if (trame.startsWith("B")) { trame.substring(1, trame.length()); trame = Serial1.readStringUntil(','); Rot_1[1] = trame.toFloat(); trame = Serial1.readStringUntil(','); Bras_1[1] = trame.toFloat(); trame = Serial1.readStringUntil(','); Bras_2[1] = trame.toFloat(); trame = Serial1.readStringUntil(','); Rot_2[1] = trame.toFloat(); trame = Serial1.readStringUntil(','); Bras_3[1] = trame.toFloat(); trame = Serial1.readStringUntil(','); Rot_3[1] = trame.toFloat(); trame = Serial1.readStringUntil('f'); Pince[1] = trame.toFloat(); } }}
Et quand j'envoie "Run" j'aimerai ressortir toutes les positions stockées dans les tableaux pour piloter les moteur.... Vous pensez que c'est faisable ou je perd mon temps ??
Répondre à ce sujet

1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users