Carro autônomo: planejamento de caminho para manobrar o tráfego.
O planejamento do caminho consiste em encontrar um caminho seguro, confortável e eficiente para manobrar pelo tráfego. O vídeo a seguir demonstra a idéia com pontos verdes, sendo nossa trajetória calculada.
Isso faz parte de um artigo autônomo de 5 séries. Outros tópicos incluem- Percepção de auto-condução: fusão do sensor com o filtro Kalman .
- Percepção de direção autônoma: filtro Kalman estendido e filtro Kalman sem cheiro .
- Localização autônoma: Localização com filtro de partículas .
- Controle autônomo: controle com controle preditivo modelo e PID .
- Localização de caminho autônomo .
O planejamento do caminho consiste em encontrar um caminho seguro, confortável e eficiente para manobrar pelo tráfego. O vídeo a seguir demonstra a idéia com pontos verdes, sendo nossa trajetória calculada.
Isso faz parte de um artigo autônomo de 5 séries. Outros tópicos incluem
- Percepção de auto-condução: fusão do sensor com o filtro Kalman .
- Percepção de direção autônoma: filtro Kalman estendido e filtro Kalman sem cheiro .
- Localização autônoma: Localização com filtro de partículas .
- Controle autônomo: controle com controle preditivo modelo e PID .
- Localização de caminho autônomo .
Pipeline de fluxo de trabalho
Primeiro, vamos ter uma visão geral do fluxo de trabalho.Percepção : Percebemos o que está ao nosso redor. Através da fusão de sensores, integramos as leituras dos sensores para construir uma imagem precisa da posição e da velocidade dos objetos ao redor.
Previsão : Usamos as informações do sensor para prever as trajetórias de nossos objetos ao redor. Portanto, evitamos qualquer colisão.
Planejamento de comportamento : analisamos diferentes opções e criamos um punhado de propostas a partir de nossas opções. Eventualmente, traduzimos cada proposta em um local.
Planejamento de trajetória : para cada alvo em potencial, calculamos a trajetória correspondente.
Classificação de custos de trajetória : para cada trajetória, analisamos sua viabilidade e o custo com base em segurança, conforto e eficiência. Selecionamos a trajetória final com a maior pontuação.
Controle : Em seguida, enviamos a nova trajetória ao controlador do carro para controlar os atuadores do veículo.
Aqui está a visão geral de um sistema de carro autônomo:
Primeiro, vamos ter uma visão geral do fluxo de trabalho.
Percepção : Percebemos o que está ao nosso redor. Através da fusão de sensores, integramos as leituras dos sensores para construir uma imagem precisa da posição e da velocidade dos objetos ao redor.
Previsão : Usamos as informações do sensor para prever as trajetórias de nossos objetos ao redor. Portanto, evitamos qualquer colisão.
Planejamento de comportamento : analisamos diferentes opções e criamos um punhado de propostas a partir de nossas opções. Eventualmente, traduzimos cada proposta em um local.
Planejamento de trajetória : para cada alvo em potencial, calculamos a trajetória correspondente.
Classificação de custos de trajetória : para cada trajetória, analisamos sua viabilidade e o custo com base em segurança, conforto e eficiência. Selecionamos a trajetória final com a maior pontuação.
Controle : Em seguida, enviamos a nova trajetória ao controlador do carro para controlar os atuadores do veículo.
Aqui está a visão geral de um sistema de carro autônomo:
Percepção
Um carro autônomo usa câmeras estéreo, LiDAR e Radar para perceber o ambiente. O vídeo abaixo mostra o uso de câmeras para perceber objetos ao nosso redor, para que saibamos quais ações são viáveis e planejemos um caminho de acordo.
No entanto, não é fácil determinar a profundidade com câmeras estéreo. O LiDAR envia cerca de 2000 pulsos de feixe de laser infravermelho próximo por segundo para reconstruir um mundo 3D em torno de nós. O RADAR, por outro lado, possui um alcance maior que o LiDAR, mas menor resolução. Ele também tem a capacidade de medir a velocidade.
Usando a fusão de sensores , reconstruímos uma imagem consolidada e mais precisa da localização e da velocidade dos objetos.
Um carro autônomo usa câmeras estéreo, LiDAR e Radar para perceber o ambiente. O vídeo abaixo mostra o uso de câmeras para perceber objetos ao nosso redor, para que saibamos quais ações são viáveis e planejemos um caminho de acordo.
No entanto, não é fácil determinar a profundidade com câmeras estéreo. O LiDAR envia cerca de 2000 pulsos de feixe de laser infravermelho próximo por segundo para reconstruir um mundo 3D em torno de nós. O RADAR, por outro lado, possui um alcance maior que o LiDAR, mas menor resolução. Ele também tem a capacidade de medir a velocidade.
Usando a fusão de sensores , reconstruímos uma imagem consolidada e mais precisa da localização e da velocidade dos objetos.
Predição
No entanto, apenas conhecer a localização ou a velocidade dos objetos ao nosso redor não é suficiente. Também fazemos previsões sobre nossa trajetória e outras para evitar colisões. Se a trajetória do carro autônomo se aproxima perigosamente de outras trajetórias, devemos aumentar drasticamente o custo da trajetória para não escolher essa opção.Em um ambiente urbano, precisamos rastrear muito mais objetos, incluindo pedestres, ciclistas, carrinhos, scooters, etc ... Às vezes, o sinal manual dos motociclistas e a postura dos pedestres são informações críticas para determinar suas intenções. A palestra do TED abaixo apresenta alguns detalhes desse processo.
Previsão de trajetória baseada em modo ou aprendizado profundoPara prever trajetórias, podemos usar um método baseado em modelo ou um método de aprendizado profundo.
Para um método baseado em modelo, começamos com o modelo dinâmico de um objeto.
A cada etapa do tempo, monitoramos seu movimento previsto por seu modelo dinâmico e estimamos qual é a probabilidade dessas possíveis trajetórias.
Como alternativa, usamos o aprendizado profundo para localizar um objeto e calcular sua trajetória ou classificar sua intenção. Por exemplo, na imagem abaixo, detectamos que um motociclista está sinalizando uma curva à esquerda.
No entanto, apenas conhecer a localização ou a velocidade dos objetos ao nosso redor não é suficiente. Também fazemos previsões sobre nossa trajetória e outras para evitar colisões. Se a trajetória do carro autônomo se aproxima perigosamente de outras trajetórias, devemos aumentar drasticamente o custo da trajetória para não escolher essa opção.
Em um ambiente urbano, precisamos rastrear muito mais objetos, incluindo pedestres, ciclistas, carrinhos, scooters, etc ... Às vezes, o sinal manual dos motociclistas e a postura dos pedestres são informações críticas para determinar suas intenções. A palestra do TED abaixo apresenta alguns detalhes desse processo.
Previsão de trajetória baseada em modo ou aprendizado profundo
Para prever trajetórias, podemos usar um método baseado em modelo ou um método de aprendizado profundo.
Para um método baseado em modelo, começamos com o modelo dinâmico de um objeto.
A cada etapa do tempo, monitoramos seu movimento previsto por seu modelo dinâmico e estimamos qual é a probabilidade dessas possíveis trajetórias.
Como alternativa, usamos o aprendizado profundo para localizar um objeto e calcular sua trajetória ou classificar sua intenção. Por exemplo, na imagem abaixo, detectamos que um motociclista está sinalizando uma curva à esquerda.
Planejamento de comportamento
Em conjunto com um mapa, uma rota planejada para um destino e previsões, o planejador de comportamento faz sugestões sobre como manobrar um carro.
Nós somos fornecidos com muitas opções:- Faixa: mantenha a mesma faixa, troque a faixa para a esquerda / direita, passe o veículo à frente ou apenas prepare a troca de faixa.
- Velocidade: mantenha a mesma velocidade, siga o veículo à frente, diminua a velocidade ou acelere até a velocidade desejada ou pare.
Comece com diferentes objetivos de alto nível, como seguir o trânsito, passar carros em movimento lento ou acelerar até o limite de velocidade. Analisamos diferentes opções de como fazer isso acontecer. Por exemplo, mude para a faixa esquerda e acelere a 90 km / h ou reduza a velocidade para manter uma distância segura do carro à frente. Para cada plano, determinamos qual faixa usar e a velocidade desejada no final de nossa avaliação. Então calculamos a localização de acordo. Abaixo, apresentamos uma lista de locais (pontos amarelos) nos quais podemos querer que nosso carro esteja em, digamos, 2 segundos.
Em conjunto com um mapa, uma rota planejada para um destino e previsões, o planejador de comportamento faz sugestões sobre como manobrar um carro.
Nós somos fornecidos com muitas opções:
- Faixa: mantenha a mesma faixa, troque a faixa para a esquerda / direita, passe o veículo à frente ou apenas prepare a troca de faixa.
- Velocidade: mantenha a mesma velocidade, siga o veículo à frente, diminua a velocidade ou acelere até a velocidade desejada ou pare.
Comece com diferentes objetivos de alto nível, como seguir o trânsito, passar carros em movimento lento ou acelerar até o limite de velocidade. Analisamos diferentes opções de como fazer isso acontecer. Por exemplo, mude para a faixa esquerda e acelere a 90 km / h ou reduza a velocidade para manter uma distância segura do carro à frente. Para cada plano, determinamos qual faixa usar e a velocidade desejada no final de nossa avaliação. Então calculamos a localização de acordo. Abaixo, apresentamos uma lista de locais (pontos amarelos) nos quais podemos querer que nosso carro esteja em, digamos, 2 segundos.
Planejamento de trajetória
Depois de termos uma lista de locais candidatos, calculamos a trajetória de cada proposta. Mas antes disso, primeiro examinamos o sistema de coordenadas.Sistema de coordenadasA localização e o planejamento de rotas usam um sistema cartesiano global para definir um local (x, y).
No entanto, para o planejamento de trajetória, será mais fácil trabalhar em um sistema de coordenadas que segue a curva da estrada ( quadro Frenet ). No nosso exemplo abaixo, temos 3 pistas. d = 0 é o meio da estrada. d = -1 significa a faixa da direita. s mede a distância de um ponto específico ao longo da estrada. Então, em vez de ( x , y ), nossa localização de trajetória é medida como ( s , d ) no quadro Frenet.
Para fins de exibição, distorcemos o sistema de coordenadas Frenet da seguinte maneira:
Conversão entre os quadros cartesiano e FrenetUsaremos um mapa para converter coordenadas entre as coordenadas cartesianas e Frenet globais. No entanto, os pontos de referência do mapa podem estar mais distantes do que queremos. Por exemplo, o mapa abaixo tem apenas 3 pontos de referência (rosa). Para interpolar pontos no meio, usamos esses 3 pontos para ajustar um modelo de spline e usamos para executar a transformação.
Agora, vamos ver como as trajetórias são calculadas.Modelo de spline cúbicoDurante o planejamento do comportamento, propomos planos diferentes. Traduzimos isso em locais-alvo que queremos que nosso carro esteja em um horário específico. Usamos esse local de destino e alguns locais anteriores para construir uma curva spline cúbica para modelar nossa trajetória. Esse modelo de spline preserva a primeira e a segunda derivadas de nossas trajetórias anteriores, para que tenhamos uma condução mais suave (sem salto repentino na velocidade e aceleração). Posteriormente, usamos o modelo de spline para calcular onde o carro deve estar a cada 0,02 segundo no próximo segundo. Em seguida, essas informações são transferidas para o controlador para controlar os atuadores do veículo.
JMT (trajetória minimizada de empurrões)Como alternativa, podemos criar uma trajetória para minimizar o empurrão, que queremos minimizar acelerações repentinas. Matematicamente, definimos s como uma função polinomial do tempo t. Para minimizar o jerk, queremos encontrar uma trajetória ideal que minimize a magnitude acumulada da mudança de aceleração, ou seja, não há muitas mudanças repentinas de aceleração | a '(t) |:
Para conseguir isso, restringimos nosso polinômio s (t) a uma classificação de 5. Intuitivamente, a alta classificação de um polinômio permite movimentos repentinos. Por exemplo, uma função polinomial de classificação 9 abaixo permite curvas acentuadas.
Para simplificar o cálculo, redefinimos o tempo para 0 quando calculamos uma nova trajetória. Conhecemos nosso estado inicial (localização, velocidade, aceleração) em nosso sistema de automóveis.
e o planejamento do comportamento nos fornece o estado alvo:
Agora, queremos encontrar os 6 coeficientes em nosso modelo de trajetória:
No tempo = 0,
Portanto, os três primeiros coeficientes podem ser encontrados em nosso estado inicial. Repetimos se para o nosso estado-alvo:
Agora, temos mais 3 equações para que possamos resolver os 3 coeficientes restantes. Repetiremos o mesmo processo para encontrar o polinômio na direção d .
Exemplo
Idealmente, durante o planejamento do comportamento, não queremos mais aceleração ou mudança de faixa até o final de nossa trajetória planejada. Portanto, para o estado inicial ou de destino, eles devem ser:
Além disso, nosso plano quer que o carro atinja uma velocidade específica às vezes. (atingir o limite de velocidade ou corresponder à velocidade do carro na frente)
Aqui está o nosso resumo:
No entanto, em baixa velocidade, não podemos calcular s e d independentemente ( papel ). No nosso exemplo, tornamos d = constante para contornar o problema em baixa velocidade. (ou seja, não mudamos de faixa em baixa velocidade)
Depois de termos uma lista de locais candidatos, calculamos a trajetória de cada proposta. Mas antes disso, primeiro examinamos o sistema de coordenadas.
Sistema de coordenadas
A localização e o planejamento de rotas usam um sistema cartesiano global para definir um local (x, y).
No entanto, para o planejamento de trajetória, será mais fácil trabalhar em um sistema de coordenadas que segue a curva da estrada ( quadro Frenet ). No nosso exemplo abaixo, temos 3 pistas. d = 0 é o meio da estrada. d = -1 significa a faixa da direita. s mede a distância de um ponto específico ao longo da estrada. Então, em vez de ( x , y ), nossa localização de trajetória é medida como ( s , d ) no quadro Frenet.
Para fins de exibição, distorcemos o sistema de coordenadas Frenet da seguinte maneira:
Conversão entre os quadros cartesiano e Frenet
Usaremos um mapa para converter coordenadas entre as coordenadas cartesianas e Frenet globais. No entanto, os pontos de referência do mapa podem estar mais distantes do que queremos. Por exemplo, o mapa abaixo tem apenas 3 pontos de referência (rosa). Para interpolar pontos no meio, usamos esses 3 pontos para ajustar um modelo de spline e usamos para executar a transformação.
Agora, vamos ver como as trajetórias são calculadas.
Modelo de spline cúbico
Durante o planejamento do comportamento, propomos planos diferentes. Traduzimos isso em locais-alvo que queremos que nosso carro esteja em um horário específico. Usamos esse local de destino e alguns locais anteriores para construir uma curva spline cúbica para modelar nossa trajetória. Esse modelo de spline preserva a primeira e a segunda derivadas de nossas trajetórias anteriores, para que tenhamos uma condução mais suave (sem salto repentino na velocidade e aceleração). Posteriormente, usamos o modelo de spline para calcular onde o carro deve estar a cada 0,02 segundo no próximo segundo. Em seguida, essas informações são transferidas para o controlador para controlar os atuadores do veículo.
JMT (trajetória minimizada de empurrões)
Como alternativa, podemos criar uma trajetória para minimizar o empurrão, que queremos minimizar acelerações repentinas. Matematicamente, definimos s como uma função polinomial do tempo t. Para minimizar o jerk, queremos encontrar uma trajetória ideal que minimize a magnitude acumulada da mudança de aceleração, ou seja, não há muitas mudanças repentinas de aceleração | a '(t) |:
Para conseguir isso, restringimos nosso polinômio s (t) a uma classificação de 5. Intuitivamente, a alta classificação de um polinômio permite movimentos repentinos. Por exemplo, uma função polinomial de classificação 9 abaixo permite curvas acentuadas.
Para simplificar o cálculo, redefinimos o tempo para 0 quando calculamos uma nova trajetória. Conhecemos nosso estado inicial (localização, velocidade, aceleração) em nosso sistema de automóveis.
e o planejamento do comportamento nos fornece o estado alvo:
Agora, queremos encontrar os 6 coeficientes em nosso modelo de trajetória:
No tempo = 0,
Portanto, os três primeiros coeficientes podem ser encontrados em nosso estado inicial. Repetimos se para o nosso estado-alvo:
Agora, temos mais 3 equações para que possamos resolver os 3 coeficientes restantes. Repetiremos o mesmo processo para encontrar o polinômio na direção d .
Exemplo
Idealmente, durante o planejamento do comportamento, não queremos mais aceleração ou mudança de faixa até o final de nossa trajetória planejada. Portanto, para o estado inicial ou de destino, eles devem ser:
Além disso, nosso plano quer que o carro atinja uma velocidade específica às vezes. (atingir o limite de velocidade ou corresponder à velocidade do carro na frente)
Aqui está o nosso resumo:
No entanto, em baixa velocidade, não podemos calcular s e d independentemente ( papel ). No nosso exemplo, tornamos d = constante para contornar o problema em baixa velocidade. (ou seja, não mudamos de faixa em baixa velocidade)
Classificação de custo da trajetória
As trajetórias são classificadas usando uma função de custo. Dependendo da nossa política definida, ela inclui fatores como- as condições de contorno, o alvo desejado dos parâmetros de estado e
- a frequência correspondente e a magnitude das mudanças.
Por exemplo, a aceleração máxima é limitada pelo torque máximo de um carro. Portanto, não é viável uma trajetória que exija uma aceleração maior do que aquilo que ela pode fazer. Para evitar uma colisão, comparamos todas as trajetórias projetadas. Aumentamos drasticamente o custo quando a distância do carro cai abaixo de uma zona de segurança. Para eficiência, queremos dirigir o mais próximo possível do limite de velocidade legal.Também incluiremos mais parâmetros de estado no cálculo de custos. Por exemplo, adicionaremos o ângulo e a velocidade da direção para evitar capotamentos. No entanto, não contamos esses fatores igualmente. Para viabilidade e segurança, seus pesos são extremamente altos. Isso garante que não tomemos uma atitude inviável ou arriscada. Alguns outros pesos são ajustáveis. Portanto, para fatores menos críticos que envolvem conforto e eficiência, realizamos experimentos para encontrar um bom equilíbrio entre uma condução mais suave ou uma direção mais agressiva para obter a velocidade ideal.
Após calcular o custo de todas as trajetórias, selecionamos uma com o menor custo como nossa decisão final.
As trajetórias são classificadas usando uma função de custo. Dependendo da nossa política definida, ela inclui fatores como
- as condições de contorno, o alvo desejado dos parâmetros de estado e
- a frequência correspondente e a magnitude das mudanças.
Por exemplo, a aceleração máxima é limitada pelo torque máximo de um carro. Portanto, não é viável uma trajetória que exija uma aceleração maior do que aquilo que ela pode fazer. Para evitar uma colisão, comparamos todas as trajetórias projetadas. Aumentamos drasticamente o custo quando a distância do carro cai abaixo de uma zona de segurança. Para eficiência, queremos dirigir o mais próximo possível do limite de velocidade legal.
Também incluiremos mais parâmetros de estado no cálculo de custos. Por exemplo, adicionaremos o ângulo e a velocidade da direção para evitar capotamentos. No entanto, não contamos esses fatores igualmente. Para viabilidade e segurança, seus pesos são extremamente altos. Isso garante que não tomemos uma atitude inviável ou arriscada. Alguns outros pesos são ajustáveis. Portanto, para fatores menos críticos que envolvem conforto e eficiência, realizamos experimentos para encontrar um bom equilíbrio entre uma condução mais suave ou uma direção mais agressiva para obter a velocidade ideal.
Após calcular o custo de todas as trajetórias, selecionamos uma com o menor custo como nossa decisão final.
Produzir novo caminho
Agora uma trajetória ideal é selecionada. No nosso exemplo, calculamos os próximos 50 locais (com um intervalo de 0,02 segundo) usando o modelo matemático que construímos. isto é, 1 segundo de pontos de trajetória.
Nós o convertemos novamente na coordenada global. Essa coordenada x , y será usada pelo controlador do carro para manobrar o carro e para fins de localização. No entanto, geralmente não esperamos até que toda a trajetória seja concluída para a próxima trajetória. Freqüentemente, uma vez que tenhamos um novo conjunto de medidas, podemos recalcular uma nova trajetória.
Agora uma trajetória ideal é selecionada. No nosso exemplo, calculamos os próximos 50 locais (com um intervalo de 0,02 segundo) usando o modelo matemático que construímos. isto é, 1 segundo de pontos de trajetória.
Nós o convertemos novamente na coordenada global. Essa coordenada x , y será usada pelo controlador do carro para manobrar o carro e para fins de localização. No entanto, geralmente não esperamos até que toda a trajetória seja concluída para a próxima trajetória. Freqüentemente, uma vez que tenhamos um novo conjunto de medidas, podemos recalcular uma nova trajetória.
Bônus
Por diversão, essa é outra maneira de enviar seu Tesla para Marte se o planejamento de seu caminho estiver desativado.
Por diversão, essa é outra maneira de enviar seu Tesla para Marte se o planejamento de seu caminho estiver desativado.
Mais pensamentos
Este artigo descreve uma estrutura de osso de urso para o planejamento do caminho. Essa estrutura será ampliada e modificada para enfrentar o desafio da vida real, em particular para a condução urbana.Ao longo do artigo, mencionamos frequentemente a fusão e o controle de sensores. Para os interessados no aspecto técnico, aqui estão mais alguns artigos que você pode ler.
Este artigo descreve uma estrutura de osso de urso para o planejamento do caminho. Essa estrutura será ampliada e modificada para enfrentar o desafio da vida real, em particular para a condução urbana.
Ao longo do artigo, mencionamos frequentemente a fusão e o controle de sensores. Para os interessados no aspecto técnico, aqui estão mais alguns artigos que você pode ler.
Nenhum comentário:
Postar um comentário