|
Bon, déjà je sais reconnaître des incohérences. Maintenant, faut faire en sorte quil n'y en ai plus.
Edit: Ma description est en effet médiocre. Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
ça va venir
![]() http://www.brickshelf.com/cgi-bin/gallery.cgi?m=BUZ
Aménagement de Garage en cours |
|
https://www.technologuepro.com/cours-au ... ls-API.htm
1ere chose à faire, mettre ma feuille en mode paysage ![]() Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
![]() Voilà à quoi ça ressemble dans ma tête ![]() Je te remercie pour la decouverte du logigramme @BUZ. Pour expliquer certaines choses à ma fille, cest plutôt pas mal. Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
Ma maquette valide ce programme, donc je m'y colle.
J'ai un doute sur les Si/Sinon, on verra bien. ![]() En gribouillant mon programme, je me disais que ce serait bien que le Robot choisisse la détection la plus éloigné possible. Et sur l'ensemble des positions de 120 à-120°. Mais avec mon niveau flocon de neige, j'avoue que je sèche. Si avez des pistes (blanche ou bleue), je veux bien un coup de main. Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
Voilà 2 semaines que je me bagarre pour étoffer mon programme et ça n'avance pas.
Et je pense devoir ![]() ![]() ![]() Je me laisse encore 1 semaine avant de lancer une bouteille à la mer. Frustré je suis ![]() Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
Bon, je me résous à officiellement demander de l'aide.
Si le détecteur détecte un obstacle < à 30cm, la tourelle se postionne à 120°, puis tourne dans le sens inverse à la vitesse de -20. Elle s'arrête de tourner quand la distance > à 100 cm, le moteur de tourelle donne sa postion au moteur de direction, le robot démarre et le programme recommence. Le problème est que si la détection ne donne rien, la tourelle se bloque en butée, force un peu et le moteur coupe. Le robot peut rester loooooooooooooooooooonnnnnnnnnggteemps bloqué, jusqu'à que je vienne secourir le bot. Comment réussir a faire un wait_for avec une boucle if... Je dois mal paramètrer un truc, du genre if dist != None. Jai testé plein de choses, rien y fait. Le prog: from mindstorms import MSHub, Motor, MotorPair, ColorSensor, DistanceSensor, App from mindstorms.control import wait_for_seconds, wait_until, Timer from mindstorms.operator import greater_than, greater_than_or_equal_to, less_than, less_than_or_equal_to, equal_to, not_equal_to import math # Create your objects here. hub = MSHub() motor_a = Motor('A') motor_c = Motor('C') motor_e = Motor('E') distance = DistanceSensor('F') # Write your program here. def MA(): hub.status_light.on('red') motor_a.start(30) wait_for_seconds(1) motor_a.stop() motor_c.run_to_position(120) hub.status_light.on('yellow') motor_c.start(-20) def DIR(): hub.status_light.on('pink') motor_c.stop() hub.speaker.beep(83) motor_a.start(-15) motor_e.run_to_position(motor_c.get_position()) wait_for_seconds(1) def EV(): hub.status_light.on('orange') hub.speaker.beep(80) hub.speaker.beep(80) motor_a.start(-15) motor_c.run_to_position(120) motor_c.start(-30) distance.wait_for_distance_farther_than(180) motor_c.stop() motor_e.run_to_position(motor_c.get_position()) wait_for_seconds(1) while True : hub.status_light.on('green') motor_c.run_to_position(0, 'shortest path', 100) motor_e.run_to_position(0, 'shortest path', 100) motor_a.start(-50) distance.light_up_all(10) dist = distance.get_distance_cm(False) if dist != None : if dist < 30: MA() distance.wait_for_distance_farther_than(100) # j'aimerai pouvoir utiliser un if pour inclure une fonction butée. DIR() elif dist < 100: EV() Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
Je viens de trouver un logiciel en ligne qui perment de traduire dcratch en python :SofusPy,.
Pour qui, comme moi, vient de Scratch, c'est top. https://raffinat.perso.univ-pau.fr/bloc ... index.html Je me suis installé une app Python (Pydroid3) pour tester mes conditions "virtuellemment". https://www.google.fr/search?q=pydroid3 ... s-wiz-serp Enfin j'ai trouvé ce que je cherchais depuis longtemps. Merci Mr Raffinat! ![]() Voilà hypothétiquement ma condition wait _for en if. Ça fonctionne sur l'application en tout cas. Pas encore testé dans le RI. C'est drôle de regarder ce qui ce passe quand dist < 30 et dist2 < 100. ![]() Dernière édition par Sifflotte le Dim Oct 16, 2022 3:19 pm, édité 2 fois au total.
Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
hummmm, a la lecture des posts, je confirme que tu mets "la charrue avant les boeufs"
![]() j'ai l'impression que tu vas trop vite dans la création de ta fonction, mais en même temps tu expérimente, donc tu apprends. Tu es sur la bonne voie, mais je vais t'aider à prendre une meilleurs direction (enfin, ne pas te faire aller vers des erreurs évidentes) pour la tourelle, as tu vraiment besoin de faire un mouvement en continue ? Si mouvement continue => alors il faut un condition d'arrêt Si mouvement en séquence => alors tu peux faire une procédure et sortir avec le meilleurs résultat ? genre : Distance trop faible (condition de déclenchement) alors, tester la distance à -60°, -30°, 0°, 30°, 60° tu enregistres les valeurs de chaque test et tu choisis le meilleurs résultat Exemple : la véhicule roule et rencontre un obstacle (distance <30cm), le véhicule s'arrête (séquence d'origine) Test des distances avec la tourelle, résultat pour un test à -30°, -60°, 0°, 30°, 60°=> 15, 18, 25, 50, 200 (en cm) On constate que le coté droit (angle positif) est plus loin, avec une valeur à 200 (j'ai plus la valeur exacte en tête) qui est la limite du capteur, il ne sait pas voir plus loin, donc il n'y a pas d'obstacle. procédure d'évitement => angle déterminé par le test juste avant, rouler pendant 2s (je penses que le véhicule aura esquivé l'obstacle) Puis tout droit (reprise du programme initial) Tu peux également prévoir une variante avec une marche arrière avant de repartir, car si tu dois tourner à fond d'un coté, je ne pense pas que le véhicule tourne suffisamment pour ne pas toucher l'obstacle. dans tes exemples de programmes, tu as souvent le cas où tu ne vérifies pas l'état de l'action en cours, voila pourquoi tu as des résultats inconnus. http://www.brickshelf.com/cgi-bin/gallery.cgi?m=BUZ
Aménagement de Garage en cours |
|
Mettre la charrue avant les boeufs ?... Moi ? Pas le genre
![]() Le soucis que j'ai, cest que je sais quoi programmer mais je ne sais pas comment le faire. Et effectivement, je faisais un peu au pif sans aucun moyen de comprendre réellement le problème. Et sans ça, je ne peux avancer. Mais avec Sofuspy, je peux comprendre et corriger mon programme. Je viens de terminer un bout de mon programme., il sagit de la sequence de detection de la tourelle. Jai rajouté au programme plus haut une butée. Alors pour linstant, la butée est fonction de la vitesse de rotation tourelle. Quand le moteur arrive en butée, il se coupe et est donc = à 0. Pour ça je commence avec sofuspy, je teste les conditions, ensuite j' importe le programme sur Py3 (parce que sosfuspy plante facilement, sans memoriser), je peux comme ça assembler morceau par morceau et tester mon programme. (le temps de gagné sans déconner !) Et cest souvent un problème de syntaxe qui est source de prise de tête. Alors je corrige jusqu'à ce que ça me donne l'air de fonctionner et pour finir, injection dans le RI. Pas encore osé le faire d'ailleurs... J'appréhende un peu.. Alors pourquoi une detection continu plutôt qu'une detection en séquence? Parce que... Faut bien commencer par quelque chose de simple. Je me permettrai dutiliser ton raisonnement si jen ai besoin. ![]() Sofuspy va me permettre de pouvoir programmer plus sereinement. Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
![]() ![]() Je suis pas peu fier de ce mini prog. Il va me servir de base pour construire le programme de détection. Il faut que je puisse indexer la valeur max maintenant, pour connaître sa postion dans la liste et y associer une 2eme valeur. J'adore ![]() Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
On vient d'apprendre que Lego met à la poubelle tout son thème Mindstorms à la fin de cette année... Moi qui me tâtais pour acquérir un #51515 à la première bonne occasion, j'imagine qu'il vaut mieux ne pas attendre et l'acheter tout de suite, surtout que le store est le seul à le vendre ?
Rien n'est plus semblable à l'identique que ce qui est pareil à la même chose. (Pierre Dac)
|
|
Au prix vendu, je me dirigerai sur du arduino ou consorts.
Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
J'ai beau chercher, je ne trouve pas grand chose cerebralement accessible à cette question:
Comment actionner plusieurs moteurs simultanément sous Python? Le projet, un robot omnidirectionnel. Je l'ai déjà fait fonctionner avec scratch, c'est déjà ça ! ![]() Muni de mon cahier et d'un stylo, je bloque sur ce paramétrage essentiel si je souhaite voir les 4 roues mecanum faire leurs tour de magie (parce que c'est vraiment étrange comme locomotion). Merci à ceux ou celles qui pourrait m'aider. Edit: C'est bon en fait, à force de chercher compliqué, je passais à côté du simple: ![]() Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
Après plusieurs essais, et pour une fois je ne vais pas me plaindre, tout ce passe à merveille.
Petite astuce, pour aller de travers, il n'y a que les deux moteurs diamétralement opposé qui fonctionnent. Facile: je ne programme que 2 moteurs. Ça marche pas ![]() Essai avec le rajout des autres moteurs en mode .stop. ![]() ![]() Pour plus de flexibilité, j'ai rajouté un 2eme capteur de distance latéral. Ça fonctionne plutôt bien, mais pour que ce soit top, il en faudrait un 3ème... et pourquoi pas un 4ème. Un hub 51515 coûte une blinde, mais j'ai du PU. (Je cicatrise mal ![]() Pour la énième fois , jai tenté d'installer pybricks et là, miracle, c'est bon, le hub PU tourne sous python. La prochaine étape est la communication entre les hubs 51515 et powered-up, je ne sais pas si ce sera pas facile ou pas facile du tout. Je me souhaite bonne chance ![]() Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
Retourner vers Les Lego sur le PC
Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 5 invités