Ao programar um carro robótico, até mesmo encontrar um espaço de estacionamento pode ser um esforço hercúleo. Mike Montemerlo sabe tudo sobre o esforço necessário para rotinas complexas de IA, tendo programado as decisões de direção para dois veículos de direção autônomos nos Desafios DARPA. Pedimos a ele para abrir o capô e nos deixar dar uma olhada dentro de suas criações.

TechRadar: Você descreveria algumas das funções técnicas nos carros robóticos Junior e Stanley e alguns dos desafios que teve ao escrever o código do software??

Mike Montemerlo: O software para carros robóticos pode ser dividido em duas partes: percepção e tomada de decisão (às vezes chamada de planejamento). O software de percepção leva em dados de sensor brutos e constrói um modelo do mundo ao redor do robô.

No caso da condução autônoma, estamos mais interessados ​​nos perigos ao redor do veículo, como meio-fio, outros carros, pedestres, ciclistas e postos de sinalização. O software de tomada de decisão, ou 'planejador', combina esse modelo mundial e seu objetivo, e decide sobre uma ação a ser tomada que é segura, cumpra as regras e mova o carro em direção à meta..

Algumas das tarefas específicas que o Junior precisa tratar durante a condução incluem detecção e evitação de obstáculos, localização e centralização de pista, detecção e rastreamento de outros veículos e planejamento de rotas para postos de controle distantes. Percepção robótica e tomada de decisão são muito difíceis no mundo real porque o mundo real é incerto.

Nossos sensores são barulhentos e nossas ações nem sempre funcionam da maneira que esperávamos. Por esse motivo, adotamos uma abordagem probabilística da robótica, modelando o ruído em nossos sensores e ações.

TR: Como os desenvolvimentos nos carros robô estão ajudando os modelos normais sendo produzidos para venda agora??

MM: Os carros estão entendendo melhor o mundo e, em alguns casos, estão realizando pequenas ações para ajudar a torná-lo mais seguro. Freios antibloqueio são um exemplo muito simples. Eles medem a velocidade de suas rodas e, em seguida, aplicam os freios para dar controle em uma derrapagem.

Quando você está freando muito, a direção assume o controle. Agora, há coisas como o controle de cruzeiro adaptativo em que o carro mantém a distância de um carro na sua frente e ajusta sua velocidade para garantir que você não precise constantemente mexer com seus controles. Você pode pensar nisso como o carro tomando um pouco de controle para longe de você, sendo um pouco mais autônomo. Mais ou menos como um motorista do banco de trás, onde o robô está dizendo: "Você vai se fundir no trânsito, mas há um carro que você não viu".

O carro pode agitar seu assento ou aplicar os freios ou fazer algo para evitar um acidente antes que aconteça.

TR: Descreva alguns dos programas necessários para apertar um botão e dizer "Leve-me para Londres". Quais são as diferenças na programação para as várias tarefas necessárias?

MM: Junior pensa sobre o problema em vários níveis diferentes. Primeiro, ele pensa nisso em nível global, como o seu dispositivo GPS, guiando você de A para B. Esse é um problema fácil de resolver. O próximo nível é o pensamento júnior do mundo em termos de trajetórias.

Ele tem uma trajetória curta - talvez de 30 metros - que planeja para se manter centralizado na pista e evitar as curvas, e precisa tomar decisões como: "Em que pista eu deveria estar para fazer o progresso mais rápido?" e 'terei tempo suficiente para voltar à estrada em que quero estar para fazer a minha vez?'

TR: Quais são algumas das complexidades associadas à condução autônoma?