ACCUEIL
UTILISER UN PC POUR CONTROLER le ROBOT
MAIS AVEC QUELS PROGRAMMES ?
(Exemples de programmes)
Nous n'entrerons pas dans le détail de programmes ,toujours arides quand on ne les a pas écrits soi même , nous nous contenterons ici de quelques renseignements pratiques.
Néanmoins le lien ci dessus permet de voir quelques exemples de programmes utiles .
Au début on peut se contenter d'un simple programme chargé dans le microcontroleur du robot , mais il ne pourra exécuter que des opérations simples et en nombre limité.
En schématisant , il faudra donc finalement:
- un programme du coté du robot
- un programme du coté du PC (qui contrôle le robot)
- ces deux programmes communiquent par une liaison série (RS232)
Programme Coté robot:
Le programme est celui du microcontroleur installé sur le robot , il y a des microcontroleurs programmables en langage C et d'autres en un dérivé du Basic.
Au début , on peut d'utiliser un microcontroleur Basic Stamp (BS2 de Parallax ) pour sa facilité d'emploi et son grand nombre d'utilisateurs.Le BS2 a des fonctions assez complètes de gestion de la liaison série , en particulier on peut demander (WaitSTR) que les données reçues sur le port série ne soient lues que si elles sont précédées d'une suite de caractères qui constituent un code d'identification. L'éditeur permet de taper facilement les programmes puis de les envoyer au BS2 par le câble série.
Pour plus de souplesse et de puissance on adoptera plutot un Propeller (microcontrolleur de Parallax qui gére des taches en paralléle) et reste assez facile a programmer , en langage Spin (pas de panique ,il y a des tas de programmes donnés en exemple sur le site Parallax.com).
Programme Coté ordinateur:
Le C# (prononcer C sharp) de Microsoft est un langage assez adapté et la version Express est gratuite. Il est facile a mettre en oeuvre si on utilise Visual Studio. En principe , il est destiné a une programmation de type objet mais ceux qui ont utilisé le Basic ou le C préfèrent rester dans une programmation plus classique (en C ou en VisualBasic).
Par contre , l'utilisation en robotique a quelques particularités:
Les commandes sont échangées sur le port série .
Ces commandes sont assez peu détaillées dans la documentation de base du C# . Pour les utiliser , il faut au minimum :(avant notez bien que le C# est sensible à la casse donc <SerialPort> ne peut pas être remplacé par <serialport>)
- placer la directive suivante en début de programme : using System.IO.Ports; (avec le ; à la fin de ligne)
- puis dans une fonction (appelée méthode enC#) on crée un port appelé COMPort en écrivant : Serial COMport = new System.IO.Ports.Serialport("COM5", 9600);
- il faut remplacer COM5 par le nom du port sur lequel est branché votre robot , 9600 est la vitesse de transmission en Bauds
- on peut manipuler bien d'autres paramètres du port série , mais ce n'est pas utile pour débuter.
- on ouvre le port en écrivant COMport.Open();
- pour envoyer une commande au robot on utilise: COMPort.WriteLine (commande); ou <commande> est une chaîne de caractères.
- pour lire la réponse du robot on utilise : COMPort.ReadLine(reponse); ou <reponse> est une chaîne de caractères.(on notera qu'on utilise pas de caractéres accentués)
- cette lecture pose un problème de synchronisation : il faut donner au robot le temps d'effectuer différentes opérations sinon on a pas de réponse valable. Or , on peut arrêter le déroulement du programme grâce a la commande : Thread.Sleep(duree); (ou duree est un entier : une valeur d'environ 700 est souvent utilisable), il faut essayer différentes durées (elles sont en millisecondes). Pour utiliser Thread.Sleep il faut la directive : using System.Threading; au début du programme.
Quelle forme pour les messages ? (commandes et réponses)
Nous avons choisi des commandes du type suivant: K5a/150/50/80/
- K signale le début d'une commande pour un robot donné
- le deuxième caractère correspond au numéro du message , qui augmente de 1 a chaque échange (en fait au delà d'une certaine valeur on remet le compteur a zéro)
- ici K5 est attendu par le robot receveur pour commencer a lire le message
- la troisième caractère est le type de la commande , ici <a> pour avancer
- les trois chiffres suivants correspondent a des paramètres : ici 150 donne la durée de fonctionnement de l'un des moteurs
Lorsqu'il a repérera la séquence d'dentification <K5> le programme du BS2 lira le type de la commande puis ses paramètres: selon la commande on le dirigera vers le sous programme correspondant qui fera le travail. Si la commande demande une réponse (un <i> pour avoir la valeur lue par les détecteurs de distance infrarouges par exemple ) cette réponse sera incluse dans le message de retour .
On peut certainement coder plus économiquement les messages (par exemple en utilisant directement les bits), mais cette formule a le mérite d' être simple.
La liaison entre PC et robot:
- la plus simple consiste en un câble (mais comme les PC modernes n' ont plus de port série il faudra acheter dans un magasin informatique un câble dit USB-SERIE qui se branche sur un port USB du PC)
- on peut remplacer ce câble par une petite carte radio a chaque extrémité (cotés robot et PC)
- ou encore par une liaison Bluetooth
Les programmes des autres
- vous pouvez rechercher , pour régler des problémes un peu délicats , des programmes écrits par des informaticiens ou des passionnés
- ciblez bien ce que vous recherchez , ne vous précipitez pas sur n'importe quoi
- priviégiez des programmes de taille raisonnable , dont les sources sont fournies, mieux encore commentées !
- n'espérez pas qu'en téléchargeant les programmes d'autrui vous aurez résolu votre probléme
- essayez de comprendre comment le programmeur ci est pris et emprutez lui une ou deux fonctions vraiment utiles
- constituez vous ainsi une boite à outils de fonctions (de moins d'une page de code chacune) que vous aurez comprises et testées
Windows ou linux sur votre PC?
- beaucoup de roboticiens amateurs utilisent un ordinateur sous linux (variante gratuite d'Unix) .Parmi ses avantages : des programmes nombreux (généralement en C) et gratuits .
- pour les inconvénientsde linux : une certaine complexité et surtout sous linux on ne peut disposer de nombreux programmes , outils, drivers de périphériques disponibles sous Windows : j'ai eu l'impression dêtre obligé d'investir trop de temps pour aboutir parfois a un impasse avec linux..Cest ce dernier point qui m'a faire revenir a Windows aprés un passage dans le monde linux.
- donc choisir c'est une affaire de philosophie ,de collaborations avec d'autres utilisateurs, et surtout de pratique habituelle avec l'un ou l'autre systéme: il ne faut surtout pas en changer pour faire des robots.
- cela dit les programmes en C restent les mêmes ou presque quelque soit le systéme