Servez vous du programme troué et complétez votre programme afin de réaliser la tâche demandée
Enregistrez votre programme dans le répertoire /home/cb/ sous le nom a.nxc (en remplaçant la lettre a par la lettre identifiant le défi à relever)
Compilez votre programme en tapant dans le terminal la commande
nbc a.nxc -O=a.rxe (en remplaçant la lettre a par la lettre identifiant le défi à relever)
Branchez et allumez votre robot et téléchargez le programme dans le robot en tapanat dans le terminal sudo t2n -put a.rxe
(en remplaçant la lettre a par la lettre identifiant le défi à relever)
Validez le fonctionnement de votre programme et corrigez au besoin
Copiez-collez le code de votre programme dans votre page entre les balises
Cochez la case de correction de votre page et enregistrez
Lire la tâche (disponible à l'étape 0 ci-dessous), copier le titre et la description de la tâche dans votre page et copier le programme troué
Lancer le logiciel geany et coller le programme troué
Complétez le programme en fonction de la tâche demandée et enregistrer au format .nxc
Compiler le programme : nbc a.nxc -O=a.rxe
Brancher le robot, allumer le robot et transférer le programme dans le robot : sudo t2n -put a.rxe
Produire votre page de présentation de votre travail qui contiendra :
Titre de niveau 1 : Programme a.nxc
la description de la tâche demandée
le code de votre programme (copier/coller) entre les balises
Vous devez faire les programmes (Défis) A, C, H, i, K, L, M, N, O, P , Q
ou
Bien lire et faire les étapes 0 , 4 et 7 identifiées en rouge ci-dessous ...
Description
Robot NXT sous Linux - NBC/NXC et t2n
Les lettres NXC signifient : "Not eXactly C", traduction: "pas excactement C"
Pour réaliser les différents travaux présentés dans cette activité, vous allez utiliser ces différents programmes
nbc : programme qui permet de compiler un fichier .nxc en fichier .rxe (utilisable avec toutes les versions du firmware)
Talk 2 NXT ou t2n : programme écrit en C++ qui permet de transférer les fichier “.rxe” de l'ordinateur vers la brique NXT, ou le contraire (utilisable uniquement avec la version 1.05 du firmware)
nxttools : NXTTools est une interface graphique permettant différentes interactions avec le NXT que d'autres programmes seulement disponibles en ligne de commande exécutent déjà(t2n, NeXTTool, etc.) (utilisable avec toutes les versions du firmware)
et
py-t2n : programme écrit en python qui permet de transférer les fichier “.rxe” de l'ordinateur vers la brique NXT, ou le contraire (utilisable avec toutes les versions du firmware)
Le défi consiste à programmer le Robots NXT sous Linux en utilisant le langage nxc :
Chacun des travaux présentés sera noté sur 3 points à l'exception du programme A qui sera noté sur 5 points.
Voici les 4 étapes à réaliser pour faire fonctionner un programme :
Écriture du programme dans un fichier enregistré au format .nxc
Compilation du fichier .nxc au format .rxe
Transfert du programme .rxe de l'ordinateur vers la brique NXT
Exécution du programme par votre robot
Consultez au besoin le guide disponible ci-dessous à l'Étape 4 : Résumé des procédures de compilation d'un programme .nxc et de transfert du programme compilé .rxe vers le robot nxt
Vous devez faire les programmes (Défis) A, C, H, i, K, L, M, N, O, P , Q
Dans cette section, votre travail consiste à:
a) bien lire la tâche demandée
b) copier/coller le programme troué pour une des fonctions du robot NXT
c) Copier/coller le titre du défi dans le champ TITRE et comme titre de niveau 1 dans votre page
d) Copier/coller la description du défi dans votre page
e) Ajouter les balises dans votre page
IMPORTANT Piste d'aide : Afin de trouver comment utiliser chacune des commandes ci-dessous, copier/coller les commandes inscrites dans les rectangles jaunes
Utilisez les exemples de programmes accompagnant chacune des commandes (en complétant le programme troué )
Au besoin, utilisez également les fichiers en exemple situés dans le répertoire "/home/cb/.wine/drive_c/Program Files/BricxCC/Documentation/Samples/NXC"
Au besoin, utilisez également le menu VIEW + TEMPLATES du logiciel BRICXCC sous wine
Au besoin, utilisez également GOOGLE avec les mots de recherche : "nxt nom_la_commande_recherchée" ou "nxc nom_la_commande_recherchée"
A : TITRE DU DÉFI : utiliser l'affichage en mode texte : commande :TextOut
Votre tâche consiste à afficher le texte "Allo Maman" dans l'écran du robot en position 10,10 pendant 5 secondes.
Programme troué :
Notez que la position verticale peut également être indiquée en utilisant la ligne: exemple : TextOut(10, LCD_LINE7, "Allo Maman");
B: TITRE DU DÉFI : utiliser l'affichage en mode illustration : commande : GraphicOut
Votre tâche consiste à afficher une image de votre choix parmi celles téléchargées (l'image stop.ric ou une autre parmi celles présentes dans le répertoire /home/cb/) en position 10 ,10 pendant 5 secondes
Téléchargez l'ensemble des fichiers images au format .ric en tapant dans le terminal :
wget http://ladifference.info/i/images//profPierreMorissette/robotique/nbc/fichiers.ric.zip && unzip ./fichiers.ric.zip && rm ./fichiers.ric.zip && cp ./Pictures/* ./
Voici le liste des images additionnelles que vous pourrez utiliser
Accept 03.ric LEGO Brick.ric Send.ric
Aim.ric LEGO Minifig Head.ric Signal.ric
Angry 01.ric Letter.ric Skeleton 02.ric
Angry 02.ric Light Bulb.ric Sleeping.ric
Angry 04.ric Lightning Cloud.ric Smile 01.ric
Backward.ric Lights 02.ric Smile 02.ric
Battery Electric.ric List.ric Smile 03.ric
Bluetooth.ric Lock Locked.ric Snail.ric
Bomb.ric Lock Unlocked.ric Sound.ric
Boom.ric Looking Left.ric Stop 01.ric
Camera.ric Looking Right.ric Stop 02.ric
Crazy 01.ric Map.ric Stop.ric
Crazy 02.ric Microphone.ric Sun.ric
Dead.ric Mobile.ric Surprise.ric
Decline 03.ric Mountain 02.ric Swearing.ric
Dont Walk 02.ric Note 03.ric Talk 01.ric
Dont Walk.ric NXT.ric Talk 02.ric
Ear.ric PC.ric Temperature C.ric
Earth.ric Point Left.ric Think.ric
Eye Closed.ric Point Right.ric Time 00.ric
Eye Open.ric Point Up.ric Time 01.ric
Eye.ric Power.ric Time 02.ric
Floppy Disks.ric Push Button.ric Time 03.ric
Flower.ric Rabbit.ric Time 04.ric
Follow.ric !.ric Timeglass.ric
Forward.ric Right 02.ric Time.ric
Gasoline.ric Rotation.ric Tired 01.ric
Grey Bulb.ric Run 01.ric Trash Can.ric
Hand.ric Sad 02.ric Two Arrows.ric
Heart 01.ric Sad.ric Walk 02.ric
Heart 02.ric Satellite 03.ric Zzzz.ric
Left 02.ric Search.ric
Les images au format .ric seront présentes dans le répertoire /home/cb/
Tapez dans le terminal la commande suivante afin d'afficher le nom de tous les fichiers .ric ls *.ric
Notez que vous pouvez utiliser le logiciel "NXT2 Programming" sous Windows pour éditer/créer un fichier image au format .ric en utilisant le menu TOOLS + IMAGE EDITOR (tutoriel ici)
Vous devez vous assurer que le fichier image au format .ric est présent dans la brique nxt en
1)Branchant votre robot dans le port USB de votre ordinateur et allumez votre robot.
2) tapant dans le terminal : sudo t2n -put nom_du_fichier.ric
Si le nom du fichier .ric contient des espaces, veuillez renommer ce fichier en supprimant les espaces.
ATTENTION à respecter la casse (majuscules et minuscules dans le nom du fichier)
Notez que vous pouvez utiliser au besoin (méthode alternative) le programme NXTTOOLS+FILE EXPLORER pour télécharger votre fichier .ric dans la brique
IMPORTANT :
Téléchargez le fichier "stop.ric" dans le répertoire /home/cb et décompactez ce fichier en tapant dans le terminal wget http://ladifference.info/i/images//profPierreMorissette/robotique/stop.ric.zip && unzip stop.ric.zip && rm stop.ric.zip
Le fichier sera présent à cet emplacement : /home/cb/stop.ric
Téléchargez maintenant ce fichier dans votre robot en :
1)Branchant votre robot dans le port USB de votre ordinateur et allumez votre robot.
2) tapant dans le terminal : sudo t2n -put stop.ric
C: TITRE DU DÉFI : utiliser l'affichage en mode dessin (dessiner sur l'écran) commandes : LineOut, CircleOut, RectOut,...
Votre tâche consiste à dessiner cette figure sur l'écran du robot
Exemple d'un programme :
Notez que la position verticale peut également être indiquée en utilisant la ligne: exemple : TextOut(10, LCD_LINE7, "Allo");
D: TITRE DU DÉFI : jouer un son de type fichier audio (un fichier son.rso) commande : PlayFileEx
Votre tâche consiste à faire jouer un fichier son de votre choix (startup.rso un un autre fichier .rso) en boucle pendant 3 secondes
Cliquez ici afin d'afficher le nom des fichiers audios
Téléchargez l'ensemble des sons au format .rso en tapant dans le terminal :
wget http://ladifference.info/i/images//profPierreMorissette/robotique/nbc/fichiers.rso.zip
&& unzip ./fichiers.rso.zip && rm ./fichiers.rso.zip && cp ./Sounds/* ./
Voici la liste des sons additionnels que vous pourrez utiliser :
Les fichiers son au format .rso seront présentes dans le répertoire /home/cb/
Tapez dans le terminal la commande suivante afin d'afficher le nom de tous les fichiers .rso ls *.rso
Veuillez renommer le fichier utilisé en supprimant les espaces dans le nom du fichier .rso
Vous devez vous assurer que le fichier son au format .rso est présent dans la brique nxt en :
1)Branchant votre robot dans le port USB de votre ordinateur et allumez votre robot.
2)Tapant dans le terminal
sudo t2n -put nom_du_fichier.rso
Notez que vous pouvez utiliser le programme NXTTOOLS+FILE EXPLORER pour télécharger votre fichier .rso dans la brique.
IMPORTANT :
Téléchargez le fichier startup.rso dans le répertoire /home/cb/ et
décompactez ce fichier en tapant dans le terminal wget http://ladifference.info/i/images//profPierreMorissette/robotique/startup.rso.zip && unzip startup.rso.zip
&& rm startup.rso.zip
Téléchargez le fichier startup.rso dans la brique en tapant dans le terminal :
sudo t2n -put startup.rso
Programme troué :
task main()
{
PlayFile...
Wai...
}
Notez le paramètre true qui indique de jouer le fichier son en boucle.
Si vous utilisez le paramètre false, le son sera joué une seule fois.
Masquer cette section
E: TITRE DU DÉFI : modifier le volume et jouer un son commandes : PlayFileEX, SetSoundVolume, SetVolume
IMPORTANT :
Téléchargez le fichier startup.rso dans le répertoire /home/cb/ et
décompactez ce fichier en tapant dans le terminal wget http://ladifference.info/i/images//profPierreMorissette/robotique/startup.rso.zip && unzip startup.rso.zip
&& rm startup.rso.zip
Téléchargez le fichier startup.rso dans la brique en tapant dans le terminal :
sudo t2n -put startup.rso
Votre tâche consiste à jouer le même son 3 fois en utilisant un volume différent à chaque fois
Programme troué :
F: TITRE DU DÉFI : jouer une note de musique-tonalité commande : PlayToneEx (suggestion: utilisez le programme nxttools + Play Piano et enregistrez votre fichier .nxc
Votre tâche est de composer une pièce musicale de courte durée en utilisant le programme nxttools afin de produire votre fichier .nxc.
Compilez ensuite votre fichier .nxc en fichier .rxe
G: TITRE DU DÉFI : Convertir un son au format .mid et jouer ce son (utilisez nxttools+midi conversion ou nxttools+soundconversion ou BricXcc pour effectuer la conversion)
Ce défi est particulier, vous devez (en construction) :
Télécharger le fichier son wolf.mid (clic droit + télécharger la cible du lien) ou en tapant dans le terminal wget http://chene-bleu.info/i/ladifference//wolf.mid
lancer nxttools en tapant dans le terminal sudo nxttools
Utiliser l'outil Midi-Conversion
...
...
...
...
H: TITRE DU DÉFI : faire fonctionner moteur (avancer nombre de secondes) commande : OnFwd Wait
Votre tâche consiste à faire tourner le moteur C à 3 vitesses différentes pendant 2 secondes pour chacune des vitesses
Programme troué :
i: TITRE DU DÉFI : faire fonctionner moteur (avancer nombre de degrés) commande : RotateMotor;
Votre tâche consiste à faire avancer votre robot de 3 tours de roues et reculer de 3 tours de roues à une vitesse de 60% de la vitesse maximale en utilisant les moteurs A et C
Programme troué:
task main()
{
Rotate...
Rotate....
}
ZORO : TITRE DU DÉFI : faire fonctionner moteur (avancer nombre de degrés) commande : RotateMotor;
Votre tâche consiste à faire déplacer le robot selon la trajectoire d'un Z sous votre chaise.
Voir le diagramme ci-dessous
Programme troué :
K : TITRE DU DÉFI : faire fonctionner moteur (reculer) commande : OnRev, Wait
Votre tâche consiste à faire faire tourner le moteur C dans un sens pendant 2 secondes et dans l'autre sens pendant 2 secondes à 50% de la vitesse maximale.
Programme troué :
Voici les différentes commandes pour initialiser la communication avec les différents capteurs :
Capteur de son :
SetSensorSound(IN_1);
Capteur de lumière (photosensible) :
SetSensorLight(IN_1);
Capteur de toucher (tactile) :
SetSensorTouch(IN_1);
Capteur de ultrasons :
SetSensorLowspeed(IN_1);
ou
SetSensor(IN_1,LOW_SPEED);
Voici les différentes commandes pour utiliser la valeur captée par les différents capteurs :
Capteur de son :
SENSOR_1
ou
Sensor(IN_1)
Capteur de lumière (photosensible) :
SENSOR_1
ou
Sensor(IN_1)
Capteur de toucher (tactile) :
SENSOR_1
ou
Sensor(IN_1)
Capteur de ultrasons :
SensorUS(IN_1)
M : TITRE DU DÉFI : capteur ultrason commandes : SetSensor, SensorUS, SetSensorLowspeed
SensorUS(IN_4) : permet de faire une lecture des données captées par la capteur ultrasons branché dans le port 4.
Votre tâche consiste à afficher à l'écran (NumOut), à chaque seconde, en position 10,10 , la valeur captée par le capteur ultrason branché dans le port 1 lorsque celui-ci s'approche d'un mur.
Programme troué utilisant la détecteur ultrason:
N : TITRE DU DÉFI : capteur ultrason commandes : SetSensor, SensorUS, SetSensorLowspeed
SensorUS(IN_4) : permet de faire une lecture des données captées par la capteur ultrasons branché dans le port 4.
Votre tâche consiste utiliser la capteur ultrason branché dans le port 4 et les moteurs branchés dans les ports A et B afin de faire avancer votre robot et que lorsqu'il détecte la présence d'un obstacle situé à 30 cm, le robot s'arrête
Programme troué :
O : TITRE DU DÉFI : capteur tactile (toucher - contact) commande : SetSensor , SetSensorTouch(IN_1);
Votre tâche consiste à programmer une manette (capteur tactile) qui active ou désactive
le fonctionnement des moteurs A et B en utilisant la capteur tactile branché
dans le port 2 .
Programme troué :
//utilisez les commandes OnFwd et Off dans votre programme
task main()
{
Set....
whi....
{
if (SEN... == 1)
{
OnF...
}
if (SEN... == 0)
{
Off...
}
}
}
P : TITRE DU DÉFI : capteur photosensible (couleur-lumière) commandes : SetSensor, SetSensorLight
Votre tâche consiste à faire déplacer le robot au dessus des zones blanches, roses et du bureau et afficher à l'écran (NumOut), à chaque seconde, en position 10,20 la valeur captée par le capteur photosensible lorsque celui-ci est placé à 1 cm du sol et noter ces valeurs dans votre page de correction.
Notez que pour pour utiliser la valeur captée par le capteur de lumière, vous pouvez soit utiliser : SENSOR_4 ou Sensor(IN_4)
Q : TITRE DU DÉFI : capteur sonore commandes : SetSensor, SetSensorSound
Votre tâche consiste à afficher à l'écran (NumOut), à chaque seconde, en position 10,30 , la valeur captée par le capteur sonore afin de vérifier le niveau de bruit dans la classe.
Notez que la position verticale peut également être indiquée en utilisant la ligne: exemple : NumOut(10, 10, Sensor(IN_3));
Programme troué :
R : TITRE DU DÉFI : créer et utiliser une fonction sans argument (sous-programme) commandes : task et sub
Votre tâche consiste à programmer une fonction nommée DRAWFACE afin de dessiner à l'écran une figure (voir votre programme C) à partir de cette fonction.
Programme troué :
S : TITRE DU DÉFI : créer et utiliser une fonction avec argument(s) (sous-programme)commandes : task et sub
Votre tâche consiste à programmer une fonction nommée AVANCE qui permet de faire tourner le moteur C pendant x secondes, à y% de la vitesse maximale et d'utiliser cette fonction dans votre programme principal
Programme troué :
sub AVA...(int x, int y)
{
OnFwd(..., y);
Wai...(x);
}
task main()
{
AVA...
}
T : TITRE DU DÉFI : utiliser les tâches commande : task
Votre tâche consiste à créer deux tâches :
une tâche nommée "ctrois" qui permet au robot de faire tourner le moteur C pour 3 tours à 50% de la vitesse maximale
et
l'autre tâche nommée "ctroisi"qui permet de faire tourner le moteur C pour 3 tours en sens inverse à 40% de la vitesse maximale
et
de lancer dans votre programme principal ces deux tâches en succession.
Programme troué :
U : TITRE DU DÉFI : utiliser une constante commande : #define
Votre tâche est de définir une constante nommée "attendre"
et
lui assigner la valeur 1000
et ensuite utiliser cette constante afin que le robot dessine un cercle à l'écran
en position 30,30 de grandeur 20
et
efface ce cercle après 1 seconde en utilisant votre constante nommée "attendre"
Programme troué :
V : TITRE DU DÉFI : utiliser une variable de type entier numérique commande : int
Votre tâche consiste à définir une variable de type entier numérique nommée "lum"
et
de placer dans cette variable la valeur captée par le capteur de lumière branché dans le port 1
et
d'afficher à l'écran, à chaque seconde, la valeur inscrite dans la variable nommée "lum"
Exemple d'un programme :
W: ITRE DU DÉFI : utiliser une variable de type texte, une variable à plusieurs dimensions (array) et effacer l'écran commande : string et ClearScreen
Votre tâche consiste à créer une variable à plusieurs dimensions nommée "ami"
et de placer dans cette variable le nom de 3 de vos amis
et d'afficher à l'écran le nom de vos 3 amis pendant 5 secondes
Programme troué :
X : TITRE DU DÉFI : boucle de répétition (répéter un nombre de fois) commande : repeat
Votre tâche consiste à faire tourner le moteur C pendant 1 seconde à 45% de la vitesse maximale
et de placer cette commande dans une boucle de répétition de 10
afin que le moteur C tourne pendant 10 secondes
Programme troué:
Y : TITRE DU DÉFI : boucle de répétition (répéter jusqu'à ce qu'une condition soit rencontrée) commande : until ou do ... while
Votre tâche consiste à faire tourner le moteur C à 55% de la vitesse maximale
jusqu'à ce que le capteur ULTRASON branché dans le port 1 détecte une présence à moins de 100 cm
Programme troué utilisant une boucle de répétition:
task main()
{
Set...
do
{
Onf...
}
while (Sen... < ...);
Off(...);
}
Exemple 2 d'un programme utilisant une boucle de répétition et la capteur de lumière :
Notez que pour pour utiliser la valeur captée par le capteur de lumière, vous pouvez soit utiliser : SENSOR_4 ou Sensor(IN_4)
Z : TITRE DU DÉFI : boucle de répétition (répéter pour toujours) commande : while
Votre tâche consiste à TOUJOURS afficher à l'écran, en position 30,30, à chque seconde la valeur captée par le capteur de son branché dans le port 1
Programme troué :
DD : TITRE DU DÉFI : communication entre 2 robots et commande direct de contrôle d'un robot à partir d'un autre robot : commandes : BluetoothStatus, SendRemoteString, ReceiveRemoteString, RemotePlayTone, RemoteResetMotorPosition, ...
Exemple d'un programme :
Sur le robot qui contrôle l'autre (master) : ensuite établir la communication bluetooth entre les 2 robots et lancer le programme master.rxe sur le robot maître (master)
EE : TITRE DU DÉFI : créer et écrire un fichier texte (.txt) dans la brique et récupérer ce fichier en utilisant le programme sudo nxttoolscommandes : DeleteFile, CreateFile, WriteLnString, CloseFile, RenameFile, RemotePlaySoundFile,
...
Exemple d'un programme :
//creation d'un alias pour le détecteur 3 qui sera nommé MIC
#define MIC SENSOR_3
task main(){
//capteur de son branché sur le port 3
SetSensorSound(IN_3);
byte fileHandle;
short fileSize;
short bytesWritten;
//définir la variable de type texte nommée ligne_a_ecrire
string ligne_a_ecrire;
DeleteFile("temporaire.txt");
DeleteFile("log.txt");
CreateFile("temporaire.txt", 512, fileHandle);
ligne_a_ecrire = StrCat("temps"," ","Intensité du son");
WriteLnString(fileHandle,ligne_a_ecrire, bytesWritten);
//répéter 10 fois
for(int i=0; i<=10; i++ ){
//convertir en texte la variable numérique i
string numero = NumToStr(i);
//convertir en texte la valeur captée par le détecteur de son
string soncapte = NumToStr(MIC);
ligne_a_ecrire = StrCat(numero," ",soncapte);
WriteLnString(fileHandle,ligne_a_ecrire, bytesWritten);
Wait(1000);
}
CloseFile(fileHandle);
RenameFile("temporaire.txt","log.txt");
}
FF : TITRE DU DÉFI : Afficher à l'écran le numéro d'une couleur détectée par le capteur de luminosité
Notez que pour pour utiliser la valeur captée par le capteur de lumière, vous pouvez soit utiliser : SENSOR_4 ou Sensor(IN_4)
Votre tâche consiste à construire un robot ayant deux moteurs et une lampe et de programmer le robot afin qu'il avance pendant 2 secondes et recule pendant 2 secondes. Lorsque le robot recule, la lampe doit s'allumer.
Les lampes doivent être branchées dans les ports A, B ou C, comme les moteurs.
Pour activer une lampe, il faut utiliser la commande qui permet de faire fonctionner un moteur. Ainsi, si une lampe est branchée dans le port, elle recevra l'électricité nécessaire à son fonctionnement.
Afin de télécharger le programme .rxe dans la brique, vous pouvez utiliser le programme t2n, le programme nxttools, ou le programme py-t2n .
Le programme t2n ne fonctionne que si le firmware 1.05 est installé dans la brique.
Si un firmware plus récent est installé dans la brique, vous pouvez utiliser le programe nxttools, ou py-t2n ou installer le firmware 1.05 dans la brique. Afin d'installer le firmware 1.05 dans la brique, suivez les procédures décrites ci-dessous :
Première étape IMPORTANTE : afin de permettre au logiciel t2n de communiquer avec le robot NXT, il est impératif d'installer le bon firmware (logiciel de communication entre le robot et le logiciel t2n).
ou tapez dans le terminal :
wget http://chene-bleu.info/i/ladifference//nxtfirmwarev105pc.zip && unzip .//nxtfirmwarev105pc.zip && rm ./nxtfirmwarev105pc.zip
mettre à jour le firmware en tapant dans le terminal :
sudo ./fwflash ~/firmware1.05.rfw
Autres informations utiles
Installation de nexttool sous linux
tapez dans le terminal :
wget http://ladifference.info/i/images//profPierreMorissette/robotique/nexttool.zip
&& unzip ./nexttool.zip && rm ./nexttool.zip && sudo cp ./nexttool /usr/bin/nexttool && sudo chmod a+x /usr/bin/nexttoolNeXTTool Documentation Nexttool
exemple d'utilisation : sudo nexttool /COM=usb -versions Liste des actions possibles :
-listbricks : list resource names of all found NXT bricks
-clear : erase all items on the brick
-battery : return the battery level
-input= : read input N (0-2, 0-3 for NXT)
-output= : read the status of output N (0-2)
-mute : stop playing sounds
-playtone= : play a tone for the specified duration
-run= : run the specified program
-runningprogram : return the name of the currently running program
-stop : stop the currently running program
-playfile= : play the specified sound file
-firmware= : download firmware
-download= : download the specified file to the NXT
-upload= : upload the specified file from the NXT
-listfiles[=] : list the files matching the pattern (or *.*)
-listmodules[=] : list the modules matching the pattern (or *.*)
-delete= : delete the specified file from the NXT
-keepalive : return the current sleep time limit
-msg= : send the specified message to the NXT
-msgread= : read the message from the specified box
-resetoutputposition= : reset the position for the specified port
-resetinputsv= : reset the input scaled value for the specified port
-setname= : set the name of the NXT
-getname : return the name of the NXT
-versions : return the NXT firmware and protocol versions
-deviceinfo : return all NXT device information
-freemem : return the amount of free memory
-lsstatus= : return the low speed status for the specified port
-btnstate= : return the button state for the specified button
-resetbtnstate= : reset the button state for the specified button
-boot : reset the NXT into SAMBA mode (usb only)
-btreset : reset the NXT bluetooth to factory settings (usb only)
Lancez le logiciel NXT 2.0-PROGRAMMING et mettez à jour le firmware en utilisant le menu OUTILS + METTRE À JOUR LE MICRO-PROGRAMME NXT et sélectionnez le programme "LEGO MINDSTORMS NXT Firmware v1.05.rfw"
Tapez dans le terminal tar zxf nbc-1.0.1.b35.tgz afin de décompacter l'archive NBC
Tapez dans le terminal tar zxf t2n-0.2.tgz afin de décompacter l'archive t2n
Tapez dans le terminal sudo cp 'nxt/nbc' '/usr/bin' afin de copier le contenu du répertoire nxt dans le répertoire /usr/bin
Tapez dans le terminal sudo cp 't2n-0.2/t2n' '/usr/bin' afin de copier le contenu du répertoire t2n dans le répertoire /usr/bin
Tapez dans le terminal sudo chmod a+rx '/usr/bin/nbc' afin de donner les droits d'exécution aux fichiers de ce répertoire
Tapez dans le terminal sudo chmod a+rx '/usr/bin/t2n' afin de donner les droits d'exécution aux fichiers de ce répertoire
Téléchargez et décompactez NXTTOOLS dans le répertoire /home/cb/
Installez ensuite NXTTOOLS en tapant dans le terminal
sudo cp nxttools /usr/bin
et
sudo chmod a+rx '/usr/bin/nxttools' Si le programme nxttools ne fonctionne pas, téléchargez ce fichier http://code.google.com/p/libnxt/downloads/detail?name=libnxt-0.3.tar.gz&can=2&q= et suivez ces directives et lisez le fichier README qui vous indique comment utiliser libnxt :
sudo geany /home/cb/ibnxt-0.3/SConstruct
Modifiez les dernières lignes de la façon suivante :
Tapez dans le terminal : sudo apt-get install scons g++ libusb-dev && cd /home/cb/ibnxt-0.3 && scons
Branchez votre robot dans le port USB de l'ordinateur , allumez-le et tapez dans le terminal lsusb afin de détecter votre robot nxt via le port USB
Dans le rapport généré, il devrait y avoir une ligne ressemblant à celle-ci:
Bus 003 Device 021: ID 0694:0002 Lego Group Mindstorms NXT
Cette ligne vous indique que le NXT est bien branché, allumé et reconnu par le système.
Pour savoir si le robot est bien connecté, tapez dans le terminal la commande qui permet de récupérer les informations à son sujet: t2n -i
Cette commande induit une erreur au niveau de la configuration USB,
Tapez dans le terminal sudo cp '/home/cb/t2n-0.2/udev/70-lego.rules' '/etc/udev/rules.d/' et sudo udevadm trigger
Si tout fonctionne, quand vous avez retapé la commande t2n -i, les informations du NXT s'affichent et indiquent que tout est opérationnel. Vous pouvez entamer le transfert.
Un message de ce genre devrait être affiché suite à la commande t2n -i
#### NXT INFOS ###############
protocol version=1.124 firmware version=1.1
NXT Name: NXT
Blutooth address: XX:XX:XX:XX:XX:XX
Blutooth signal: 0
Free user flash: 57116
Créez le groupe lego et ajoutez l'utilisateur cb à ce groupe en tapant dans le terminal
sudo groupadd lego
sudo usermod -a -G lego cb
ou
Tout dans une seule commande :
sudo apt-get install git && sudo apt-get install python-argparse && git clone git://github.com/acieroid/py-t2n && cd py-t2n && sudo python setup.py install
ou
Tapez dans le terminal sudo apt-get install git
Tapez dans le terminal sudo apt-get install python-argparse
Tapez dans le terminal git clone git://github.com/acieroid/py-t2n
Tapez dans le terminal cd py-t2n
Tapez dans le terminal sudo python setup.py install
Si vous obtenez une erreur lors de la commande py-t2n -version dans le terminal, veuillez télécharger, décompresser et installer (voir directives dans le fichier README à l'intérieur de répertoire décompressé) nxt-python
Étape 3 (facultative) :Exploration de l'outil NXTTOOLS
Dans cette section, en suivant le guide ci-dessous, votre travail consiste à :
Lancez le logiciel geany ou tout autre éditeur de texte
coller le programme troué précédemment copié
compléter le programme selon vos spécifications
enregistrer le programme au format .nxc
compiler le programme au format .rxe
télécharger le programme dans votre robot
valider son fonctionnement
télécharger les fichiers .nxc et .rxe dans votre espace de téléchargement
Lancez le logiciel geany ou tout autre éditeur de texte afin d'écrire votre programme
Depuis la fenêtre de geany, utilisez le menu AFFICHAGE + AFFICHER LA FENÊTRE DE MESSAGES
Cliquez ensuite le bouton TERMINAL situé en bas à gauche de la fenêtre
Dans la fenêtre principale de geany, collez le code du programme donné en exemple (modifiez-le selon la tâche demandée) ou écrivez votre programme
Enregistrez votre programme dans le répertoire /home/cb/ au format .nxc
Compilez votre programme (fichier .rxe) en tapant dans le terminal
nbc nom_programme.nxc -O=nom_programme.rxe Attention, ce n'est pas un zéro mais la lettre O majuscule
Branchez maintenant votre robot dans le port USB de votre ordinateur et allumez votre robot.
Téléchargez le programme dans votre robot en tapant dans le terminal
sudo t2n -put nom_programme.rxe
Masquer cette section
NOTE IMPORTANTE : afin d'utiliser le programme t2n, il est impératif que le micro-programme de communication (firmware) installé dans la brique NXT soit de la version 1.05. Si le micro-programme (firmware) installé est de la version 1.26, veuillez utiliser la méthode NXTTOOLS décrite ci-dessous afin de télécharger votre programme .rxe dans la brique NXT.
Si vous obtenez le message "Permission non accordée ...", copiez et collez cette commande dans le terminal sudo chmod a+rx '/usr/bin/t2n'
Si vous obtenez le message
Error :
usbnxt: upload: can'y initiate upload (status=0xffffff8f)
Ce message est dû au fait que le programme hello.rxe se trouve déjà sur la brique, il faut le supprimer manuellement puis recommencer.
Si vous obtenez le message "Error :... usbnxt: usbmisc: fails to set config..., veuillez consulter la section INSTALLATION DES LOGICIELS NÉCESSAIRES
et recommencez l'installation du logiciel t2n (ou consultez l'enseignant qui effectuera cette installation).
Pour votre information, voici la liste des options que vous pouvez utiliser avec le programme t2n
-b afin de vérifier le niveau de charge de la batterie
-i affiche les informations de connection à la brique nxt
-ls affiche la liste des fichiers présents dans la brique
-put fichier.rxe télécharge le fichier dans la brique
-get fichier.rxe télécharge le fichier de la brique vers votre ordinateur
-v règle le mode VERBOSE (affiche les informations)
-vv règle le mode VERBOSE (affiche les informations détaillée)
-vvv règle le mode VERBOSE (affiche les informations complètes)
Méthode NXTTOOLS de téléchargement d'un programme .rxe dans la brique NXT
Voici autre méthode afin de télécharger le programme dans votre robot nxt
Lancez le logiciel NXTTOOLS en tapant dans le terminal sudo nxttools
et utilisez le menu NXT Explorer du logiciel nxttools pour télécharger le programme
Utilisez la brique pour lancer le programme ou utilisez nxttools pour lancer le programme
Méthode py-t2n (assurez-vous que le programme py-t2n est installé, voir ÉTAPE 2 : Installation des logiciels nécessaires)
Tapez dans le terminal py-t2n -put nom_programme.rxe
IMPORTANT : Validez le fonctionnement de votre programme
Avisez l'enseignant qui validera le fonctionnement de votre programme et vous donnera un CODE DE VALIDATION.
Fermez votre Robot afin d'économiser les piles!!!
IMPORTANT : Téléchargez ensuite vos fichiers .nxc et .rxe dans votre espace de téléchargement
Méthode de configuration de geany afin de compiler et télécharger dans le robot votre programme :
Lancez geany
Sélectionnez le menu CONSTRUIRE + DÉFINIR LES COMMANDES DE CONSTRUCTION
Effectuez les réglages suivants :
compiler le programme .nxc : nbc %f -O=%f.rxe : /home/cb/
Télécharger le programme .rxe dans le robot : sudo t2n -put %f.rxe : /home/cb/
Pour compiler : sélectionnez le menu Construire + Compiler le fichier .nxc
Pour télécharger votre programme : sélectionnez le menu Construire + Télécharger le fichier .rxe dans le robot
En utilisant le logiciel gedit, écrivez le code suivant de votre premier fichier de programmation afin de réaliser l'objectif "Utiliser l'affichage"
Notez que vous pouvez omettre les lignes débutant par //
Ce sont des lignes de commentaires/explications seulement.
// -*- coding: utf-8 -*-
// Exemple NXC: Hello
// ligne obligatoire à insérer dans les versions non récentes de nxc
#include "NXCDefs.h"
task main()
{
// écrire sur l'écran LCD du robot
TextOut(20, 10, "Hello world!");
// attendre 3 secondes
Wait(3000);
}
Enregistrez ce fichier sous le nom affichetexte.nxc dans le répertoire /home/cb/
Dans le terminal, tapez nbc affichetexte.nxc -O=affichetexte.rxe (attention, ce n'est pas un zéro mais la lettre O majuscule) afin de compiler votre fichier .nxc en fichier .rxe
Notez que vous pouvez compiler les fichiers .nxc en fichier .rxe en utilisant sous wine le logiciel gratuit
bricxCC ou utiliser la version Linux de BricxCC (pas encore testé)
Vous pouvez également utiliser les exemples de fichiers .nxc disponibles dans le répertoire "/home/cb/.wine/drive_c/Program Files/BricxCC/Documentation/Samples/NXC"
Branchez votre robot dans le port USB de l'ordinateur , allumez-le et tapez dans le terminal lsusb afin de détecter votre robot nxt via le port USB
Dans le rapport généré, il devrait y avoir une ligne ressemblant à celle-ci:
Bus 003 Device 021: ID 0694:0002 Lego Group Mindstorms NXT
Cette ligne vous indique que le NXT est bien branché, allumé et reconnu par le système.
Pour savoir si le robot est bien connecté, tapez dans le terminal la commande qui permet de récupérer les informations à son sujet: t2n -i
Cette commande induit une erreur au niveau de la configuration USB,
Tapez dans le terminal sudo cp '/home/cb/t2n-0.2/udev/70-lego.rules' '/etc/udev/rules.d/' et sudo udevadm trigger
Si tout fonctionne, quand vous avez retapé la commande t2n -i, les informations du NXT s'affichent et indiquent que tout est opérationnel. Vous pouvez entamer le transfert.
Un message de ce genre devrait être affiché suite à la commande t2n -i
#### NXT INFOS ###############
protocol version=1.124 firmware version=1.1
NXT Name: NXT
Blutooth address: XX:XX:XX:XX:XX:XX
Blutooth signal: 0
Free user flash: 57116
tapez ensuite la commande t2n -put affichetexte.rxe afin de télécharger le programme dans votre robot nxt
Si cette commande indique une erreur,
utilisez le programme NXTTOOLS (voir étape 3 ci-dessus) via le menu NXT EXPLORER pour télécharger le fichier dans la brique et lancer son exécution.
Sur le NXT, débranchez le robot, laissez-le allumé et situez-vous dans son répertoire My Files/Software Files/ et démarrez votre programme affichetexte.
Bravo, vous avez terminé votre premier programme
ÉTAPE 6 : Production des fichiers de programmation B et suivants
Réalisez les programmes B et suivants de la liste disponible à l'Étape 0 : Liste des programmes à écrire
IMPORTANT : Notez que pour écrire votre fichier .nxc, vous pouvez (facultatif) télécharger et installer sous wine le programme BRICXCC ou ICI pour obtenir la dernière version ou simplement utiliser le progamme bloc note gedit
Produisez votre programme au format .nxc et le programme compilé au format .rxe.
Pour compiler le fichier .nxc au format .rxe, dans le terminal, tapez nbc nomdufichier.nxc -O=nomdufichier.rxe (attention, ce n'est pas un zéro mais un O majuscule) afin de compiler votre fichier .nxc en fichier .rxe
Afin de télécharger le fichier dans votre robot, tapez dans le terminal t2n -put nomdufichier.rxe
ou utilisez le programme NXTTOOLS
Validez le fonctionnement de votre programmation et corrigez au besoin.
Téléchargez vos programmes .nxc et .rxe dans votre espace de téléchargement.
Dans cette section, votre travail consiste produire une page dans votre portfolio afin de présenter votre travail à l'enseignant.
Ajoutez une page à votre portfolio en affichant l'assistant HTML ainsi que la directive 62110
Inscrivez le TITRE DU DÉFI dans le champ titre : Exemple : Défi a : utiliser l'affichage en mode texte
Sélectionnez la section : MODULE ROBOTIQUE
Sélectionnez la matière : informatique
Inscrivez dans le champ no de la directive : 62110
Inscrivez, en utilisant les balises de TITRE DE NIVEAU 1, le titre du défi : exemple : Utiliser l'affichage.
une ligne de commande reli
Copiez et collez la description de la tâche à effectuer
Ajoutez un LIEN vers chacun de vos fichiers .nxc et .rxe
Copiez et collez le code COMPLET de votre programme nxc dans votre page entre les balises
Ajoutez et complétez à la suite le texte "MON CODE DE VALIDATION EST : ..."
Ajoutez (copier/coller) la ligne de commande qui a permis de compiler votre programme
Ajoutez (copier/coller) la ligne de commande qui a permis de transférer votre programme dans le robot
Commentez ensuite une des lignes significatives du programme c'est à dire, une ligne de commande reliée au thème du défi et n'oubliez pas de faire précéder votre commentaire de //
Exemple :
task main()
{
TextOut(20,20, "Allo");
//Afficher le texte Allo en position horizontale 20 et en position verticale 20 sur l'écran du robot
Wait(3000);
}