Programmation équilibriste avec gyroscope

Pour expliquer certains fonctionnements, principes et fondements.
Arlan
Level 1
Level 1
 
Messages: 3

Messagepar Arlan » Jeu Fév 23, 2012 12:21 pm

Bonjour,

Nous sommes en terminale S-SI et nous avons pour projet dans le cadre de notre PPE de créer grâce à un kit Mindstorm 85-47 V2.0 un robot "équilibriste" type Segway.

Notre cahier des charges nous impose comme seule contrainte l'équilibre du robot sur deux roues, et notre projet serait extrêmement valorisé si nous réussissons à intégrer un capteur gyroscopique dans la programmation du robot or nous n'avons aucune connaissance de programmation en C, ce qui nous oblige à utiliser le logiciel Mindstorm.

Pour le moment, nous avons réussi à calculer l'offset du gyro et le comparer afin de faire tourner les moteurs dans un sens ou dans un autre cependant, le résultat n'est pas encore satisfaisant.
Nous avons cherché sur internet d'autres robots Segway utilisant un gyroscope pour nous aider comme celui de Hi-technic, mais le programme en lui même est bien trop compliqué à comprendre pour notre première utilisation de ce logiciel, nous cherchons simplement à faire tenir même pendant une courte durée (~30s suffisent) notre robot sur ses deux roues.

Avez vous de l'aide, ou un programme même relativement simple pour nous aider à comprendre comment mener à bien notre projet.

Merci.
PS : Nous avons upload notre tentative de programmation.

Avatar de l’utilisateur
tony_st170
Level 12
Level 12
 
Messages: 3080
Localisation: Belleau (aisne 02)
Âge: 33 ans
collectionneurvainqueurconcours

Messagepar tony_st170 » Jeu Fév 23, 2012 1:57 pm

Bienvenue sur SeTechnic ! :hello:

Je suppose que vous faites partie de la classe de Simon Marti qui nous a également demandé une aide pour leur PPE ? :think:

Certains membres pourront vous aider normalement, suffit d'attendre qu'ils se manifestent, moi j'y connais rien personnellement désolé :pamafote:

Par contre votre upload demande un nom d'utilisateur et un mot de passe ... :/
http://tonyst170.free.fr
Ma Collection, Mes Modifs de sets, Mes Mocs, ....

Arlan
Level 1
Level 1
 
Messages: 3

Messagepar Arlan » Ven Fév 24, 2012 2:47 pm

Non, nous ne sommes pas dans la même classe, mais nous avons apparament un même type de PPE. :)

Je vais voir pour l'upload dès que possible.

Lucien
Level 1
Level 1
 
Messages: 1

Messagepar Lucien » Ven Fév 24, 2012 8:14 pm

Bonsoir, Je me présente, fais partie du PPE je suis plus dans la partie méca étude de force ... Mais je suis la conception du programme, quelqu'un pourrait nous aider ?
Merci

Edit : Voilà le fichier est UP et OK :


Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Sam Fév 25, 2012 3:32 pm

Lucien a écrit:Bonsoir, Je me présente, fais partie du PPE je suis plus dans la partie méca étude de force ... Mais je suis la conception du programme, quelqu'un pourrait nous aider ?
Merci

Edit : Voilà le fichier est UP et OK :


Salut,
Un certain nombre de questions ont une réponse dans le post "programmation d'un gyroscope". Si je ne m'abuse, c'est le même projet. :think:
Essayez les gars de vous regrouper pour éviter la dispersion.

L'examen du programme:

Quel est l'objet du test?
Ton programme n'est pas documenté. C'est essentiel pour la bonne compréhension. Utilise l'outil de commentaire pour écrire et pour expliquer à quoi servent chacune des boucles.

Quelques remarques:
La première boucle est un compteur jusqu'à 1000. Pourquoi?
La variable TOTAL est ensuite utilisée dans la poursuite du programme. Explication de la suite?

Il faut préciser le mode de calcul que tu appliques et le choix des valeurs dans les blocs MATH. J'ai remarqué un bloc MATH Soustraction dans la dernière boucle avec zéro comme valeur; en quoi est-elle utile? Pourquoi ne pas lier directement le plot Offset du bloc Gyro Sensor au plot A du bloc COMPARER. Cela devrait économiser 2 blocs.
Tu devrais écrire un MONBLOCK pour l'affichage des valeurs sur l'écran du NXT, de préférence dans un boucle commandée par un bouton du NXT pour maintenir l'affichage. Appuyer sur ce bouton permet de poursuivre le programme.
De plus, cela augmente la lisibilité du programme et accélére le temps d'exécution.
La 2éme boucle est répétée 5 fois, pourquoi ne pas contrôler à volonté chaque 0,8 sec. à l'aide d'un bouton du NXT?
Bref, toutes ces questions auraient été inutiles s'il y avait eu des commentaires…

Je ne dispose pas d'un capteur gyroscopique pour vérifier le test.
Je te rappelle qu'un programme comportant des MONBLOCKs, des sons et images spécifiques, nécessite la création d'un fichier compressé du type .rbtx pour être téléchargé en totalité (vers.2.0 du NXT-G). ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Arlan
Level 1
Level 1
 
Messages: 3

Messagepar Arlan » Jeu Mar 15, 2012 10:14 am

Bonjour,
Retour de vacances, nous reprenons donc les PPE avec le matériel et le logiciel Mindstorm.

-La boucle jusqu'a 1000, simple question de précision, le calcul de l'offet est fait 1000 fois puis divisé par 1000 pour avoir une bonne précision sur la moyenne.
-La variable TOTAL est donc celle qui prend tout les calculs pour la moyenne (addition des valeurs puis division par le nombre de valeur, elle disparait après pour être transformée en "Offset".

-Le dernier block Math avec la soustraction sert uniquement pour ajuster certains problèmes de calcul, elle est inutile pour le moment, elle l'as été et le seras peut être si on doit ajuster la moyenne en la reduisant de 1 ou 2 par exemple.
- Pour ce qui est du MONBLOCK dont tu as parlé, je ne vois pas vraiment ce que tu veux dire et quelle est serai l’utilité.

-La 2eme boucle de 5x 0.8s => 4s, c'est juste une temporisation de 4s avant le lancement du programme après le calcul de l'offset.

Je rajouterai les commentaires dès que possible et vous renverrai le programme.

Édit : J'ai effectivement lu le post de Simon Marti, mais d'après ce que j'ai compris, l'utilisation que nous faisons du gyroscope est totalement différente, nous souhaitons utiliser le gyroscope pour garder le robot en équilibre sur ses 2 roues. De ce type : http://www.hitechnic.com/blog/gyro-sensor/htway/ (ce lui-ci a été fait avec un Gyro + un infrarouge) ou encore http://www.robotshop.com/blog-fr/lego-segway-nxt-161 celui la est fait avec un capteur de lumière.
Le gyro doit nous servir uniquement pour garder le robot droit.

Avatar de l’utilisateur
Polo
Level 12
Level 12
 
Messages: 3030
Localisation: Tours France
Âge: 33 ans
collectionneurmoceurstarwarsexpert

Messagepar Polo » Jeu Mar 15, 2012 12:59 pm

Salut,

Sur le blog de Hitechnic, il y a un lien vers le AnyWay de Laurens Valk : http://robotsquare.com/2012/02/12/tutor ... ng-segway/

Prêt en 1/4 d'heure, base mécanique extrêmement simple et épurée, design sympa (j'ai rajouté une barre devant pour le fun, pour faire le "guidon" du segway), le programme est déjà prêt (mais tu peux le recréer si tu le souhaites, la source nxt-G n'est pas disponible je crois.

Je l'ai monté il y a 2 semaines, il marche du tonnerre ! après, tu peux essayer d'aller plus loin, du genre le contrôler avec une télécommande de wii (je vais essayer avec une wii balance board pour une expérience de pilotage ultime :D )

PS : j'ai fait mon "baptême" de SegWay il y a un mois ...

... et c'est trop énorme !!!Image

Geoffray
Level 4
Level 4
 
Messages: 59
Localisation: Lyon
Âge: 30 ans

Messagepar Geoffray » Mer Mar 21, 2012 12:27 am

Bonjour !
J'aurais bien aimé vous filer un coup de main, on a le même gyropode ... (et oui, en école d'ingé on a la chance de pouvoir encore toucher des briques, c'est toujours mieux qu'un modèle numérique ^^) Sauf qu'on doit programmer les racines du programme sous Matlab et non pas sur le logiciel ... Cela dit ce système est très intéressant pour comprendre l'importance de l'étude de la discrétisation d'un signal, sa correction, etc ... Mais qu'est ce que c'est compliqué tout ça ! Avez vous un algorithme qui tourne pour faire votre programme ?
Bon courage

Avatar de l’utilisateur
BUZ
Level 9
Level 9
 
Messages: 1319
Localisation: Région de la quenelle // Avignon
expertgbb

Messagepar BUZ » Mer Mar 21, 2012 1:10 am

Geoffray a écrit:... en école d'ingé ...
... programmer les racines du programme sous Matlab ...


Par simple curiosité, tu es à ECL ?

Geoffray
Level 4
Level 4
 
Messages: 59
Localisation: Lyon
Âge: 30 ans

Messagepar Geoffray » Mer Mar 21, 2012 11:31 pm

BUZ a écrit:Par simple curiosité, tu es à ECL ?

Eh non! je suis à l'Institut Français de Mécanique Avancée (IFMA) ;) Tu connais ?

Avatar de l’utilisateur
BUZ
Level 9
Level 9
 
Messages: 1319
Localisation: Région de la quenelle // Avignon
expertgbb

Messagepar BUZ » Jeu Mar 22, 2012 12:46 am

Non pas du tout.

J'ai pensé à ECL car tu as pour localisation Lyon.

Mais je constate que dans toutes ces écoles d'ingés, on balance du MatLab à tour de bras sans comprendre sur des mindstorms ...

Avatar de l’utilisateur
Gypaetus
Level 3
Level 3
 
Messages: 29
Localisation: Est d'Auch
Âge: 39 ans

Messagepar Gypaetus » Jeu Mar 22, 2012 9:22 am

:petuncable: Un petit gars de l'IFMA :D
Il y a quelques années j'avais des amis là-bas ... c'est à Clermont, juste en face de l'ISIMA (l'école d'Informatique que j'ai faite). Et nous aussi on avait fait du Mindstorms (RCX à l'époque) mais sans MatLab ;)

Geoffray
Level 4
Level 4
 
Messages: 59
Localisation: Lyon
Âge: 30 ans

Messagepar Geoffray » Sam Mar 24, 2012 4:28 pm

Tout à fait ! Mais bon on s'éloigne un peu du sujet ...^^ Les concepts de base sont simples à comprendre, mais ça se complique dès que l'on doit corriger des systèmes. Un déséquilibre de gyropode implique une correction. C'est ce qui lui permet d'avoir une bonne dynamique.
A la base le système est pré réglé, mais il faut trouver une correction optimale ... Il faut donc lancer des simulations sous Matlab pour essayer de jouer sur les différents paramètres de correction pour arriver à la meilleure performance possible. Avec l'outil informatique, c'est royal ! Mais quand il s'agit de modéliser tout ça mathématiquement sur le papier, c'est moins marrant ! :s


Retourner vers De la théorie à la pratique

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité