Je présente sur cette page un robot Lego Mindstorms NXT transporteur d’ordinateur portable.
L’ordinateur portable mobile peut interagir avec le robot mobile par Bluetooth et peut communiquer par Wi-Fi avec un ordinateur distant, pour transmettre la vidéo de la caméra embarquée et être piloté à distance.
La plateforme robotique Lego Mindstorms NXT est plus qu’un simple jouet.
Elle permet de faire des robots au comportement évolué, avec plusieurs moteurs et capteurs divers.
Néanmoins, la puissance de calcul, la mémoire, et les capacités de communication embarquées sont bien en deçà de ce qui est permis par un PDA ou un ordinateur portable. D’où l’idée de montrer qu’un robot Lego Mindstorms NXT peut transporter si besoin un ordinateur portable, offrant alors une nouvelle gamme de possibilités. Il est en effet assez courant de posséder un (vieil) ordinateur portable, et celui-ci peut être utilisé, au moins pour le prototypage, au lieu d'acheter des composants supplémentaires plus appropriés.
Un des nombreux intérêts immédiats est la possibilité de communiquer à longue distance avec Wi-Fi ou même par téléphonie mobile (ex : GPRS, UMTS [3G] ou plus pour la vidéoconférence), entre autres pour être piloté à distance et envoyer un signal vidéo et les informations des capteurs.
L’idée de ce prototype est d’être autant abordable que possible pour les propriétaires d’un kit Lego Mindstorms NXT. Un seul kit Lego Technic supplémentaire pourra être utilisé. L’ordinateur portable embarqué pourra être un vieux et lourd modèle jusqu’à 3.5 Kg. Le robot mobile chargé de l’ordinateur portable doit pouvoir se déplacer en marche avant et marche arrière, et tourner à droite et à gauche.
2007-10-06
Contrôle depuis l’ordinateur de bureau :
Contrôle à plus de 40 mètres de distance depuis l’ordinateur de bureau à l’intérieur de l’appartement :
Le robot sans l’ordinateur pèse 1.7 Kg. Il est capable d’emporter une charge utile de 5 Kg.
La brique NXT, qui est le cerveau du robot, implémente un programme (écrit en NXT-G) capable de recevoir des ordres de haut niveau par Bluetooth (ex : avancer, tourner à droite) et qui transforme ces ordres en instruction de plus bas niveau (ex : faire tourner le moteur A de 75°).
Cliquez sur l’image pour voir le programme complet. (Les zones de programme qui ne sont pas montrées ne contiennent aucune instruction).
L’ordinateur portable mobile exécute un programme (écrit en C#.NET) capable de recevoir des ordres depuis Internet (ex : par Wi-Fi)
et de les relayer vers la brique NXT du robot.
La communication entre le robot et l’ordinateur portable mobile se fait par Bluetooth :
l’ordinateur portable envoie des ordres à la brique NXT qui les exécute.
En plus ce cela, l’ordinateur portable fait une vidéoconférence sous Microsoft Windows Live Messenger avec l’ordinateur de bureau.
Le code ci-dessous présente la seule partie du code C# nécessitant des connaissances sur le NXT. Cette fonction permet d’envoyer un code numérique entier dans une des 10 boîtes-aux-lettres Bluetooth du NXT. Inspiré de “Bluetooth Developer Kit, Appendix 2-LEGO MINDSTORMS NXT Direct commands” et d’un exemple de Pierre Poliakoff.
MobileLaptopRemote2.cs private SerialPort serialPortNXT = new SerialPort("COM" + numericUpDownBluetoothPort.Value); private void sendBluetoothMessage(byte mailbox, int message) { byte[] mess = System.BitConverter.GetBytes(message); if (!System.BitConverter.IsLittleEndian) Array.Reverse(mess); byte[] nxtMessage = { //Header: following command length (least significant byte first) 0x09, 0x00, //(byte)(length & 0xFF), (byte)((length & 0xFF00) >> 8) //Command 0x80, //Command type: {0x00: Direct command, reply required; //0x01: System command, reply required; //0x02: Reply command; //0x80: Direct command, reply not required; //0x81: System command, reply not required} 0x09, //Command byte: message write --mailbox, //0-based mailbox number (0..9) 0x05, //datalength including terminator byte mess[0], mess[1], mess[2], mess[3], //data (here an Int32, Little Endian) 0x00 //terminator byte }; serialPortNXT.Write(nxtMessage, 0, nxtMessage.Length); }
L’ordinateur de bureau exécute un programme (écrit en C#.NET) capable d’envoyer des ordres par Internet vers l’ordinateur portable embarqué sur le robot. (Il s’agit du même programme que sur l’ordinateur portable, avec des réglages différents.) Le son du microphone embarqué et une vue en temps réel de la cybercaméra embarquée sur le robot sont disponibles, grâce à une simple vidéoconférence avec Windows Messenger.
L’assemblage entre les grosses roues motrices (arrière) et les moteurs a été une partie difficile,
car il y a beaucoup de poids et de force, et que le nombre de trous des moteurs est différent du nombre de trous des roues ;
il fallait donc relier les 4 trous du moteur et les 3 trous des roues.
Voici le détail du montage choisi :