logo admiroutes Les automates intelligents
robotique, vie artificielle, réalité virtuelle


information, réflexion, discussion
logo automate © Anne Bedel
Jean-Paul Baquiast Jean-Paul.Baquiast@wanadoo.fr
Christophe Jacquemin christophe.jacquemin@admiroutes.asso.fr

33
Retour au sommaire
Programmer en legOS
(n°7)
La rubrique des passionnés Lego Mindstorms
Brique RCX
par Nanobapt nanobapt@nordnet.fr
http://home.nordnet.fr/%7Emdenayer/
(avec les conseils de Christophe Jacquemin)
13/07/02

NDLR : il est conseillé au lecteur un minimum de base en programmation et langage C. Sinon, il existe de bons bouquins en la matière ou des sites web traitant de la question - par exemple http://www.inf.enst.fr/~charon/CFacile/.

Le legOS network protocol (LNP)

Dans le cadre de l'utilisation de la communication Infra Rouge (IR), sachez que legOS a développé son propre protocole - le legOS network protocol (LNP) - concurrent de celui de lego (voir http://nanobapt.free.fr pour en savoir plus sur ce dernier).
Après la description des différents aspects de cette communication et la présentation de son utilité, cet article se concentrera sur la méthode d'envoi des packets, c'est-à-dire les mots du RCX.

Communication
Cette fonction du RCX est sans doute la plus puissante et, à notre avis, la plus intéressante car elle permet d'augmenter encore un peu plus les capacités de notre robot. Bien sûr, avec le legOS network protocol on peut faire communiquer deux briques RCX entre elles (d'où une collaboration possible), mais pas seulement ! LNP permet aussi la communication intégrée d'un PC avec ces RCX. De là, pourquoi ne pas donner un rôle à part entière dans la communication avec les robots. L'interaction en est alors bien plus poussée.
A partir de là, il est facile d'imaginer quelques applications de cette méthode :
- vos robots peuvent désormais comprendre 6 moteurs et 6 capteurs ;
- l'intervention de l'ordinateur peut se concrétiser par l'affichage de messages plus longs (et donc permettre un debuggage plus facile) ;
- il permet aussi de contrôler votre robot a distance (interaction de l'utilisateur).

Il existe 2 types de message généré par legOS : les messages adressés (addressing message) et les messages dédiés à ceux qui le veulent bien (integrity message).
Chaque RCX (et aussi le PC) comporte un numéro d'identité, une sorte d'IP pour robot. Cette identité peut être configurée à partir du fichier config.h que l'on peut trouver (à partir du répertoire racine de legOS) dans le répertoire boot, à la ligne #define CONF_LNP_HOSTADDR 0x00 //!< LNP host address. Le fait de modifier cette adresse changera tous les programmes qui s'adressent "personnellement" au RCX (comme le programme dll). Mais attention : il est difficile de bien maîtriser ce mode de message. L'une des raisons tient au fait que le programme dll fait appel à l'adresse du RCX : dès lors, changer l'adresse retire la possibilité de communiquer avec le RCX par le biais de ce programme.

Deux mots d'explication :
0xf1 averti de l'envoi d'un message adressé.
length correspond pour à la taille du message.
0xf0 averti l'envoi de message non dédié.
dest_addr correspond à l'addresse de destination du message.
LNP_HOSTADDR | scr_port correspond à l'envoi des données sur l'expéditeur : le port et l'adresse d'envoi.
message est le message suggéré par l'utilisateur dans son programme.
checksum correspond à la somme de tous les octets envoyés modulo 0xff.

La description du protocole étant faite, elle devrait maintenant inciter tous les roboticiens en herbe intéressés à concevoir un logiciel sous windows ou linux permettant la gestion de LNP par le PC. Bien que des solutions existent pour chacun des systèmes, la programmation de LNP sous windows ne sera pas abordée (logiciel libre oblige).

Suite au prochain numéro où nous aborderons l'envoi et la réception des integrity message entre deux RCX.


Tous les cours "Programmer en legOS"
Retour au sommaire général