Une bouffée d'air frais dans la robotique

Telecom Robotics

Tutoriaux

Nos Robots

Connexion utilisateur

Telecom Robotics / Areabot

Une bouffée d'air dans la robotique

Pourquoi Ada ?

Soumis par sam le Mer, 01/11/2006 - 22:48

Ada est le langage principal utilisé pour contrôler nos robots depuis 2005. Les raisons de ce choix sont multiples:

  • Ada a été conçu dès l'origine pour développer des systèmes sûrs. Ce n'est pas un hasard si les systèmes de contrôle de vol des avions, des navettes spatiales, des trains et des métros automatiques l'utilisent.
  • Un compilateur Ada libre (GNAT) est disponible dans la suite GCC (GNU Compiler Collection). Ce compilateur est maintenu et développé par AdaCore, société qui nous apporte un soutien financier et un support technique précieux.
  • Il est possible de placer des restrictions sur les constructions du langage, restrictions qui seront vérifiées à la compilation ou à l'exécution.

Port du compilateur GNAT sur plate-forme SH4/Linux

Le compilateur Ada GNAT est disponible pour de nombreuses combinaisons de processeurs et de systèmes d'exploitation. À l'époque où nous avons commencé à l'utiliser, il n'avait a priori jamais été utilisé sur un processeur SH4.

Nous avons donc réalisé le premier port de GNAT sur plate-forme SH4/Linux. GNAT étant très versatile, cette étape n'a posée aucun problème majeur. Au cours de nos développements, nous n'avons rencontré aucun bogue ni dans la partie Ada du compilateur ni dans le code généré.

Restrictions

Afin d'augmenter notre confiance dans le code que nous écrivons, nous avons choisi d'utiliser un profil appelé Ravenscar qui ajoute au langage Ada des restrictions supplémentaires adaptées aux systèmes temps-réels. Par exemple:

  • Aucune nouvelle tâche (en Ada, le parallélisme est intégré dans le langage lui-même) ne peut être crée en cours d'exécution. Les tâches doivent exister dès le lancement du programme et ne sont pas sensées s'arrêter avant la fin.
  • Toute référence au temps doit être une référence absolue, pour éviter le cumul de petites dérives du temps d'exécution des tâches périodiques.
  • Les tâches ne peuvent pas communiquer directement entre elles. Elles doivent passer par des objets protégés, entités de synchronisation de haut-niveau fournies par le langage.

L'utilisation du profil Ravenscar permet de vérifier indépendamment chaque tâche. Ensuite, au moment de l'assemblage, on vérifie les propriétés d'ordonnancement du système, l'interaction avec le monde extérieur et le flux des données.

De plus, nous avons choisi d'interdire l'allocation dynamique de mémoire. En effet, celle-ci est souvent considérée comme dangereuse pour les systèmes embarqués, en raison des risques de fragmentation de la mémoire. Lorsque le programme de contrôle démarre, il alloue statiquement la mémoire qu'il utilisera; une fois qu'il est lancé, nous sommes certains d'avoir toute la mémoire dont nous avons besoin. On notera que cette restriction supplémentaire est vérifiée automatiquement à la compilation. Toute allocation dynamique sera signalée comme une erreur fatale par le compilateur.

Lors des phases de développement, nous imposons l'utilisation d'une option du langage permettant d'initialiser, lorsque c'est possible, toutes les variables avec une valeur invalide. Par exemple, si un entier est déclaré comme pouvant prendre une valeur comprise entre 0 et 100, le compilateur générera du code supplémentaire pour placer 101 dans toutes les variables de ce type. Si cette variable est utilisée (lue) avant d'être écrite, l'exécutif Ada le détectera et signalera l'emplacement de la lecture fautive.

Interface avec le matériel

Ada fournit des constructions permettant de décrire l'organisation physique des différentes structures de données. Ainsi, s'interfacer avec du matériel est trivial: il suffit de décrire à quelle adresse le périphérique se trouve et les bits à utiliser. Ada générera automatiquement les masques et les décalages appropriés.

Conclusions

Le choix d'Ada pour le contrôle du robot s'est avéré très judicieux. Le langage est facile à apprendre et la sécurité qu'il apporte permet de se concentrer sur le problème qu'on cherche à résoudre sans être distrait par des détails d'implémentation. Nous avons donc choisi de conserver ce langage pour les développements futurs.

Nos soutiens

Images aléatoires

Untitled image DSC07227.JPG 

Événements à venir

  • pas grand chose...

Contenu populaire

Parcourir les archives

« Septembre 2008  
Lu Ma Me Je Ve Sa Di
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Syndication

Syndiquer le contenu