PC embarqué
Avant de parler d'intelligence (IA) ou de programmation il faut penser au support : un système à la fois suffisamment petit et autonome pour être embarqué, suffisamment puissant et souple pour travailler sans contraintes.
Dés lors plusieurs solutions s'offrent à nous : les cartes industrielles au format PC104, des cartes mini-ITX (proposées par Via, Intel ...), des microcontrôleurs couplés à des DSP ... Au final nous avons retenu une n-ième solution : un netbook !
Pourquoi un netbook ?
Celui-ci va au delà de nos besoins:
- petit: 28cm*20cm*3cm, il trône sans problème au sommet du robot.
- autonome: plusieurs heures sur sa propre batterie.
- puissant: Atom 1.6GHz.
- souple: c'est un PC x86 disposant de tous les périphériques utiles et d'un espace disque conséquent.
- simplicité de mise en place: une fois déballé il ne reste qu'à installer nos logiciels.
- le cout final: c'est un des plus faibles comparé aux autres solutions.
"The One" - Merci CowCotLand !
CowcotLand est un site dédié à l'actualité, tests et guides informatique. Nous le remercions pour le soutien matériel qu'il nous apporte pour les Coupe de France et d'Europe 2009 en nous fournissant un netbook ACER Aspire One A110aw.
Cette machine est équipée d'un ATOM 1.6gHz, de 512mo de ram, 8go de SSD et d'un écran 8.9p d'une résolution de 1024*600. Le tout dans un boitier de 240x195x36mm et un peu moins d'un kilo. Autant dire qu'il rentre parfaitement dans le robot et nous donne une puissance plus que raisonnable.
Et si "The One" vous intéresse consultez le test de CowCotLand !
Utilisation
Le NetBook sera la brique centrale du robot. Ses principales fonctions seront :
- la vision à l'aide d'une webcam
- la prise de décision
- le contrôle des différents périphériques (motorisation, actionneurs …)
Bien sur il est possible de réaliser toutes ces tâches à l'aide d'une électronique dédiée. Cependant les coûts de développement sont élevés: temps, argent, connaissances…
L'utilisation d'un PC "classique" permet de réduire énormément ces coûts. Nous disposons ainsi:
- d'une plateforme standard, facilement interchangeable et évolutive.
- de logiciels ayant un niveau professionnels: Linux, OpenCV, GCC, Java, NetBeans …
- de périphériques déjà intégrés ainsi que de larges possibilités d'évolutions: webcam, wifi, écran/clavier/touchpad, bluetooth …
La vision
La vision est assurée par une webcam USB. Nous avons retenu l'E3500 de Logitech pour sa compatibilité avec le driver UVC intégré au noyau Linux et pour son rapport qualité/prix.
Nous ajoutons un filtre IR devant la webcam. Il nous protège des projecteurs utilisés lors des compétitions.
L'analyse et le traitement d'image sont réalisés en C/C++ à l'aide de la librairie OpenCV. Cliquez-ici pour en savoir plus.
Prise de décision
L'intelligence artificielle (IA) est entièrement réalisée en JAVA. La forte modularité de la programmation objet, le multithreading et la portabilité nous ont poussés à utiliser JAVA comme langage de l'IA.
Contrôle des périphériques
Une classe JAVA nous permet de communiquer aisément avec notre interface USB-I2C. Dés lors il est possible d'interroger et de contrôler l'ensemble des périphériques présents sur le bus I2C.
Le système d'exploitation
Nos développements sont réalisés afin de fonctionner sur différents systèmes. Cependant pour des raisons de fiabilité, cout et facilité de développement nous avons retenu un système à base de noyau Linux.
Parmi les différentes distributions Linux nous avons retenu Debian et Ubuntu. Leur grande similitude permet de passer de l'une à l'autre facilement tandis que leur large communauté assure une évolution constante. Grâce au netbook nous disposons d'un moyen simple de configurer le robot avant un match. L'écran permet d'afficher les différents paramètres et de les vérifier très rapidement. Durant les phases de développement nous pouvons visualiser ce que capte la webcam ou utiliser une IDE telle que NetBean ou Eclipse. L'environnement graphique retenu est Gnome.
Même si un netbook est très proche d'un PC classique il reste en tête des machines capricieuses. L'utilisation d'un SSD à la place du disque mécanique, d'une carte son et wifi spéciales, de lecteurs de cartes intégrés ... On se retrouve vite à devoir bricoler la configuration des distributions Linux ou recompiler des modules. Ajoutez à cela un écran, un touchpad et un clavier aux dimensions réduites. Il n'en fallait pas plus pour que soit développées des versions "orientées netbook" des distributions Linux. Notre choix s'est porté sur Linux4One, basée sur Ubuntu 8.04 avec Ubuntu NetBook Remix et tout particulièrement configurée pour l'Aspire One.
Notre configuration
La configuration finale de notre Aspire One est le résultat:
- de notre expérience. Cela reste un PC tel que nous en utilisons quotidiennement.
- de nos besoins "spécifiques". Faire tourner un serveur de vision, une IA en java, développer ...
- des articles provenant des communautés Ubuntu, AspireOne ...
- d'une série de tests. Différents réglages, différentes options ... et beaucoup de temps.
Si vous désirez en savoir plus, rendez-vous sur cette page: Configuration Aspire One.