Robotique‎ > ‎

Informatique embarquée (temps réel)



Schéma de l'architecture électronique et informatique embarquée :

Schéma fonctionnel

Voici un article du magazine ELECTRONIQUES décrivant l’architecture utilisée dans notre robot : SYSTÈMES EMBARQUÉS. 

Matériels :

L'architecture du robot est composé de multiple microcontroleurs 8 bits et 32 bits :
- Un ARM Marvell kirkwood (32 bits, 1,2 Ghz) est utilisé pour l'informatique haut niveau (le cerveau)
- Un PIC32 (PIC32MX795F512L, 32 bits, 80 Mhz) est utilisé pour l’informatique temps réel (la colonne vertébrale)
- Plusieurs PIC18 (18F2431, 8 bits, 20 Mhz) sont utilisés pour la gestion des actionneurs (régulation des moteurs, entrée/sorties)

Systèmes logiciels (OS : Operating System) :

- L'OS linux est utilisé sur l'ARM 
- Un OS temps réel (RTOS) est utilisé sur le PIC32 
- Aucun OS n'est utilisé sur les PIC18

Logiciels embraqués :

L'ensemble du code développé sur le PIC32 ainsi que sur les PIC18 est codé en C. Nous essayons de respecter au maximum les règles de codage MISRA C et nous utilisons le logiciel Splint comme vérificateur syntaxique de notre code. 

Informatique bas niveau :

Deux PIC18 sont utilisés pour la régulation en vitesse des moteurs de déplacement du robot. Le firmware de ces deux microntroleurs gère donc la régulation de vitesse d'un moteur sous forme d'un PI, ainsi que des entrées capteurs (Numériques (ex : microrupteurs) ou Analogiques (mesure de tension)) et des sorties (relais, PWM). 
Le logiciel est composé d'une simple boucle, d'interruptions timer à 1ms (base de temps pour la régulation PI) et d'interruptions UART pour la communication avec le PIC32. En effet les PIC18 sont des esclaves du PIC32 effectuant les opérations demandées par des consignes. Un protocole série spécifique a été développé afin de pouvoir réaliser la configuration et la commande de ces organes. La communication UART entre ces microcontroleurs est cadencé à 350 KBauds.  

Design électronique de la carte informatique temps réel composé d'un PIC32 et de deux PIC18 :

PIC32 board

Deux PIC18 sont utilisés pour les tourelles émettrices afin de pouvoir détecter l'adversaire. Le firmware de ces deux microntroleurs gère l'émission cyclique de code spécifique via UART. Les signaux UART sont transformés en signaux infrarouge pour obtenir un mode de fonctionnement IrDA.

Design électronique de la carte balise émettrice composé d'un PIC18 :

Carte balise émettrice

Deux PIC32 sont utilisés pour les tourelles réceptrices afin de pouvoir détecter l'adversaire. Le firmware de ces deux microntroleurs gère la réception de code spécifique via UART. Les signaux IrDA sont transformés en signaux UART puis analyser par le code. La distance de détection est configurable par un protocole spécifique lors du démarrage du robot. Si la balise réceptrice détecte un code spécifique avec une distance inférieur à celle de détection, le logiciel envoi par un autre port UART une trame de détection. Pour réaliser ce système nous utilisons un PIC32, et nous convertissions l'UART en USB à l'aide d'un FT232R pour pouvoir le relier facilement et simplement à l'ARM. 

Design électronique de la carte balise réceptrice composé d'un PIC32 :

Carte balise réceptrice

Informatique temps réel :

Le firmware du PIC32 est composé de plusieurs tâches fonctionnant sous uc/OS-II. Le fonctionnement de ce logiciel est temps réels avec un Tick d'OS à 1 ms. Voici le descriptif des différentes tâches classées par ordre de priorité (de la plus prioritaire à la moins prioritaire) :

1/ Tâche UART : Driver UART pour la gestion du protocole spécifique avec les deux PIC18 (PI)
2/ Tâche ASSER : Gestion de l'asservissement de déplacement du robot
3/ Tâche TIMER: Stack TCP IP (Couche Timer logiciel)
4/ Tâche ETHERNET : Stack TCP IP (Couche Ethernet)
5/ Tâche SOCKET : Stack TCP IP (Couche Socket)
6/ Tâche IO : Gestion des entrées / sorties et des moteurs (PWM)
7/ Tâche PROTOCOLE : Gestion du protocole spécifique (avec l'ARM) de la communication Ethernet
8/ Tâche MAIN : Gestion globale du robot (initialisations, communications, actions)
9/ Tâche DEBUG : Telnet Serveur (log)
10/ Tâche HTTP : Web Serveur (diagnostic, configuration)

Il y a deux types de communication géré par ce firmware, une Ethernet pour la communication entre le PIC32 et l'ARM (à l'aide d'une stack TCP IP) et une série (UART) pour la communication avec les PIC18 ou les servomoteurs.

Communication Ethernet

Le firmware comprend aussi un driver pour servomoteur (Dynamixel AX et RX) avec un API de haut niveau facilitant la commande de ceux-ci. 
Nous avons mis en oeuvre un Web Serveur ainsi qu'un serveur Telnet afin de pouvoir faciliter le "debug" mais  aussi la configuration et le réglage. C'est notamment important pour le réglage de la partie asservissement car nous effectuons des tests et des mesures pour déterminer les différents paramètres. Il possible de tracer des courbes de vitesse et tension moteur :

Courbe

Courbes


Code Open Source :