Présentation de la programmation du robot

attention Cette page est une archive.

Introduction

Nos deux robots contiennent un certain nombre de cartes électroniques chacun. Celles-ci sont détaillées sur la page consacrée à l'électronique du robot. En raison de leur diversité et des différents rôles qu'elles ont à jouer, ces cartes ne peuvent pas être programmées toutes de la même façon. Cette page a pour objectif de détailler rapidement ces programmes.

Les cartes principales

Les cartes principales sont celles qui assurent la stratégie du robot.

Sur le gros robot

Le microcontrôleur gérant la stratégie du gros robot est un AT32UC3A1512, de la famille des AVR32 de chez Atmel. Il y a quelques années, d'autres membres du CRIS ont équipé ce microcontrôleur d'un système d'exploitation temps réel, FreeRTOS. Cela permet de créer des tâches spécifiques et d'exécuter celles-ci suivant l'état du robot en temps réel. Ces tâches regroupent la gestion des capteurs, la gestion des déplacements, la gestion de l'alimentation et la gestion des actionneurs. On entend par "gestion" la communication avec les cartes dédiées et l'impact de ces informations sur la stratégie du robot.

Sur le petit robot

Le principe de la stratégie précédente a été conservé sur le petit robot. Cependant, au lieu d'utiliser le même microcontrôleur, nous avons décidé de tester une autre approche. Cela se justifie en raison de la complexité de la maîtrise de l'OS temps réel. En effet, une seule membre de l'équipe s'est investie dans la compréhension du FreeRTOS, d'où la volonté de trouver une solution alternative avant son départ. Nous avons donc décidé de partir sur une carte Arduino Due. Ce choix s'est fait en raison de la simplicité du langage Arduino, et des performances de la carte.

Les autres cartes

Ces cartes sont programmées de la même manière sur les deux robots.

La carte d'alimentation

Elle ne sert qu'à gérer l'alimentation du robot, en distribuant les tensions aux autres cartes et en coupant la puissance au bout de 90 secondes, temps d'un match. Elle est programmée en C, sur un PIC (microcontrôleur de chez Microchip).

La carte des capteurs

Sur demande de la carte principale, elle vérifie l'état des cinq capteurs à ultrasons, et lui renvoie l'information de présence ou non d'un obstacle à moins de 30 cm du robot. Cette carte est programmée en C, sur un PIC (microcontrôleur de chez Microchip).

La carte des actionneurs

Sur demande de la carte principale, elle pilote les actionneurs (servomoteurs, moteurs à courant continu) afin de réaliser l'action demandée. Elle est programmée en C, sur un ATXMega256A3U (microcontrôleur de chez Atmel).

La carte asservissement

Cette carte gère le déplacement du robot. En effet, pour que le robot se rende au point indiqué par la carte principale, il faut piloter les moteurs, vérifier la position réelle du robot via des roues incrémentales et corriger cette position. Elle est programmée en C, sur un ATXMega256A3U (microcontrôleur de chez Atmel).

La carte pupitre

Elle fait office d'interface homme-machine grâce à des interrupteurs et des LED directement pilotées depuis la carte principale. Cette carte n'a pas de microcontrôleur, il s'agit plutôt d'un morceau déporté de la carte principale.

Communication entre ces cartes

Afin d'optimiser la communication entre toutes ces cartes, nous avons mis au point un protocole de communication unique entre les différentes cartes. Celles-ci communiquent entre elles via le port Série pour la plupart des cartes, et via un port SPI entre la carte principale et la carte actionneurs.

Dernière mise-à-jour par Première Dame , le 06/12/2015 à 16:00:24