|
Ce topic sera consacré à mon apprentissage du language Python.
Autant être clair, je n'ai aucune vraie expérience en language informatique. Je ne sais pas si cest un avantage ou non, mais le but est de créer un programme pour robot autonome muni d'un capteur de disrance, d'une tourelle, d'une propulsion et d'une direction. J'en suis au stade où mon robot se debrouille tout seul, pour l'instant il ne tourne qu'à droite parce que..... Je n'ai pas encore trouvé comment le faire tourner à gauche en fonction de la position de détection de la tourelle. A ce stade, cest ultra basique mais j'en bave. Jen bave aussi parce que je me refuse (pour l'instant), à faire appel à de l'aide. Ça m'oblige à lire des ces trucs.... Mais bon, ça commence gentiment par s'éclaircir. (y'a de quoi s'arracher les cheveux parfois,) Exemple de mes lectures du moment: https://www.docstring.fr/blog/3-erreurs ... -remedier/ https://docs.python.org/fr/3.6/library/constants.html https://thecodingfun.com/2021/01/09/leg ... thon-code/ A+ Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
Ok, c'est un Blog ton sujet
Ne pas avoir de "vrai" expérience, c'est pas plus mal. Python n'est pas le plus complexe à apprendre niveau syntaxe. As tu une bonne compréhension de algorithmie et de la structuration informatique ? (on parle pas de langage de programmation, juste d'enchainer des lignes avec un contexte précis) Il faut avoir une idée précise de ce que tu veux faire, voir même de le dessiner sur du papier (logigramme). de là, écrire du code c'est simple car tu ne fais pas la double conversion (idée vers logique vers programme). tu décomposes en tâches simples. http://www.brickshelf.com/cgi-bin/gallery.cgi?m=BUZ
Aménagement de Garage en cours |
|
Hello BUZ
Si tu fais référence à ce genre d'exemple: https://cavril.developpez.com/php/?page=page_2 Oui pour le logigramme, et pas vraiment pour le reste. Faut que je potasse ça. C'est pas si simple à appréhender. Faut assimiler les règles de bases déjà , et je découvre ça au fil de l'eau. Parce que pour paramétrer le capteur de distance (pomper sur le lien Thecodingfun), il faut que: Distance = DistanceSensor Dist = 0 Dist = distance.get_distance_cm(False) If dist != None If dist > valeur : Else: Franchement, impossible pour moi de deviner ce genre de truc ( faire tourner les moteurs c'est "easy", mais rapporter des variables...) Il faut que je teste la même chose mais pour la position en degrée d'un moteur. Je vais m'amuser à changer les paramètres pour voir ce que ça fait. Empirisme quand tu nous tiens. L'idée du programme est clair , limpide, et simple. Pour un gars comme toi, c'est limpression que tu me donnes, c'est fait en moins d'une heure. Il va me falloir une année Je ne pensais pas prendre autant de plaisir à me prendre la tête. Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
comme j'ai dit, si tu as une bonne "carte" (logigramme), c'est plus simple.
Car pour chaque bloc ou test logique, tu peux décomposer. Comme pour toute programmation, tu aura en début, les déclarations => nommer les fonctions/variables/bibliothèque puis un corps de programme avec ou sans boucle. Mais je me répète, comme tu n'as pas l'expérience (et ce n'est pas une critique négative) tu dois formaliser ce que tu souhaites faire. Sinon, tu vas partir dans tous les sens. No problemo pour te coacher On va commencer là, maintenant A quoi ressemble ton robot ? (4 roues ? direction type tank ? un capteur de distance devant ? le truc basique non ?) peux tu décrire, en quelques phrase, ce que tu souhaites faire faire à ton robot ? (un truc basic pour le moment) Edit : tu utilises quoi pour programme le HUB ? http://www.brickshelf.com/cgi-bin/gallery.cgi?m=BUZ
Aménagement de Garage en cours |
|
Wow p&t#@n
Jai reussi à faire en sorte que la valeur en degré de la position de detection du moteur de tourelle fasse tourner ma direction proportionnellement (enfin, presque, faut que je fasse une division) Je suis en valeur absolue apparemment, faut que je trouve le moyen de passer en relatif. En position -120 par ex, jai un message d,'erreur. Mais cest déjà trop bien den être là 8 @BUZ Merci pour le coaching Je ferais une presentation détaillée dans pas longtemps. Si tu programmes le truc de ton côté, j'aimerais autant que tu le garde en réserve, histoire de comparer un programme de débutant à celui dun expert. Je veux me débrouiller tout seul et vraiment pousser mes limites. Nan mais la joie quand la direction à tournée pour la 1ère fois... Jen ai la larme à l'œil... Edit: Ça y est, il ma fallut changer get_degrees par get_position pour passer en mode degré relatif. (cest ce que je comprends) Motor_y. stop() Motor_x. run_to_position(motor_y. get_position()) Je veux maintenant diviser par 6 la valeur de _get_position. Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
je reprends les phrases qu'il fallait retenir
*Prends du papier et tu fais un plan de robot *Prends un papier et fais un logigramme de ce que tu veux lui faire faire *Avec quoi tu programmes ? (c'est important ce point là ...) J'ai aucune idée de quoi ressemble ton robot Ni ce que tu veux en faire Je suis pas un service de programmation, mais si j'ai le temps, je peux te donner un coup de main Je ne penses pas challenger ton programme avec ma version à coté http://www.brickshelf.com/cgi-bin/gallery.cgi?m=BUZ
Aménagement de Garage en cours |
|
@BUZ
En aucun je te demande de te faire un programme. Pis crois moi, si je devais demander un service de ce genre, je le ferais sans détour. Par contre, comparer mon programme une fois fini face à celui dun pro, ça peut être très intéressant. Je t'avoue que je ne pensais pas aller si vite, et mon objectif de faire tourner la direction en fonction de ma tourelle, c'est déjà énorme. T'as raison sur la mise sur papier du programme, et pour le logigramme. Je pense que je vais bien me prendre le chou ! Donc oui et oui je ferais un plan papier, mais faut me laisser un peu temps, je veux bien faire les choses (et ça reste un hobby) mais... javoue avoir été envoûté par la programmation. En attendant, je posterai des photos avec une description. Je fini mon week-end sur un problème de rotation. Pas moyen de faire tourner le moteur de direction x à l'envers. Le get_position me bloque, pas moyen de le faire tourner dans l'autre sens. En fouinant sur le net, sur un arduino, le gars interverti les fils du moteur. Jai plutôt choisi d'utiliser un trio 8t à la place dun duo de 16t pour inverser le sens de rotation. Je butte toujours sur la division, ça a l'air si simple pourtant... Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
Voici le robot. Au demarrage, tourelle et direction position 0. Il avance en ligne droite, si un obstacle se présente, il ralentit, la tourelle pivote à 120 degrés à droite puis revient sur elle-même en mode detection. Quand le détecteur détecte une distance supérieure à(), la direction tourne en fonction de la position de le tourelle (+/- à droite ou +/- à gauche) Si pas de solution, marche arrière pendant (x)seconde. Edit: jutilise une tablette et un clavier bluetooth. Franchement, cest facile en fait Dernière édition par Sifflotte le Lun Sep 12, 2022 1:27 pm, édité 1 fois au total.
Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
Quelqu'un pourrais-il nous montrer ce que ça donne en logigramme ? Merci a celui qui sait faire et prendra le temps. |
|
@tops:
Tu peux le faire, rien ne t'en empêche. Et juste pour te rappeler que ce sujet, en dehors de Python, traite aussi du surpassement de ses compétences. Je te cache pas que de te voir débouler sur mon thread en demandant si on peut te donner tout cuit un truc, et qui ne vient même pas de toi, ça m'embête... Beaucoup. Et sinon, le poulailler ? Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
J'ai lu et retranscrit graphiquement
http://www.brickshelf.com/cgi-bin/gallery.cgi?m=BUZ
Aménagement de Garage en cours |
|
Cest moins compliqué que ce que javais gribouillé.
La flèche gauche de "solution ?" signifie que la reponse est "oui" et que ça le renvoi au "start"? Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
Normalement, tu devrai me dire que "C'est de la merde"...
J'ai bête dessiné tes phrases une par une Pour te montrer qu'il manque des trucs ^^ Pour le DESSIN Oui, quand tu fais un test logique, il n'y a que 2 réponses : OUI et NON Généralement, on n'en désigne qu'une seule pour éviter d'alourdir le dessin. Du coup, penses tu comprendre ce qu'il manque dans tes phrases et par extension ce qu'il manque au logigramme ? http://www.brickshelf.com/cgi-bin/gallery.cgi?m=BUZ
Aménagement de Garage en cours |
|
@BUZ
Pour l'instant, la chose qui m'a sautée au yeux est au niveau de la tourelle. Quand elle passe en mode détection, il n'y a pas de commande pour lui dire quoi faire si "distance >x " n'a rien donné. La boucle devrait ce faire avec "tourelle Poz 120" , ou "Poz init" puis une séquence de MA. (J'ai voulu corriger ça en activant une butée virtuelle à " z degrees" avec retour à "postion 0", mais cela ne fonctionne que dans un sens, et pas le bon. C'est énervant ces petits problèmes... (mais le plus mega reloud, c'est l'indentation. Je passe des minutes à me faire chier. )) Pis aussi, pour bien faire, faudrait une séquence de détection pour la marche arrière. Soit de manière statistique, soit en mouvement. Je commencerai par une séquence statique. C'est plus raisonnable. D'ailleurs, sur le logigramme, le moteur tourne pendant trois 3seconds et s'arrête, ou il s'arrête puis reprends la MA en boucle? Mon bricksafe: https://bricksafe.com/pages/Sifflotte/
|
|
C'est ce que je dis, il n'y a pas dans ton explication de départ le descriptif de cette action (et d'autres)
A non, il y a juste une attente de 3s, nul part on précise ce qu'il ce passe après. On s’arrête ? on repart en marche avant ? etc... je t'invite à repartir du descriptif de base, de le modifier pour éviter les ambiguïtés et d'ajouter les quelques mots/ponctuations permettant de délimiter les actions Tu dois normalement te rendre compte que dans ta tête, ton idée du fonctionnement du robot est largement différente que ce que tu écris. (écriture => logigramme => programmation) Et donc, tu ne pourra pas le programmer correctement car tu vas oublié des trucs ^^ Là on le fait très académique ! c'est pour l'exemple et la méthode http://www.brickshelf.com/cgi-bin/gallery.cgi?m=BUZ
Aménagement de Garage en cours |
Retourner vers Les Lego sur le PC
Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 4 invités