Al programar un automóvil robótico, incluso encontrar un espacio de estacionamiento puede ser un esfuerzo hercúleo. Mike Montemerlo sabe todo sobre el esfuerzo requerido para las rutinas complejas de IA, después de haber programado las decisiones de conducción para dos vehículos de conducción autónoma en los Desafíos DARPA. Le pedimos que se abriera la capucha y nos permitiera echar un vistazo dentro de sus creaciones..

TechRadar: ¿Describiría algunas de las funciones técnicas de los autos robóticos Junior y Stanley y algunos de los desafíos que tuvo al escribir el código del software??

Mike Montemerlo: El software para autos robóticos puede dividirse aproximadamente en dos partes: percepción y toma de decisiones (a veces se denomina planificación). El software de percepción toma datos sin procesar del sensor y construye un modelo del mundo alrededor del robot.

En el caso de la conducción autónoma, estamos más interesados ​​en los peligros que rodean el vehículo, como los bordillos, otros automóviles, peatones, ciclistas y avisos. El software de toma de decisiones, o "planificador", combina este modelo mundial y su objetivo, y decide sobre una acción que es segura, cumple las normas y mueve el automóvil hacia la meta..

Algunas de las tareas específicas que Junior debe manejar mientras se conduce incluyen la detección y evitación de obstáculos, la localización y el centrado de carriles, la detección y el seguimiento de otros vehículos, y la planificación de rutas a puntos de control lejanos. La percepción robótica y la toma de decisiones son muy difíciles en el mundo real porque el mundo real es incierto.

Nuestros sensores son ruidosos y nuestras acciones no siempre funcionan de la manera que esperábamos. Por este motivo, adoptamos un enfoque probabilístico de la robótica, modelando el ruido en nuestros sensores y acciones..

TR: ¿Cómo están los desarrollos en autos robot que ayudan a los modelos normales que se producen para la venta ahora??

MM: Los automóviles comprenden mejor el mundo y, en algunos casos, en realidad están realizando pequeñas acciones para ayudarlo a sentirse más seguro. Los frenos antibloqueo son un ejemplo muy simple. Miden la velocidad de sus ruedas y luego aplican los frenos para darle control en un patín..

Cuando frenas muy fuerte, la dirección toma el control. Ahora hay cosas como el control de crucero adaptativo en el que el automóvil mantiene la distancia a un automóvil frente a usted y ajusta su velocidad para asegurarse de que no tenga que estar constantemente jugando con sus controles. Puedes pensar que el auto te está quitando un poco de control, siendo un poco más autónomo. Algo así como un conductor del asiento trasero donde el robot dice: 'Vas a incorporarte al tráfico, pero hay un auto que no has visto'.

El automóvil puede sacudir su asiento o aplicar los frenos o hacer algo para evitar un accidente antes de que ocurra.

TR: Describa parte de la programación que se requiere para algo como presionar un botón y decir: 'Llévame a Londres'. ¿Cuáles son las diferencias en la programación para las diversas tareas necesarias??

MM: Junior piensa sobre el problema en varios niveles diferentes. Primero, lo piensa a nivel global, como su dispositivo GPS, guiándole de A a B. Es un problema fácil de resolver. El siguiente nivel es Junior pensando en el mundo en términos de trayectorias..

Tiene una trayectoria corta, tal vez de 100 pies de largo, que está planeando para mantenerse centrado en el carril y evitar las curvas, y tiene que tomar decisiones como "¿En qué carril debo estar para hacer el progreso más rápido?" y '¿Tendré suficiente tiempo para volver al carril en el que quiero estar para hacer mi turno?'

TR: ¿Cuáles son algunas de las complejidades asociadas con la conducción autónoma??