Lors de la programmation d'une voiture robotisée, même trouver une place de parking peut être un effort herculéen. Mike Montemerlo sait tout des efforts nécessaires pour les routines d'IA complexes, ayant programmé les décisions de conduite pour deux véhicules à conduite autonome lors des DARPA Challenges. Nous lui avons demandé de faire sauter le capot et de nous laisser jeter un coup d’œil à ses créations..

TechRadar: Décririez-vous certaines des fonctions techniques des voitures robotiques Junior et Stanley et quelques-uns des défis que vous avez rencontrés lors de l’écriture du code logiciel?

Mike Montemerlo: Les logiciels pour voitures robotiques peuvent être divisés en deux parties: la perception et la prise de décision (parfois appelée planification). Le logiciel de perception prend des données de capteur brutes et construit un modèle du monde autour du robot.

Dans le cas de la conduite autonome, nous nous intéressons plus aux dangers autour du véhicule, tels que les trottoirs, les autres voitures, les piétons, les cyclistes et les panneaux de signalisation. Le logiciel de prise de décision, ou «planificateur», associe ce modèle mondial et son objectif, et décide d'une action à prendre qui soit sûre, conforme aux règles et déplace la voiture vers l'objectif.

Parmi les tâches spécifiques que Junior doit exécuter au volant, citons la détection et l’évitement d’obstacles, la localisation et le centrage des voies, la détection et le suivi d’autres véhicules, ainsi que la planification d’itinéraires vers des points de contrôle éloignés. La perception robotique et la prise de décision sont très difficiles dans le monde réel car le monde réel est incertain.

Nos capteurs sont bruyants et nos actions ne se déroulent pas toujours comme prévu. Pour cette raison, nous adoptons une approche probabiliste de la robotique, modélisant le bruit sur nos capteurs et nos actions..

TR: Comment les développements dans les voitures robotiques aident-ils les modèles normaux à être vendus maintenant??

MM: Les voitures comprennent mieux le monde et, dans certains cas, prennent de petites actions pour améliorer votre sécurité. Les freins antiblocage en sont un exemple très simple. Ils mesurent la vitesse de vos roues puis appliquent les freins pour vous donner le contrôle en dérapage..

Lorsque vous freinez très fort, la direction prend le contrôle. Maintenant, il y a des choses comme le régulateur de vitesse adaptatif où la voiture maintient la distance par rapport à une voiture devant vous et ajuste votre vitesse pour vous assurer que vous n'avez pas à manipuler constamment vos commandes. Vous pouvez penser à cela comme à la voiture qui prend un peu de contrôle sur vous, étant un peu plus autonome. Un peu comme un conducteur assis à l'arrière où le robot dit: "Vous allez vous mêler à la circulation, mais il y a une voiture que vous n'avez pas vue".

La voiture peut secouer votre siège, appliquer les freins ou faire autre chose dans l'espoir d'éviter un accident avant qu'il ne survienne.

TR: Décrivez une partie de la programmation requise pour quelque chose comme appuyer sur un bouton et dire: «Emmène-moi à Londres». Quelles sont les différences de programmation pour les différentes tâches nécessaires?

MM: Junior réfléchit au problème à plusieurs niveaux. Tout d’abord, il y réfléchit au niveau mondial, comme votre appareil GPS, vous guidant de A à B. C’est un problème facile à résoudre. Le niveau suivant est la pensée junior du monde en termes de trajectoires.

Il a prévu une courte trajectoire - peut-être 100 pieds de long - afin de rester centré dans la voie et d’éviter les virages. Il doit donc prendre des décisions telles que: «Dans quelle voie dois-je être pour progresser le plus rapidement? et 'aurai-je assez de temps pour revenir dans la voie où je veux être pour prendre mon tour?'

TR: Quelles sont certaines des complexités associées à la conduite autonome?