Contrôle informatique : Player, Stage et compagnie

Posted in informatique on mars 3rd, 2009 by Cyril

Une part importante du travail que j’ai effectué jusqu’à maintenant sur ce projet concerne la partie logicielle du robot. Comme je l’avais prévu et expliqué dans mes premiers posts (ici), le contrôle du robot est en effet confié en grande majorité à l’informatique embarquée.

Le cœur du système est constituée du serveur Player, exécuté dans un environnement linux (Ubuntu 8.04). Player est un serveur TCP-IP de contrôle robotique, distribué sous lience GNU. Son principe est de répondre aux requêtes d’un un client-contrôleur et de lui fournir toutes les méthodes utiles pour le contrôle des capteurs et actuateurs du robot. Pour sa configuration, Player utilise un fichier de qui définit les interfaces disponibles pour le contrôle du robot, et instancie pour chacune de ces interface les drivers nécessaires en décrivant leurs propriétés et leurs méthodes d’accès au matériel.

Le client quant à lui se contentera de se connecter au serveur, de récupérer la liste des interfaces disponibles, et de travailler avec pour déplacer le robot, lire les capteurs, etc…

Exemple de code client en java tiré de mes premières expériences:

robot = new PlayerClient (« localhost », 6665);

posi = robot.requestInterfacePosition2D (0, PlayerConstants.PLAYER_OPEN_MODE);

if (frontSide <= MAX_WALL_THRESHOLD ) {

    posi.setSpeed (0, 0);

}

Bon, tout ceci n’est pas forcement évident comme fonctionnement au début mais ce principe de séparer l’interfaçage du matériel et le logiciel de commande est très puissant et vraiment très souple!

Concrètement, l’écriture du driver (qui se fait en C++) est commencée et j’ai utilisé Stage, l’indispensable complément de Player, pour simuler des petits bouts de code en Java (suivi de mur, déplacement aléatoire, etc…)

La suite du développement côté contrôleur se fera en Python, pour plein de bonnes raisons que je n’ai pas le temps de développer ici pour l’instant. (Player est fourni de base avec des « Python-bindings)

A bientôt pour des exemples de code !

Essais I2C et contrôle moteur

Posted in electronique, I2C, PIC on mars 3rd, 2009 by Cyril

Hop, reprise effectuée avec succès !

La carte de contrôle des moteurs qui me posait tant de problèmes est enfin domptée, il ne me reste que quelques résistances cms de pull up à souder pour qu’elle soit totalement fonctionnelle.

Comme elle n’a pas encore été décrites dans ces colonnes, voici un topo sur son cas:

Cette carte très simple est architecturée autour d’un PIC 18F2431 de Microchip. Vous trouverez la datasheet de ce composant sur sa page produit mais voici quelques unes des caractéristiques qui m’ont fait le choisir:
- Un module SSP (port de communication I²C)
- Jusqu’à 6 sorties PWM (Pulse Width Modulation), pratiques pour le contrôle des moteurs du robot (4 utilisées)
- Un module « MotionFeedback » qui peut se charger du décodage d’un encodeur en quadrature
- Pas mal d’autres IO qui compléteront les fonctionnalités de la carte en assurant par exemple le comptage du 2ème décodeur, etc….

Grâce à ce petit microcontroleur de 28 broches, la carte remplira donc les fonctions suivantes:
- Contrôle de la distance effectuée, de la vitesse et du sens de rotation des 2 moteurs de propulsion grâce aux 2 encodeurs incrémentiels
- Stockage et mise à disposition de ces informations via le bus I²C
- Asservissement en vitesse (position ..?) des moteurs en fonction des commandes de position reçue.
- Communication avec le PC maître, via la carte U2C-12 de Diolan

Voici le schéma électronique de la carte:Dans un prochain post, je montrerais la réalisation de la carte et les premiers pas de son utilisation.

A bientôt !