Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Lego Mindstorms > NXT avec URBI > Configurer un robot NXT pour Urbi

Configurer un robot NXT pour Urbi

dimanche 4 juillet 2010, par Julien H.

Le fonctionnement d’Urbi au démarrage est simple :

 démarrer l’engine Urbi
 assurer la connexion avec la brique Mindstorms NXT
 charger les fichiers de configuration

Le fichier principal est "global.u" qui se trouve dans le répertoire data. Faites une copie de ce répertoire avant de commencer vos propres modifications.

Voici la partie minimale d’un bon fichier global.u :

// Here we load NXT driver.
load("nxt.u");

// To load the  model of the robot
load("SimpleBot.u");

// To load our own scripts
load("pobot.u");

echo("Loading successfull.");

Il y a trois étapes :
 le driver obligatoire
 le modèle du robot
 les programmes persos

On peut charger plusieurs fichiers différents. Ainsi vous pouvez séparer vos projets en deux fichiers : les fonctions génériques et le programme spécifique que vous voulez charger.

Définir un modèle

Le modèle est tout simplement une déclaration du contenu de votre robot : on définit les noms de variables pour chacun des éléments qui compose le robot Lego NXT qu’on va utiliser.

Ce modèle est important : on ne peut pas faire un modèle générique (ex : réutiliser le Tribot fourni avec Urbi) et ne connecter à la brique que les moteurs et les capteurs qui vous intéressent, car cela provoque des erreurs (le serveur n’obtenant pas les valeurs attendues).

Mais c’est très simple : il suffit de suivre les exemples. Le principe est le suivant : déclarer chacun des éléments selon son type, puis les regrouper en différentes structures qui peuvent en inclure d’autres afin d’avoir des accès directs à tout ou partie du robot.

SimpleBot

Voici le contenu du fichier "SimpleBot.u" que j’ai créé pour préparer les ateliers du vendredi soir : un seul moteur et un seul capteur, mais autant de variables. Cette idée de groupes n’est pas originale, c’est celle qui est fournie avec Urbi.

// le moteur connecté sur la sortie A
// il s'agit d'un servomoteur tel que Urbi pour NXT le propose.
var Global.motA = Servo.new("A");

// tous les moteurs : garder ce groupe permet d'écrire des scripts réutilisables,
// par exemple un "motors.speed = 0;" pour tous les arrêter en même temps.
var Global.motors = Group.new(motA);

// les deux composants internes à la brique : pas besoin de connexion
var Global.beeper  = Beeper.new();
var Global.battery = Battery.new();

// le capteur de son, paramétré en mode DBA et connecté sur l'entrée 2
var Global.decibel = SoundSensor.new(2,"DBA");

// comme pour les moteurs, un groupe pour tous les capteurs,
// par exemple pour des fonctions génériques qui feraient "sensors.val;" pour tout afficher
var Global.sensors = Group.new(decibel);

// et finalement, un groupe global pour tout le robot.
// notez qu'un groupe peut contenir d'autres groupes
var Global.hardware = Group.new(beeper, battery, sensors, motors);

Note : tous ces exemples suivent la licence GPL version 2 telle qu’indiquée dans les fichiers Urbi NXT.

A chaque modification, vous devez relancer le serveur.
Vérifiez bien qu’il n’y a pas de délai trop important ou de message d’erreur entre la connexion au NXT et le message de bon chargement : cela indiquerait un possible problème qui vous causera plus tard des soucis (ralentissements, valeurs erronées) donc corrigez-le dès que détecté.

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.