Simulação, cenários e direção autônoma - o modo SAE AutoDrive

Atualização: 20 de maio de 2021
Simulação, cenários e direção autônoma - o modo SAE AutoDrive

Introdução

O desafio SAE AutoDrive é uma competição de design colegial de 4 anos, com 8 equipes dos EUA e Canadá participando. A meta técnica de alto nível para o Ano 3 desta competição é navegar em um percurso de direção urbana em um modo de direção automatizado, conforme descrito pelo SAE Nível 4.

MathWorks desafia as equipes a usar simulação

A simulação é uma ferramenta muito útil para o desenvolvimento de veículos autônomos. O teste baseado em modelo pode auxiliar no desenvolvimento de algoritmos, testes em nível de unidade e de sistema e teste de cenário de caso de ponta. Mundo real sensor os dados podem ser gravados e reproduzidos no sistema para ajustar os algoritmos de fusão. Um ambiente de simulação pode ser criado para modelar ambientes do mundo real e pode ser usado para testar vários algoritmos e posições de sensor. Os melhores algoritmos e posições de sensor que atendem aos requisitos da equipe podem ser escolhidos com base nos resultados de desempenho.

A cada ano, o MathWorks desafia as equipes a usar o Simulation por meio de um Simulation Challenge. Este blog irá cobrir brevemente os vencedores do primeiro e segundo lugar do Desafio 1 (University of Toronto e Kettering University), seu projeto de sistema e como eles usaram as ferramentas MathWorks para ajudar a atingir os objetivos gerais da competição. As equipes foram julgadas com base em como usaram as ferramentas para realizar:

  • Teste de percepção de loop aberto - sintetizando dados para teste de loop aberto, avaliando a exatidão dos algoritmos
  • Teste de controles de loop fechado - sintetizando cenários de loop fechado, avaliando o desempenho do (s) algoritmo (s) de controle
  • Geração de código de algoritmos de controle - geração de código para algoritmos, integração do código gerado no veículo
  • Inovação usando ferramentas MathWorks – uma técnica/tecnologia distintamente diferente das 3 categorias acima

University of Toronto

A equipe de alunos da Universidade de Toronto, aUToronto, conquistou o 1º lugar no desafio.

Teste de percepção de circuito aberto

O primeiro passo desta equipe foi sintetizar dados para testes de percepção de loop aberto. Eles escolheram testar seu algoritmo de fusão de sensores. Para sintetizar dados sintéticos para teste, eles usaram o (DSD). Este aplicativo permite que você crie cenários de direção sintéticos para testar sua direção autônoma. A equipe usou um radar e 3 câmeras nos algoritmos de fusão de sensores, que são configurados conforme mostrado na Figura 1.

Figura 1: Localizações do sensor da equipe (© aUToronto)

Eles modelaram os sensores da câmera - junto com suas posições, orientações e configurações - no aplicativo DSD para sintetizar os dados do sensor para alimentar seus algoritmos de fusão de sensores. O DSD simula a saída da câmera após o processamento de imagem da equipe e algoritmos de visão por computador e adiciona ruído e outliers aos dados.

O bloco Scenario Reader foi usado para ler informações de cenário criadas usando DSD. As poses do ator foram enviadas como entrada para os geradores de detecção múltipla. As detecções para esses vários sensores foram então empacotadas como matrizes de mensagens ROS (Robot Operating System) de tamanho variável e enviadas como mensagens ROS personalizadas para tópicos ROS específicos (Figura 2).

Figura 2: Modelo Simulink para teste de circuito aberto (© aUToronto)

A equipe comparou a saída de seu rastreador de objetos com os valores de verdade dos veículos. A métrica RMSE (Root Mean Square Error) foi usada para avaliação de desempenho.

Teste de controles de loop fechado

O foco principal da equipe era testar seu planejador modificado para novos recursos, como redirecionar para zonas de construção e contornar obstáculos. O planejador foi redesenhado para usar uma estrutura de treliça onde as bordas são podadas do mapa para encontrar caminhos ao redor dos objetos, conforme necessário (Figura 3). O DSD foi mais uma vez usado para criar cenários. Barreiras e semáforos também foram adicionados aos cenários.

Figura 3: Estrutura em rede para descoberta de caminho (© aUToronto)

A equipe modelou um editor de semáforo usando Stateflow (Figura 4). Quando o veículo ego está fora do alcance (> 50m) do semáforo, o estado desconhecido é publicado. Quando o ego fica dentro do alcance, uma mensagem de luz vermelha é publicada. A mensagem muda para luz verde após o ego parar por 5 segundos.

Figura 4: Fluxo de estado para o controlador do modelo (© aUToronto)

Os nós ROS do controlador, planejador e modelo de veículo foram lançados. Se o obstáculo estava a 50m do veículo ego, sua posição era enviada como uma mensagem ROS para o modelo Simulink (Figura 5).

Figura 5: Lógica para enviar mensagem de posição (© aUToronto)

Geração de código de algoritmos de controle

A equipe gerou código para o algoritmo de tratamento de sinais de parada (Figura 6). Simulink Coder foi usado para converter o Stateflow em código C++. Um autônomo módulo foi gerado usando a função de empacotamento de código. O módulo gerado foi então mesclado na base de código da equipe.

Figura 6: Pare o fluxo de estado lógico de controle de luz (© aUToronto)

Inovação usando ferramentas MathWorks - calibração de câmera Lidar

Para interpretar com precisão os objetos em uma cena com entradas de um lidar e um sensor de câmera, é necessário fundir as saídas do sensor. Assim, a equipe realizou uma transformação entre o Lidar e a câmera da equipe para projetar pontos Lidar em uma imagem ou vice-versa para fusão de sensores. Em vez de usar medições manuais e câmeras rotativas até que as projeções parecessem boas, a equipe usou a ferramenta de calibração recém-desenvolvida da câmera Lidar da caixa de ferramentas de processamento Lidar. Esta ferramenta estima uma matriz de transformação rígida que estabelece as correspondências entre os pontos no plano 3D LIDAR e os pixels no plano da imagem.

Eles construíram uma placa de calibração maior, pois a atual era muito pequena para a ferramenta. A ferramenta de calibração da câmera foi usada para obter a matriz intrínseca de sua câmera. Os cantos do tabuleiro de xadrez foram encontrados em cada imagem, e os dados Lidar. A matriz de transformação rígida entre Lidar e câmera foi encontrada. Este processo produz uma transformação que pode ser usada para projetar os dados da nuvem de pontos em imagens ou vice-versa. Essas etapas são mostradas na Figura 7.

Figura 7: (a) Matriz intrínseca da câmera (b) cantos quadriculados (c) Matriz de transformação de Lidar para câmera (© aUToronto)

Universidade de Kettering

time de estudantes da Kettering University, conquistou o 2º lugar no desafio.

Teste de percepção de circuito aberto

A equipe usou o Unreal Engine para criar vários cenários. Uma câmera foi adicionada ao ego-veículo no Unreal usando o bloco de câmera 3D de simulação. Um modelo Simulink foi usado para realizar a detecção de pista usando as imagens irreais (Figura 8). Os quadrados azuis indicam as funções de detecção de faixa e os amarelos indicam as saídas em cada etapa. Esses números de saída são mostrados na Figura 9.

Figura 8: Modelo Simulink para teste de circuito aberto (© Kettering University)

Figura 9: Saídas de detecção de pista (© Kettering University)

Teste de controles de loop fechado

O projeto do sistema da equipe consistia em 2 máquinas de estado - longitudinal e lateral. Essas máquinas de estado, mostradas na fig, foram usadas para modelar a lógica de seleção do controlador com base nos dados do sensor e da tomada de decisão. Eles foram interligados e usados ​​para habilitar e inicializar os subsistemas do controlador.

Figura 10: Máquinas de estado (© Kettering University)

Simulações de controlador combinado, com o modelo Simulink na Figura 11, foram feitas para verificar o funcionamento de todos os controladores da equipe. As entradas para esses controladores foram fornecidas usando controles deslizantes e medidores.

Figura 11: Modelo Simulink para teste de loop fechado (© Kettering University)

Os subsistemas de controlador da máquina de estado longitudinal incluem controlador de velocidade longitudinal e frenagem automática de emergência (AEB). Os estados foram determinados pela dinâmica longitudinal do veículo, como acelerar, cruzar, desacelerar, parar e estacionar.

Os subsistemas do controlador da máquina de estado lateral incluem os controladores Lane Keep Assist (LKA), Lane Change e Turn. Os estados foram determinados com base na dinâmica lateral do veículo (Figura 12). Velocidade longitudinal, mudança de faixa e controladores LKA são discutidos abaixo.

Figura 12: Estados do controlador lateral (© Kettering University)

Controlador longitudinal

A Figura 13 mostra o modelo Simulink usado para modelar o controlador longitudinal. Consistia em um PID baseado na velocidade. As taxas de torque de referência e de saída foram limitadas para ficar dentro dos limites de aceleração de competição e jerk. As entradas do sistema foram inicializadas e editadas com controles deslizantes e um escopo foi usado para visualizar os dados. A Figura 14 mostra as saídas de velocidade longitudinal alvo e real.

Figura 13: Modelo Simulink do controlador longitudinal (© Kettering University)

Figura 14: Comparações de velocidade longitudinal (© Kettering University)

Controlador de mudança de faixa

O controlador de mudança de pista da equipe usou MPC adaptativo (controle preditivo modelo). Um caminho de referência foi gerado usando funções paramétricas, com entradas de mudança de faixa, como velocidade do veículo e largura da faixa. As saídas para o controlador foram a posição lateral de referência e Yaw. Um modelo 3DOF (Grau de Liberdade) foi usado para simular a carroceria do veículo. A Figura 15 mostra o modelo Simulink usado para simulação. A Figura 16 mostra os resultados da simulação com caminhos de mudança de faixa de referência e simulados, juntamente com os caminhos obtidos após o teste no veículo.

Figura 15: modelo Simulink do controlador de mudança de faixa (© Kettering University)

Figura 16: Comparações de caminhos de mudança de faixa (© Kettering University)

Modelo do veículo

A equipe desenvolveu e validou um modelo de veículo 3DOF de pista única e dupla. A validação inicial foi realizada usando um modelo linear de bicicleta. A validação final foi realizada com dados de teste físico. A figura mostra a saída de comparação de aceleração lateral com validações inicial e final, sem e com dados de teste.

Figura 17: (a) Comparações de aceleração lateral (b) Comparações com dados de teste (© Kettering University)

Inovação usando ferramentas MathWorks - Unreal city

A equipe usou o Unreal para testes de loop fechado de todos os seus controladores. Eles criaram uma cidade Unreal com movimentos de pedestres e semáforos controláveis. Atores personalizáveis ​​foram criados e suas informações, como nome do ator, tipo de ator, detalhes do ator, detalhes da animação e tags, foram armazenados para acesso rápido. Um mapa de semáforos também foi criado junto com a localização dos semáforos rotulada como Figura 18.

Figura 18: Mapa de semáforos irreal (© Kettering University)

A Figura 19 mostra a estrutura de comunicação do sistema Simulink-Unreal. A tomada de decisão para a cena Unreal, que consiste na posição do veículo, movimento do pedestre, status dos semáforos, etc., foi feita usando Stateflow e enviada como entrada para os controladores (Figura 20).

Figura 19: Estrutura de comunicação do sistema Simulink Unreal (© Kettering University)

Figura 20: Fluxo de estado para tomada de decisão de cena irreal (© Kettering University)

Em conclusão, as equipes de alunos da University of Toronto e Kettering University puderam aproveitar o MATLAB e o Simulink para projetar, construir, testar e avaliar algoritmos de fusão, rastreamento e navegação para chegar um passo mais perto de construir um veículo autônomo SAE nível 4 em simulação. Eles criaram cenários complexos com semáforos e vários atores em diferentes ambientes de simulação, integraram os ambientes com Simulink e implantaram e testaram seus algoritmos escolhidos nesses cenários. Algoritmos de percepção de malha aberta e malha fechada foram modelados e testados usando Simulink, e o código foi gerado para esses sistemas. As equipes também projetaram e testaram vários algoritmos de controlador usando Simulink e Stateflow. As ferramentas MathWorks foram usadas de forma inovadora e extensiva por ambas as equipes campeãs.