Mesurer une aire

Pour expliquer certains fonctionnements, principes et fondements.
Arkonyk
Level 2
Level 2
 
Messages: 10

Messagepar Arkonyk » Sam Fév 09, 2013 2:36 pm

Bonjour,

Je suis en seconde et aujourd'hui mon professeur de Sciences de l'Ingénieur nous à donner un TP.

Cahier des charges
On vous demande à l'aide du capteur à Ultrason du robot Lego NXT de mesurer une zone en m² dans laquelle se trouve votre robot.
Le robot sera placé dans une boîte en carton.

1. Décrivez en quelques lignes une méthode pour programmer le calcul de la surface en m² à l'aide du capteur.
2. Programmer le robot à partir du logiciel.

Évidemment je n'ai pas le robot avec moi car c'est une activité faite en classe, donc j'ai mis des images du robot

Image
Image
Image

Je n'y connais rien en programmation, j'aurais bien voulu qu'on m'aide pour que je comprenne comment mesurer une surface grâce à l'Ultrason du robot et surtout qu'on me dise comment le programme avec le logiciel (quel bloc mettre, comment régler les bloc...)

Je vous remercie d'avance,

Cordialement.

Avatar de l’utilisateur
tango zoulou
Level 7
Level 7
 
Messages: 572
Localisation: Lons (64)
Âge: 28 ans
moceurtechnicjunior

Messagepar tango zoulou » Sam Fév 09, 2013 3:50 pm

Voilà comment je voie les choses :
- ton robot est placé au milieu du carton
- il mesure avec le capteur ultrason la distance qui le sépare avec le mur en face, cette variable est précieusement enregistré
- il fait 1/4 de tours, dans n'importe quel sens et recommence l'opération
- il refait la même chose jusqu'à ce qu'il ai fait un tours complet.
- ensuite, le robot fait le calcule : A = L * l
L : longueur : la première distance + la troisième distance + 2* la distance qui sépare le capteur et le centre du rotation du robot
l : largeur : la deuxième distance + la quatrième distance + 2* la distance qui sépare le capteur et le centre du rotation du robot

Et c'est tout ! :)

je tiens à préciser que tu n'es pas obliger de faire un robot sur roues.
Le plus simple c'est de mettre juste un moteur posé à même le sol, avec un capteur ultrason dessus. ;)

Sur mon programme, il manque un précision : il faut que le capteur soit bien orienté sur une face. Sinon ça fausse les calculs !
Si tu penses que c'est nécessaire il faut opérer l'algorithme suivant :
- le moteur enregistre la distance qui le sépare du mur
- il tourne de X° et refait la même opération ( X en degré, dépend de la précision souhaité )
- il refait la dernière opération 180 / X fois
- il trouve la distance maximale et prend l'angle qu'il avait à ce moment là
- il opère l’algorithme du début.

Voilou,
Pour la partie programmation et logiciel, je ne m'y connais pas trop. :pamafote:
La plus grosse difficulté dans la création, ce n'est pas de faire quelque chose qui n'existe pas, mais de faire quelque chose qui peut exister.

Mes créations lego

Avatar de l’utilisateur
Dahut
Level 4
Level 4
 
Messages: 97
Localisation: Paris
Âge: 46 ans

Messagepar Dahut » Sam Fév 09, 2013 8:44 pm

Ton système va donner une précision désastreuse, TangoZoulou : 4 mesures ne seront pas suffisantes, et surtout si il commence par se caler sur la direction qui donne la distance maximale, il ne va pas mesurer la longueur mais la diagonale de la zone (si elle est rectangulaire).

Idéalement il faudrait balayer à 360° en mesurant en permanence la distance et en intégrant le carré de la distance, en pratique on se contente d'un certain nombre de mesure. L'algo serait du genre :
-On choisit un nombre de mesure à effectuer, je l'appelle "n" dans la suite (je pense qu'une à partir d'une douzaine on devrait avoir un résultat correct, mais plus il y en aura plus ça sera précis).
-On part de la position initiale, on mesure la distance au mur devant soi.
-On tourne de 360/n° et on recommence.
-On continue, jusqu'à avoir fait n mesures (étalées sur 360°).

On approxime alors la zone dont on veut calculer l'aire par n secteurs angulaires ou bien par n triangles ayant la position du robot pour origine, et l'aire est simple à calculer.
Si on part sur les secteurs angulaires, on peu par exemple utiliser pi*(l_1^2+l_2^2+...+l_n^2)/n, ou l_1,...,l_n sont les distances mesurées.

Arkonyk
Level 2
Level 2
 
Messages: 10

Messagepar Arkonyk » Sam Fév 09, 2013 9:18 pm

Comment dois-je faire cela sur le logiciel NXT-G programmation Mindstorms ?

Merci à vous deux.

Avatar de l’utilisateur
furynick
Level 6
Level 6
 
Messages: 440
Localisation: Toulouse
Âge: 47 ans

Messagepar furynick » Dim Fév 10, 2013 12:20 am

Pour ma part je commencerai par caler le robot perpendiculairement à une face et effectuerai ensuite les 3 autres mesures :
Code: Tout sélectionner
  Initialiser la variable Delta à 0
  Mesurer la distance
  Sauvegarder dans la variable AncienneDistance
  Répéter (
    Tourner de 5°
    Mesurer la distance
    Sauvegarder la distance dans la variable NouvelleDistance
    Si  NouvelleDistance > AncienneDistance
      Si Delta < 0
        Sortie de la boucle
      FinSi
      Delta = 1
    Sinon
      Delta = -1
    FinSi
  )

La boucle attend que la distance diminue puis réaugmente, l'ancienne mesure sera donc la distance perpendiculaire à une face. Il suffit ensuite de tourner de 85° puis deux fois de 90° pour avoir les 4 mesures.

Bien sûr, pour être le plus précis possible chaque mesure devrait être composée de plusieurs échantillons pondérés (la moyenne de plusieurs mesures).

J'essaierai de faire l'exercice en NXT, ça sera très formateur mais je pense que ce ne serait pas te rendre service que de te fournir un programme ... à toi de découvrir et apprendre ;)

Avatar de l’utilisateur
Alban42800
Level 11
Level 11
 
Messages: 2473
Localisation: Loire (42)
Âge: 51 ans
expertgbbexpertnxtvainqueurconcours

Messagepar Alban42800 » Dim Fév 10, 2013 2:27 am

Il faut qu'au départ le capteur soit bien perpendiculaire à un mur. 4 mesures à faire : devant, derrière, à gauche et à droite. L'aire est ensuite facile à calculer. Pour changer la direction de la mesure un moteur suffit avec un axe et le capteur fixé au bout de l'axe. Comme déjà dit pas besoin de roues. Aussi il faut que le capteur soit bien horizontal pas comme sur ton robot, C'EST TRES IMPORTANT sinon la mesure est folklorique !

Faire un tour complet dans un carton va donner des mesures désastreuses et je ne pense pas que ce soit le but de l'exercice. En effet le capteur US donne des valeurs farfelues si le mur n'est pas perpendiculaire.

L'autre moyen de mesurer c'est avec le capteur de contact en faisant rouler le robot jusqu'à chaque mur et mesurant la distance parcourue avec les odomètres des moteurs. Ce sera beaucoup plus précis ;) Mais ce n'est pas non plus le but de l'exercice...

Pour le NXT-G Roboléo a fait des cours accessibles à tous ici : http://www.techlug.fr/Forum/topic1409.html

Bonne lecture :grad:

Arkonyk
Level 2
Level 2
 
Messages: 10

Messagepar Arkonyk » Dim Fév 10, 2013 3:47 pm

Pouvez vous m'orienter vers le début de la programmation via le logiciel Minstorms Lego s'il vous plait ?

Merci à vous tous !

comptesuppr012015
Level 7
Level 7
 
Messages: 618

Messagepar comptesuppr012015 » Lun Fév 11, 2013 10:39 am

Enfin une question précise qui appelle une réponse simple : non.

Je pense que tu as pas mal de billes, là, non ? Le meilleur moyen d'apprendre, c'est d'essayer ! Tu as toute la doc de roboléo. Pas la peine de compter sur nous pour te faire ton TP


Retourner vers De la théorie à la pratique

Qui est en ligne ?

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