NXT-G, leçon n°1 : Introduction à la programmation

Pour expliquer certains fonctionnements, principes et fondements.
Avatar de l’utilisateur
roboleo
Level 8
Level 8
 
Messages: 955
Localisation: Hauts de Seine
expertnxt

Messagepar roboleo » Jeu Déc 04, 2008 12:44 am

Bonjour à tous,


Cà, c'est moi et je viens de terminer une partie de mon travail…
Alors je me repose un instant sur une ébauche de modèle. Image
Il y a beaucoup de personnes, heureuses propriétaires du kit # 8527, qui souhaitent apprendre à mieux programmer le LEGO® Mindstorms® NXT.
Je vais donc essayer de vous en dire plus sur le sujet.

Mais tout d'abord, quelques petites règles de fonctionnement:
Moi, c'est Roboleo, mais j'accepte LEO. Mon smily pour ce travail c'est :cri:
Je ne suis pas un programmeur gourou, mais j'aime bien que mes programmes collent parfaitement avec mes MOC's. Certains sont élégants, d'autres affreux, mais tous fonctionnent correctement. Ils fonctionnent parce que j'ai consacré le temps nécessaire à l'apprentissage des outils mis à disposition dans le logiciel du NXT.

Première règle: familiarisez-vous avec les outils de programmation.
Et pour cela je vous propose des "leçons" qui s'adressent d'abord aux débutants.

1 - Mais avant de commencer, précisons quelques évidences:
> Vous avez acquis ou disposez d'un kit #8527.
> Vous êtes sensés savoir vous servir d'un ordinateur. Naviguer sur le Net ne suffit pas.
> Vous devez être en mesure de lancer un logiciel, et de procéder à toutes opérations d'enregistrement, sauvegarde, etc…
> Vous avez installé le logiciel Mindstorms NXT sur votre ordinateur
> Votre NXT est équipé de son microprogramme et il est prêt à fonctionner.
(Voir le topic http://www.techlug.fr/Forum/viewtopic.php?t=1256 si nécessaire)

2 - Pour tester les programmes que nous allons élaborer, il nous faudra un robot de travail. Nous l'appellerons BONG et son smily est :bounce:
Confectionné le plus simplement possible, il comportera le NXT monté sur 2 roues motrices actionnées chacune par un servomoteur, + une roue "folle". Il sera équipé du capteur à ultrasons. Un exemple (sans capteur) avec vidéo et notice de montage est accessible ICI:
http://www.nxtprograms.com/five_minute_bot/index.html

LEO :cri: va donc communiquer de temps en temps avec BONG :bounce: et BONG réagira. J'espère qu'il comprendra les ordres qui lui seront adressés.

La première leçon commence ici:

Quelques définitions:
Un ROBOT: c'est un appareil construit pour accomplir des actions d'une manière indépendante et qui réagit avec son environnement.
UN PROGRAMME: Pour l'instant, BONG exécute ce qu'il fait le mieux, c'est-à-dire RIEN.
Pour le faire agir, LEO :cri: va lui donner des ordres, des instructions.

définition: un programme est une suite d'instructions. Programmer, c'est ce que fait LEO quand il crée un programme.

Cela paraît simple, vous verrez cependant qu'il n'en est rien…
Exemple:
LEO :cri:> BONG, avance
(BONG :bounce: se déplace en avant)
LEO :cri:> BONG, stop
(BONG s'arrête)
LEO vient de donner à BONG deux programmes très simples à exécuter. Et oui, 2 programmes!
Le premier est "déplacer en avant", le 2ème "stop". Ils ne comportent chacun qu'une seule instruction.

Est-il possible de réunir ces 2 instructions en un seul programme?
LEO :cri: > BONG, Avance et stop
(BONG ne réagit pas…)
Que se passe-i-il? Manque de précision. Plus exactement les choses se sont déroulées tellement vite que LEO n'a rien vu. Le moteur n'a même pas eu le temps de démarrer que déjà le STOP est intervenu. BONG a fait exactement ce que LEO lui a demandé.
Dans le premier cas LEO :cri: a attendu que BONG démarre, avant de lui demander de s"arrêter. Il a donc eu le temps de se déplacer.
Dans le 2 ème cas, LEO :cri: n'a pas précisé la longueur du trajet ou le temps du déplacement.
Essayons autrement.
LEO :cri: > BONG, avance pendant 5 secondes, puis stop
(BONG se déplace en avant pendant 5 secondes, puis s'arrête).
OK, possible que BONG ne soit pas le problème. Cela signifie que BONG n'a aucun talent de devin et qu'il faut être très précis avec lui.

Voyons maintenant les choses différemment. Au lieu de lui dire comment agir, prenons une feuille de papier et écrivons:
BONG, avance de 90 cm; tourne à gauche de 90°; recule de 60 cm; fait un tour de 360° sur toi-même, et stop.
LEO :cri: donne cette feuille de papier à BONG qui la lit.
Devinez la suite?… BONG :bounce: avance de 90 cm; recule de 60 cm; fait un tour complet sur lui-même et s'arrête.

Si votre Robot NXT est comme le mien, alors il est incapable d' entendre des ordres vocaux ou lire une feuille de papier.
Comment dans ces conditions lui transmettre les instructions?

Facile, vous allez utiliser le logiciel de programmation NXT, celui fourni dans le kit #8527 appelé NXT-G (G pour "graphique" signifiant que les suites d'instructions ne sont pas écrites comme il a été dit précédemment, mais représentées par des vignettes ou mieux, par des icônes).

NXT-G est l'outil de programmation que vous emploierez pour donner vie à vos robots. Il vous permet de créer vos programmes qui seront téléchargés (installés) sur votre robot. Ces programmes peuvent-être de simples instructions comme "avancer de 60 cm et stop" ou bien plus sophistiquées.
Les robots NXT peuvent combiner une grande variété de moteurs et de capteurs mais, sans un bon programme, il n'accomplira pas ce que vous attendez de lui. Vous n'aurez entre vos mains qu' un objet dans la confusion.

Lancez maintenant le logiciel NXT-G.
Cette fenêtre s'affiche… et c'est par là que vous commencerez à programmer.

Image

Commencez par lire la MISE en ROUTE; elle vous donnera quelques notions de base sur l'utilisation du NXT-G. Elle nous seront utiles pour la suite.

(Remerciements à James Floyd Kelly pour son livre "LEGO MINDSTORMS NXT-G Programming Guide" qui m'a beaucoup inspiré…)
Dernière édition par roboleo le Sam Déc 27, 2008 3:12 pm, édité 3 fois au total.

Avatar de l’utilisateur
Nico71
Level 14
Level 14
 
Messages: 9618
Âge: 35 ans
expertgbbexpertsoft3dexperttrialtruckmoceurtechnicexpertvainqueurconcours3

Messagepar Nico71 » Jeu Déc 04, 2008 8:17 am

roboleo : au nom de tout les modo, admin et membre, nous te remercions pou tes tutoriaux trés bien fait ;)

Moi qui fait de la programmation basique dans mes études, avec de la robotique, j'aime bien la façon dont tu présente les choses, ça change :)

Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 19496
Âge: 37 ans
revieweurmoceurstarwarsexpertambassadeur

Messagepar Anio » Jeu Déc 04, 2008 9:00 am

Ouais, Roboleo m'en avait touché 2 mots par mp. ^^
Il a l'intention de faire plusieur leçon.
roboleo a écrit:Moi, c'est Roboleo, mais j'accepte LEO. Mon smily pour ce travail c'est :cri:

2 - Pour tester les programmes que nous allons élaborer, il nous faudra un robot de travail. Nous l'appellerons BONG et son smily est :bounce:

Question : LEO :cri: c'est la brique programmable et BONG :bounce: c'est le moteur. J'ai bon ?
Think outside the box.

Tout plein de liens utiles dans mon profil ! :P

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

Messagepar Polo » Jeu Déc 04, 2008 10:57 am

Non, LEO :cri: c'est le petit bonhomme et BONG :bounce: c'est le robot tout entier.

jfl_207
Level 5
Level 5
 
Messages: 171
Localisation: Belgique
Âge: 52 ans

Messagepar jfl_207 » Jeu Déc 04, 2008 11:38 am

je pencherais plutôt pour

Leo :cri: = le pauvre petit mosieur qui essaye de faire comprendre a Bong :bounce: ce qu'il doit faire
Bong :bounce: = le robot qui ne fait ce que Leo :cri: demande que si Leo :cri: est très clair.

en gros, un programme ne se plante pas, il ne fait que ce que son programmeur lui demande.

Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 19496
Âge: 37 ans
revieweurmoceurstarwarsexpertambassadeur

Messagepar Anio » Jeu Déc 04, 2008 11:41 am

Spa très clair toussa. :pcmarchepo:
Think outside the box.

Tout plein de liens utiles dans mon profil ! :P

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

Messagepar roboleo » Jeu Déc 04, 2008 12:32 pm

Vous voyez bien que rien n'est évident! Pourtant certains ont bien compris…
Je résume:
LEO :cri: c'est l'instructeur, le prof quoi! Pour simplifier celui qui donne des ordres, le programmeur pour être clair. Ce sera bientôt vous si vous êtes (un peu) sérieux.
BONG :bounce: c'est l'assistant du prof; celui qui se tape les tests. C'est le robot, le MOC que :cri: a construit, avec toutes ses pièces, et qu'il va tenter de faire évoluer . Frankeichten quoi!.

Relisez attentivement le post, et laissez-moi le temps de vous préparer la suite.

A+
Roboleo

Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 19496
Âge: 37 ans
revieweurmoceurstarwarsexpertambassadeur

Messagepar Anio » Jeu Déc 04, 2008 5:54 pm

C'est un peu ludique la façon dont tu racontes, mais je t'avoue que je ne trouve pas ca très clair. :think:

Pourquoi ne pas simplement parler de la façon dont il faut programmer la brique NXT pour que les moteurs et autre capteurs fassent ce qui est demandé ?

maxlemalade, dans sa signature, a écrit:la solution la plus compliquée n'est pas toujours la meilleure mais c'est souvent la plus amusante
Think outside the box.

Tout plein de liens utiles dans mon profil ! :P

Avatar de l’utilisateur
Nico71
Level 14
Level 14
 
Messages: 9618
Âge: 35 ans
expertgbbexpertsoft3dexperttrialtruckmoceurtechnicexpertvainqueurconcours3

Messagepar Nico71 » Jeu Déc 04, 2008 7:57 pm

j'aime bien comme ça, c'est bien pour une intro, je suis sur que ça va se corser après avec de la technique en veux tu en voila ;)

Darth Bug
Level 4
Level 4
 
Messages: 55

Messagepar Darth Bug » Sam Fév 21, 2009 10:20 am

Ah bah on se sent plus en confiance qu'à la leçon n°7 :D
Jusque là tout va bien...même sans NXT...

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

Messagepar roboleo » Lun Fév 23, 2009 12:44 pm

Darth Bug a écrit:Ah bah on se sent plus en confiance qu'à la leçon n°7 :D
Jusque là tout va bien...même sans NXT...

C'est fait pour çà.
En effet il vaut mieux commencer par là, surtout si tu ne connais pas Mindstorms NXT. ;)
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 5 invités