Programmation d'un "chien de garde"

Pour expliquer certains fonctionnements, principes et fondements.
pieyo0
Level 3
Level 3
 
Messages: 24
Localisation: Lyon
Âge: 27 ans

Messagepar pieyo0 » Mer Nov 03, 2010 1:12 pm

Déjà j'espère poster dans la bonne section !

Alors enfet je voudrais faire en sorte que le capteur ultrasonique passe en mode "chien de garde" c'est a dire qu'il faut qu'il soit capable de mesurer la distance à laquelle il se trouve du premier objet en face de lui, la retienne et exécute un petit programme dés que quelque chose passe entre lui et cette objet !

Dîtes le moi si ce n'est pas clair :)

Merci d'avance !
Dernière édition par pieyo0 le Mer Nov 03, 2010 2:36 pm, édité 1 fois au total.

Thibaud
Level 6
Level 6
 
Messages: 333
Localisation: Paris
expertnxt

Messagepar Thibaud » Mer Nov 03, 2010 1:17 pm

il n'y a pas de mode chien de garde il faut que tu mesure la distance au début du programme, que tu la stocke. puis tu fais une boucle qui lit la distance toutes les Xsecondes et tu compares ta lecture a la valeur stockée, si la valeur lue est inférieur à celle stockée au début alors tu exécute ton action spécifique.

:)

J'espere que sa pourra t'aider
Venez voir mes créations ;) NXTGEN
-----
La team BrickBot

pieyo0
Level 3
Level 3
 
Messages: 24
Localisation: Lyon
Âge: 27 ans

Messagepar pieyo0 » Mer Nov 03, 2010 1:29 pm

Ok !
C'est une bonne idée le stockage de données !
Je sais qu'il n'y a pas de mode "chien de garde" c'est justement pour y remédier que je veux créer ce programme ;)
Je m'y met tous de suite et vous envoie un screen par la suite :)

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

Messagepar roboleo » Mer Nov 03, 2010 2:39 pm

Salut,
Il y a plus simple.
Je prépare le programme et je te l'envoie ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Thibaud
Level 6
Level 6
 
Messages: 333
Localisation: Paris
expertnxt

Messagepar Thibaud » Mer Nov 03, 2010 2:45 pm

comment tu ferais plus simple norbert?
Venez voir mes créations ;) NXTGEN
-----
La team BrickBot

pieyo0
Level 3
Level 3
 
Messages: 24
Localisation: Lyon
Âge: 27 ans

Messagepar pieyo0 » Mer Nov 03, 2010 2:59 pm

Ok je veux bien voir ta solution roboleo ! Mais sinon je viens de finir mon programme, je vais le tester. Voici les screens :

Image

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

Messagepar roboleo » Mer Nov 03, 2010 3:06 pm

Thibaud a écrit:comment tu ferais plus simple norbert?

Pas besoin de stocker les données. Il existe un bloc "Plage" qui résoud le problème.
J'ai des difficultés à télécharger l'image du programme sur ImageShack.

Pour télécharger le programme que j'ai appelé "Aboie", c'est ici.
http://files.me.com/roboleo/5rutnj
C'est un programme .rbtx compressé qui contient un fichier son que j'ai confectionné pour l'occasion. Le NXT aboie, et oui…!
;)
EDIT: voici le programme
Image
Dernière édition par roboleo le Mer Nov 03, 2010 3:41 pm, édité 1 fois au total.
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

pieyo0
Level 3
Level 3
 
Messages: 24
Localisation: Lyon
Âge: 27 ans

Messagepar pieyo0 » Mer Nov 03, 2010 3:11 pm

Je viens de le télécharger et ... C'est super malin ! Mais juste comme sa pour savoir, est ce que mon programme aurait marcher ?

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

Messagepar roboleo » Mer Nov 03, 2010 3:32 pm

pieyo0 a écrit:Je viens de le télécharger et ... C'est super malin ! Mais juste comme sa pour savoir, est ce que mon programme aurait marcher ?

Un truc pour avoir une bonne image du programme:
Utilise dans le logiciel NXT-G "Imprimer" et sélectionne le bouton "HTML". Enregistre sur le bureau.
Il y a 2 fichiers dont un .pgn qu'il faut convertir en .jpg. C'est ce fichier que tu utiliseras comme image. Tu peux jeter l'autre.

En ce qui concerne ton programme, teste-le. On ne sait jamais… Mais tout dépend de ce que tu comptes faire après.
A première vue, il me paraît un peu compliqué. Je vais l'examiner.
Pense toujours à faire simple. Mais il faut aussi connaître tous les blocs et apprendre à s'en servir. ;)

Edit: Attention, tu vas te faire remonter les bretelles par les Modos; surveille ton orthographe…
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Thibaud
Level 6
Level 6
 
Messages: 333
Localisation: Paris
expertnxt

Messagepar Thibaud » Mer Nov 03, 2010 3:53 pm

Tu parles d'un bloc plage, mais il faut bien y mettre une premiere valeur non? auquel cas tu stocke toujours la distance de référence non? j'ai vraiment du mal avec le NXT-G lol ;)
Venez voir mes créations ;) NXTGEN
-----
La team BrickBot

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

Messagepar roboleo » Mer Nov 03, 2010 5:26 pm

Thibaud a écrit:Tu parles d'un bloc plage, mais il faut bien y mettre une premiere valeur non? auquel cas tu stocke toujours la distance de référence non? j'ai vraiment du mal avec le NXT-G lol ;)

Qu'importe la valeur lue par le capteur US (qui est variable), elle est comparée à la plage fixée. Si cette valeur est dans la plage, alors le NXT "aboie", sinon il ne se passe rien. J'ai choisi ici comme limites 0 et 40. Si je ne fais pas confiance au capteur pour des distances proches de zéro, j'aurais pu choisir d'autres limites 15 et 40 par exemple. Le bloc Plage est plus précis. OK ? ;)
Je complète: les limites sont paramétrables, elles peuvent aussi provenir de variables…
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Thibaud
Level 6
Level 6
 
Messages: 333
Localisation: Paris
expertnxt

Messagepar Thibaud » Mer Nov 03, 2010 6:09 pm

dans ton idée la valeur 40 est alors prédéfinie, le programme peut être plus intérressant si cette valeur est lu une première fois par le capteur US. Auquel cas la plage n'est pas nécessaire car il suffira de savoir si ta valeur lue " est inférieur" et non pas "comprise entre ". En terme de programme ton bloc plage masque en fait deux tests, cela simplifie ton programme à la lecture mais pas à l'exécution puisqu'il faudra faire les deux tests. L'idée du programme est de savoir si quelquechose se trouve entre le robot et la distance lu initialement donc de savoir si c'est entre 0 et X, il est alors plus simple de savoir si c'est infèrieur à X. Enfin après il s'agit plus d'optimisation en terme d'exécution.
Venez voir mes créations ;) NXTGEN
-----
La team BrickBot

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

Messagepar roboleo » Mer Nov 03, 2010 7:01 pm

Thibaud a écrit:dans ton idée la valeur 40 est alors prédéfinie, le programme peut être plus intérressant si cette valeur est lu une première fois par le capteur US. Auquel cas la plage n'est pas nécessaire car il suffira de savoir si ta valeur lue " est inférieur" et non pas "comprise entre ". En terme de programme ton bloc plage masque en fait deux tests, cela simplifie ton programme à la lecture mais pas à l'exécution puisqu'il faudra faire les deux tests. L'idée du programme est de savoir si quelquechose se trouve entre le robot et la distance lu initialement donc de savoir si c'est entre 0 et X, il est alors plus simple de savoir si c'est infèrieur à X. Enfin après il s'agit plus d'optimisation en terme d'exécution.

Se baser seulement sur une distance X pour faire agir le robot, implique un capteur US bigrement précis avec des relevés constants. La plage est plus souple (et non pas plus précise, je corrige); elle accepte une marge d'erreur. Maintenant, la valeur X qui est la valeur lue la 1ère fois pourrait être celle d'un obstacle fixe, et le robot à l'arrêt. Ensuite, le passage fortuit entre le robot et l'obstacle déclenche l'alerte.
Si par contre tout le dispositif est en mouvement (un train roulant sur des rails avec un véhicule traversant), il faut quand même une distance fixe (qui se déplace avec le train) de sécurité pour faire agir la garde. On est donc toujours dans le cas d'une marge bornée. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso

Thibaud
Level 6
Level 6
 
Messages: 333
Localisation: Paris
expertnxt

Messagepar Thibaud » Mer Nov 03, 2010 11:59 pm

certes mais si j'ai bien compris le sujet de notre ami son robot sera fixe :) je suis ok sur la précision du capteur us et la nécessité dans certains cas d'avoir une plage. Dans le sujet de base il s'agit juste de savoir si la distance a diminué. On pourrait cependant lire la valeur X de départ et créer la plage en fonction de cette première valeur (niveau bas de la plage la lecture -5 et le niveau haut la lecture + 5cm par exemple)
Venez voir mes créations ;) NXTGEN
-----
La team BrickBot

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

Messagepar roboleo » Jeu Nov 04, 2010 12:43 pm

Thibaud a écrit:… On pourrait cependant lire la valeur X de départ et créer la plage en fonction de cette première valeur (niveau bas de la plage la lecture -5 et le niveau haut la lecture + 5cm par exemple)

Tout à fait d'accord, avec une plage +/- 5 par exemple, on est à peu près sûr de tomber sur la valeur X. L'avantage du bloc Plage est dans l'économie des blocs (comparaisons successives pour la valeur basse et la valeur haute).
Je constate à travers tout ce que j'ai lu, que ce bloc est peu employé. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso


Retourner vers De la théorie à la pratique

Qui est en ligne ?

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