Valeur de cette activité : 10 points
Compétence :
Compétence :
Compétence :
Robot NXT Linux 07 - Défi - Mesurer la vitesse de mon robot

A-Module 12 : ROBOTIQUE - Linux : 10 points - difficulté : 3

Robot NXT sous Linux 07 - Défi - Mesurer la vitesse de mon robot



Pour cette activité, vous aurez à consulter les pages d'aide suivantes :
  1. Activité Robot-Nxt-Linux : Étape 0
  2. Résumé des principales commandes
  3. Les principales commandes


Cette activité vous permettra de vous inititier à l'utilisation de notions plus avancées du langage NQC:

- l'utilisation des différents types de variables
- l'utilisation des opérateurs de calcul
- la programmation d'un chronomètre.

Notions complémentaires


Notes sur l'utilisation des variables :

- les variables de type "int" (integer) qui permettent de contenir des nombres entiers
- les variables de type "string" qui permettent de contenir du texte
- les variables de type "bool" (booléenne) qui contiennent une valeur true (Vrai) ou false (Faux).

- en utilisant le langage nxc, il est donc impossible d'assigner une valeur décimale à une variable
- les variables doivent être déclarées d'abord en y indiquant le type
- on assigne ensuite une valeur à la variable

Exemple d'une variable de type string (texte)

string nomdelavariabledetypestring ;
nomdelavariabledetypestring ="contenu de la variable de type string";




Exemple d'une variable de type int (entier numérique)

int nomdelavariabledetypeinteger ;
nomdelavariabledetypeinteger=10;




Exemple d'une variable de type bool (booléenne)

bool nomdelavariabledetypebool ;
nomdelavariabledetypebool=true;



Notes sur Les opérateurs de calcul


Les opérateurs de calcul sont :

si x vaut 5,

 Signe

Nom

Signification

Exemple

Résultat

+

plus

addition

x + 3

8

-

moins

soustraction

x - 3

2

*

multiplié par

multiplication

x * 2

10

/

divisé par

division

x / 2

2.5 (donnera 2)

%

modulo

reste de la division par

x % 5

0

=

affectation

a la valeur

x = 5

5


Notes sur la programmation d'un chronomètre :

Afin de programmer un chronomètre, il faut utiliser la commande CurrentTick();

CurrentTick() retourne la valeur du compteur intégré à la brique du nombre de millisecondes depuis le début du lancement du programme

Ainsi, en placant dans une variable la valeur initiale CurrentTick();
et
en placant dans une autre variable la valeur finale CurrentTick();(fin des actions du programme) , vous pouvez calculer le nombre de millisecondes écoulées depuis le début du programme à un temps donné.

Exemple de programmation d'un chronomètre ;
task main()
{

//initialisation du chronomètre int depart; //création de la variable nommée "depart" qui contiendra la valeur initiale de CurrentTick();
int fin; //création de la variable nommée "fin" qui contiendra la valeur finale de CurrentTick();
int duree;
//création de la variable duree qui contiendra la valeur calculée de fin-depart

depart=CurrentTick(); //assigner la valeur CurrentTick(); initiale à la variable nommée "depart"
Wait(1000); //ou insérez ici vos actions
fin=CurrentTick(); //assigner la valeur CurrentTick(); finale à la variable nommée "fin"
duree=fin-depart; //assigner la valeur calculée de fin-depart à la variable duree (en millisecondes)


//section d'affichage des données recueillies à des fins de validation du code TextOut(20, 30,"Temps initial"); NumOut(20, 10,depart); Wait(3000); ClearScreen(); TextOut(20, 30,"temps final"); NumOut(20, 10,fin); Wait(3000); ClearScreen(); TextOut(20, 30,"Durée"); NumOut(20, 10,duree); Wait(3000); ClearScreen(); }
Notes sur le concept de vitesse : La vitesse est la définie comme étant la distance parcourue en fonction du temps.

v = d / t

Vous devrez donc calculer la distance parcourue par votre véhicule pour 5 tours de roue.
et
le temps requis pour parcourir cette distance (en utilisant le code du chronomètre).

La distance parcourue pour 1 tour de roue = circonférence de la roue.
La circonférence de la roue = 2 x pi x rayon de la roue.

La distance parcourue pour 5 tours de roue = 5 x 2 x pi x rayon
donc environ : 31 x rayon

Description

Ce défi consite à effectuer toutes les étapes ci-dessous dans l'ordre indiqué:

Note : Votre enseignant a réalisé le programme demandé (toutes les étapes mentionnées ci-dessous) et le programme nxc contient 31 lignes de code.

  1. Construisez un robot qui se déplace sur des roues.


  2. Écrivez le code qui défini làle programme principal:
    task main()
    {
    
    
    }


  3. Créez au début du programme la variable nbtour : int nbtour;
  4. Assignez la valeur 5 à la variable nbtour : nbtour=5;
  5. Programmez ce robot afin qu'il se déplace en ligne droite à 100 % de la puissance maximale du moteur pendant 5 tours de moteur.
    RotateMotor(OUT_AB,100,nbtour*360);


  6. Ajoutez au début du programme la variable de type "int" nommée depart:
    int depart;



  7. Avant la commande "RotateMotor(OUT_AB,100,nbtour*360);" assignez la valeur de départ du chronomètre à cette variable
    depart=CurrentTick();



  8. Ajoutez au début du programme la variable de type "int" nommée fin:
    int fin;



  9. Après la commande "RotateMotor(OUT_AB,100,nbtour*360);" assignez la valeur de fin du chronomètre à cette variable
    fin=CurrentTick();

  10. Au début du programme, créez une variable de type "int" nommée "duree" ;
    int duree;



  11. Après la commande "fin=CurrentTick();" assignez la valeur calculée du chronomètre à cette variable
    duree=fin-depart;

  12. Cette durée est mesurée en millisecondes, il faut donc convertir cette durée en secondes en divisant la variable duree par 1000
    Ajoutez donc après la ligne "duree=fin-depart;":

    duree=duree/1000;

  13. Sachant que diamètre d'une roue standart est de 6 cm .


  14. Créez , au début du programme, une variable de type "int" nommée "diametre"
    int diametre;




  15. Après cette commande, assignez la valeur 6 à cette variable
    diametre=6;

  16. Avec ce diamètre, vous pouvez ainsi calculer la circonférence de la roue (distance parcourue pour un tour de roue) : formule : Circonférence = pi x diamètre


  17. Créez au début du programme, une variable de type "int" nommée "circonference"
    int circonference;

  18. Assignez après la ligne "diametre=6;" la valeur calculée de la circonférence à cette variable :
    circonference=3*diametre;
    (IMPORTANT: nous allons utiliser la valeur 3 pour le chiffre pi car les variables NQC ne peuvent pas contenir des nombres décimaux).


  19. Créez au début du programme une variable de type "int" nommée "distancetotale" :
    int distancetotale;

  20. Après la ligne "nbtour=5;", calculez et assignez la valeur de la distance totale parcourue (circonférence x nombre de tour) dans la variable "distancetotale" :
    distancetotale=nbtour*circonference;
  21. Créez au début du programme une variable de type "int" nommée "vitessecmsec"
    int vitessecmsec;

  22. Après la commande "duree=duree/1000;", placez la valeur calculée de la vitesse en cm/s dans la variable nommée "vitessecmsec". Notez que la vitesse est calculée en utilisant la formule suivante : vitesse=distance parcourue / temps.
    Utilisez donc vos variables "distancetotale" et "duree" ,
    vitessecmsec=distancetotale/duree;



  23. Ensuite, affichez le mot "Distance : " en position 5,60 sur l'écran de votre robot:
    TextOut(5,60,"Distance");


  24. Affichez ensuite la valeur de la variable "distancetotale" en position 60,60 sur l'écran de votre robot
    NumOut(60,60,distancetotale);


  25. Affichez ensuite le mot "cm : " en position 80,60 sur l'écran de votre robot
    TextOut(80,60,"cm");


  26. Affichez ensuite le mot "Temps : " en position 5,50 sur l'écran de votre robot
    TextOut(5,50,"Temps");


  27. Affichez la valeur de la variable "duree" en position 60,50 sur l'écran de votre robot secondes
    NumOut(60,50,duree);


  28. Affichez ensuite le mot "sec. : " en position 80,50 sur l'écran de votre robot
    TextOut(80,50,"sec");


  29. Affichez le mot "Vitesse : " en position 5,40 sur l'écran de votre robot
    TextOut(5,40,"vitesse");


  30. Affichez la valeur de la variable "vitessecmsec" en position 20,30 sur l'écran de votre robot secondes
    NumOut(20,30,vitessecmsec);


  31. Affichez ensuite les mots "cm/sec : " en position 50,30 sur l'écran de votre robot
    TextOut(50,30,"cm/sec");


  32. Attendez 20 secondes
    Wait(20000);


  33. Effacez l'écran
    ClearScreen();




  1. Construisez votre robot qui se déplace sur des roues.



    1. Enregistrez votre programme au format .nxc sous le nom vitesse.nxc
    2. Compilez votre programme au format .rxe
      nbc vitesse.nxc -O=vitesse.rxe
    3. Téléchargez votre programme dans le robot:
      sudo t2n -put vitesse.rxe
  2. Effectuez quelques tests et modifiez votre programmation au besoin.


  3. Lorsque votre programme fonctionne bien, faites une démonstration à l'enseignant qui vous donnera votre code de validation de votre travail.
  4. Notez les valeurs qui s'affichent à l'écran du robot : distancetotale, duree et vitessecmsec


  5. Téléchargez vos documents (.nxe et .rxe) dans votre espace de téléchargement.

  6. Ajoutez une page à votre portfolio en affichant l'assistant HTML ainsi que la directive 79901
  7. Inscrivez dans le champ titre : Défi - Mesurer la vitesse de mon robot
  8. Sélectionnez la section : MODULE ROBOTIQUE
  9. Sélectionnez la matière : informatique
  10. Inscrivez dans le champ no de la directive : 79901
  11. Inscrivez dans votre page le titre de niveau 1 : Défi - Mesurer la vitesse de mon robot

  12. Ajoute ensuite le nom de tes coéquipiers(ères)

  13. Ajoutez un LIEN vers chacun de vos fichiers .nxc et .rxe

  14. Copiez et collez le code de votre programme nxc dans votre page entre les balises <pre> </pre>



  15. Ajoutez ensuite au bas de votre page le texte suivant
    "Mon code de validation est : " suivi de votre code de validation de votre travail.

  16. Copiez, collez et complétez le texte suivant dans votre page entre les balises <pre> </pre>.

    La distance parcourue par mon robot a été de ____ cm.

    Mon robot s'est déplacé pendant ____ secondes.

    Donc sa vitesse a été de _____ cm/seconde.

  17. Visualisez votre page et apportez des modifications au besoin.