Forum des NXTiens

RssNXC » Activité robot nxc Je recherche un code optimisé pour pouvoir faire fonctionner mon robot LEGO
   Le 13/11/19 à 10h54 Citer      

Booster Fronde

Groupe: Membre

Sexe:
Inscrit le: 13/11/19
Messages: 1
Au cours de cette activité, vous allez mettre en œuvre le LineLeader, un capteur dédié au suivi de ligne. Ce dispositif spécifique comprend une rangée de 8 diodes et 8 capteurs. Il retourne 8 valeurs entières dans l’intervalle [0, 100] qui correspondent aux intensités lumineuses mesurées par les 8 capteurs, sachant que 0 correspond au noir, et que 100 au blanc. Si un capteur est à cheval sur une zone noire et une zone blanche, il retournera une valeur intermédiaire entre 0 et 100.

Exercice préliminaire :

Vous allez commencer par écrire un programme qui reproduit ce que fait la fonction LineViewRaw, c'est-à-dire afficher en boucle un histogramme à partir des valeurs lues sur le capteur. Pour récupérer les valeurs, on passe un tableau de 8 entiers à la fonction GetSensorArray comme ci-dessous :

void main() {
DefineSensors(ARRAY, NONE, NONE, NONE);
int capteur[8];
...
GetSensorArray(IN_1, capteur); // Affecte les 8 entiers du tableau
...
}

La fonction int GetSensorArray(int port, int array[8]) est une fonction qui présente un effet de bord particulier : celui de modifier un de ses paramètres, ce que ne faisaient aucune des fonctions que vous avez utilisées jusqu'ici !

Pour l'affichage, vous vous inspirerez de la solution au problème de l'histogramme, vu en cours.

Le robot Knossos 1 :

Le robot Knossos devra parcourir un labyrinthe matérialisé par des lignes noires et des balises de couleur sur un support blanc. Les balises rouges indiquent les intersections et les voies sans issue, et les balises vertes indiquent l’entrée et la sortie du labyrinthe. Lorsque le robot a trouvé la sortie du labyrinthe, il doit faire demi-tour et revenir à l’entrée.

Grace à une utilisation astucieuse du capteur de ligne, il est possible d’estimer finement la position de la ligne par rapport au capteur. Plusieurs méthodes sont possibles. L'une d'entre elles consiste à calculer la moyenne des positions (de 0 à 7) pondérées par les valeurs (de 0 à 100). Mais attention : on utilisera l'inverse des valeurs dans l'intervalle [0, 100] car la pondération maximum (100) doit correspondre au noir, et non au blanc.

Le robot Knossos 2 :

Considérez le labyrinthe comme un "arbre" dont la racine est le point de départ du parcours. Vous allez écrire un second programme de façon à ce que votre robot emprunte le plus court chemin pour revenir à la racine (optimisation du trajet retour). Il faudra donc mémoriser des informations au cours du trajet aller. Une solution est de mémoriser, pour chaque embranchement, la direction que le robot a prise (de 1 à 3 à partir de la gauche), ce qui correspond au nombre de tentatives que le robot a effectué sur cette intersection.

Vous implémenterez à l'aide d'un tableau une "pile de compteurs" qui contiendra autant de compteurs que d’intersections présentes entre le robot et la racine. Lorsque le robot rencontre une intersection, il faut savoir s’il est en train de "descendre" ou de "remonter" vers la racine. Dans le premier cas, il faudra empiler un nouveau compteur. Dans le deuxième cas, il faudra incrémenter le dernier compteur, voire le dépiler si toutes les possibilités ont été explorées en vain (compteur > 3).

pm    
RssNXC » Activité robot nxc Je recherche un code optimisé pour pouvoir faire fonctionner mon robot LEGO  
1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne: Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie