Condução CAN

1. Introdução


O veículo não tripulado StarLine baseado na plataforma Lexus RX 450h é um projeto de pesquisa lançado em 2018. O projeto está aberto a profissionais ambiciosos da Comunidade de Código Aberto . Oferecemos a todos que participem do processo de desenvolvimento no nível do código, para testar seus algoritmos em um carro real equipado com equipamentos caros. Para controlar o carro, decidiu-se usar o Apollo, uma estrutura aberta. Para o Apollo funcionar, precisávamos conectar um conjunto de módulos. Esses módulos ajudam o programa a receber informações sobre o carro e controlá-lo de acordo com os algoritmos especificados.

Esses módulos incluem:

  • módulo para posicionar um carro no espaço usando coordenadas GPS;
  • módulo para direção, aceleração e frenagem de um carro;
  • módulo do estado dos sistemas automotivos: velocidade, aceleração, posição do volante, acionamento dos pedais, etc;
  • módulo para obter informações sobre o ambiente do carro. Sensores ultrassônicos, câmeras, radares e lidares podem lidar com isso.

Antes de tudo, nossa equipe enfrentou a tarefa de aprender a controlar o volante, a aceleração e a frenagem do carro. E também receba informações sobre o estado dos sistemas de automóveis. Para isso, muito trabalho foi feito para estudar o barramento Lexus CAN.

Parte teórica


O que é um barramento CAN?


Nos carros modernos, os sistemas eletrônicos assumiram o controle de todos os sistemas (Fig. 1.). Os componentes eletrônicos são computadores especializados, cada um dos quais possui todas as interfaces necessárias para a integração com um carro. Usando interfaces de comunicação digital, as unidades são conectadas em rede para trocar informações entre si. As interfaces digitais mais comuns em carros são CAN, LIN, FLEXRay. Destes, o CAN é mais amplamente utilizado.

O barramento CAN (Controller Area Network) é a rede padrão da indústria. Em 1986, esse padrão foi desenvolvido pela Bosch. E o primeiro carro com um ônibus CAN foi o Mercedes-Benz W140, lançado em 1991. O padrão foi desenvolvido para permitir que os dispositivos se comuniquem sem um host. As informações são trocadas usando mensagens especiais, que consistem em campos de ID, comprimento e dados da mensagem. Cada bloco possui seu próprio conjunto de IDs. Nesse caso, uma mensagem com um ID menor tem prioridade no barramento. O campo de dados pode transportar informações, por exemplo, sobre o status de sistemas e sensores, comandos para controlar mecanismos etc.

imagem
Fig. 1. Barramento CAN do veículo.

No nível físico, o barramento é um par trançado de condutores de cobre. O sinal é transmitido diferencial, devido ao qual é alcançada alta imunidade ao ruído.

imagem
Fig. 2. Representação física do sinal no barramento CAN

Através do barramento CAN, você pode receber informações sobre o status de vários sensores e sistemas de veículos. Também via CAN, você pode controlar os componentes do carro. São essas oportunidades que usamos para o nosso projeto.

Escolhemos o Lexus RX porque sabíamos que poderíamos gerenciar todos os nós necessários via CAN. Desde que a coisa mais difícil ao pesquisar um carro é protocolos fechados. Portanto, um dos motivos para a escolha desse modelo de carro específico foi a presença de uma descrição da parte do protocolo de barramento CAN no projeto de código aberto Openpilot.

Dirigir adequadamente um carro significa entender como as partes mecânicas dos sistemas de um carro funcionam. Precisávamos ter um bom entendimento de como trabalhar com um amplificador de potência elétrica ou controlar a desaceleração de um carro. De fato, por exemplo, quando as rodas são giradas, elas criam resistência à direção, o que introduz restrições na direção ao girar. Alguns sistemas não podem ser usados ​​sem entrar no carro em modos operacionais especiais. Tivemos que estudar esses e outros detalhes no processo.

Direção assistida elétrica


Direção assistida elétrica O EPS (Direção assistida elétrica) é um sistema projetado para reduzir a força da direção ao girar (Fig. 3). O prefixo "electro" fala sobre o tipo de sistema - elétrico. Dirigir o volante com este sistema se torna confortável, o motorista gira o volante na direção certa e o motor elétrico ajuda a girá-lo no ângulo desejado.

Um amplificador de potência elétrica é instalado no eixo de direção de um carro, cujas partes são interconectadas por um eixo de torção. Um sensor de torque (Sensor de torque) é montado no eixo de torção. Quando o volante gira, o eixo de torção torce, o que é registrado pelo sensor de torque. Os dados recebidos do sensor de torque, dos sensores de velocidade e das rotações do virabrequim são enviados à unidade de controle eletrônico da ECU. E a ECU, por sua vez, já calcula a força de compensação necessária e dá um comando ao motor elétrico do amplificador.

imagem
Fig. 3. Diagrama esquemático do sistema de direção hidráulica


Vídeo: O sistema LKA dirige um carro usando o sistema EPS.

Pedal eletrônico


O acelerador é um mecanismo para ajustar a quantidade de mistura de combustível que cairá no motor. Quanto mais mistura fica, mais rápido o carro passa.
O pedal do acelerador eletrônico é um sistema que envolve a operação de vários componentes eletrônicos. O sinal sobre a posição do pedal, quando pressionado, entra na unidade de controle do motor ECM (Módulo de Controle do Motor). O ECM, com base nesse sinal, calcula a quantidade necessária de combustível que deve ser fornecida ao motor. Dependendo da quantidade de combustível necessária, o ECM ajusta o ângulo de abertura do acelerador.

imagem
Fig. 4. O sistema eletrônico de pedal do acelerador.


Vídeo: O pedal eletrônico do acelerador é usado para operar o controle de cruzeiro.

Sistemas eletrônicos de assistência ao motorista


Compramos um carro equipado com uma variedade de unidades digitais e sistemas de assistência ao motorista (ADAS). Em nosso projeto, usamos LKA, ACC e PCS.

O LKA (Lane Keep Assist) é um sistema de retenção de tira que consiste em uma câmera frontal e uma unidade de computação. O LKA mantém o carro na pista quando o motorista, por exemplo, está distraído. Os algoritmos na unidade de computação recebem dados da câmera e, com base neles, tomam uma decisão sobre as condições do carro na estrada. O sistema é capaz de entender que o carro está se movendo incontrolavelmente em direção à faixa direita ou esquerda. Nesses casos, um bipe soa para atrair a atenção do motorista. Ao atravessar a pista, o próprio sistema ajustará o ângulo de rotação das rodas para que o carro permaneça na pista. O sistema só deve intervir se perceber que a manobra entre as faixas não foi causada pelo motorista.

ACC (Adaptive Cruise Control) - um sistema de controle de cruzeiro adaptável que permite definir a velocidade desejada. O carro em si acelera e diminui a velocidade para manter a velocidade desejada, enquanto o motorista pode retirar o pé dos pedais do acelerador e do freio. Este modo é conveniente de usar ao dirigir em rodovias e rodovias. O controle de cruzeiro adaptável é capaz de ver obstáculos na frente do carro e diminuir a velocidade para evitar colisão com eles. Se outro veículo a uma velocidade menor avançar, o ACC diminuirá a velocidade e seguirá. Quando um objeto estático é detectado, o ACC fica mais lento até parar. Para detectar objetos na frente do carro, esse sistema usa um radar com um alcance de comprimento de onda milimétrico. Normalmente, esses radares operam a uma frequência de 24 a 72 GHz e são capazes de ver objetos com confiança a uma distância de 300 metros. O radar é geralmente instalado atrás do crachá frontal na grade.

PCS (Sistema de Pré-Colisão) - sistema de prevenção de colisões. O sistema foi projetado para evitar uma colisão com um carro que está se movendo na frente. Quando uma colisão é inevitável, o sistema minimiza os danos à colisão. Ele também usa radar para estimar a distância do objeto e uma câmera frontal para seu reconhecimento. A frente do PCS prevê a probabilidade de uma colisão com base na velocidade do veículo, distância do objeto e sua velocidade. Normalmente, um sistema possui dois estágios de operação. A primeira etapa - o sistema soa e é exibido no painel notificando o motorista do perigo. O segundo estágio - a frenagem de emergência é ativada usando o sistema ABS e os pré-tensores do cinto de segurança são ativados.

Parte prática


Volante


A primeira coisa que nossa equipe queria fazer foi aprender a dirigir. O volante de um carro pode ser controlado por dois sistemas: assistente de estacionamento IPAS (Intelligent Park Assist) e LKA.

O IPAS permite definir o ângulo da direção em graus diretamente. Como nosso carro não possui esse sistema, é impossível verificar e controlar a direção dessa maneira.

Portanto, estudamos os circuitos elétricos do carro e descobrimos quais barramentos CAN poderiam ser úteis. Conectamos um analisador de barramento CAN. O log contém um arquivo de registros de mensagens no barramento em sequência cronológica. Nossa tarefa era encontrar equipes de direção hidráulica EPS (Direção Elétrica). Pegamos o registro do volante de um lado para o outro; no registro, encontramos as leituras do ângulo de rotação e a velocidade de rotação do volante. Abaixo está um exemplo de alteração de dados no barramento CAN. Os dados de interesse para nós são destacados com um marcador.

imagem
Direção de 360 ​​graus à esquerda

imagem
Gire o volante 270 graus para a direita

Na próxima etapa, examinamos o sistema de retenção de faixas. Para isso, fomos a uma rua tranqüila e registramos os registros de troca entre a unidade de manutenção da pista e a DSU (Driving Support ECU). Usando o analisador de barramento CAN, conseguimos calcular as mensagens do sistema LKA. A Figura 6 mostra o comando de controle EPS.

imagem
Fig. 5. Comando de direção usando o sistema LKA

O LKA controla o volante, definindo o valor do torque no eixo (STEER_TORQUE_CMD) do volante. O comando é aceito pelo módulo EPS. Cada mensagem contém um valor de contador (COUNTER) no cabeçalho, que é incrementado a cada envio. O campo LKA_STATE contém informações de status do LKA. Para capturar o controle, você deve definir o bit STEER_REQUEST.

As mensagens responsáveis ​​pela operação de sistemas automáticos importantes são protegidas por uma soma de verificação (CHECKSUM) para minimizar os riscos de alarmes falsos. O carro ignorará esse comando se a mensagem contiver uma soma de verificação ou valor do contador incorreto. Essa é uma proteção criada pelo fabricante contra interferência de sistema de terceiros e interferência na linha de comunicação.

O gráfico (Fig. 6.) mostra o diagrama de operação do LKA. Sensor de torque - valor do sensor de torque no eixo de torção. O Torque Cmd é uma equipe do LKA para a direção. A imagem mostra como o LKA é direcionado para segurar o carro na pista. Ao atravessar o zero, o sentido de rotação do volante muda. I.e. um sinal negativo indica uma curva para a direita, um valor positivo para a esquerda. Manter o comando em zero indica falta de controle do LKA. Com a intervenção do motorista, o sistema deixa de emitir controle. O LKA detecta a intervenção do motorista com um segundo sensor de torque no eixo do lado do volante.

imagem
Fig. 6. Cronograma do sistema LKA

Tivemos que verificar o trabalho da equipe de direção. Usando o módulo StarLine Sigma 10, preparamos o firmware para o teste de controle. O StarLine Sigma 10 deve emitir comandos no volante para girar o volante para a esquerda ou direita. Naquela época, não tínhamos uma interface gráfica para controlar o módulo, então tivemos que usar os meios padrão do carro. Encontramos o status da posição da alavanca de controle de cruzeiro no barramento CAN e programamos o módulo de modo que a posição superior da alavanca levasse o volante a girar para a direita, a posição inferior - a girar para a esquerda (Fig. 7).

imagem
Fig. 7. As primeiras tentativas de dirigir

O vídeo mostra que o controle é realizado em seções curtas. Isso ocorre por vários motivos.

A primeira razão é a falta de feedback. Se a discrepância entre o sinal Torque Cmd e o sensor de torque exceder um determinado valor Δ, o sistema para automaticamente de aceitar comandos (Fig. 8). Definimos o algoritmo para ajustar o comando de saída (Torque CMD), dependendo do valor do torque no eixo (Torque Sensor).

imagem
Fig. 8. Discrepância de sinal leva a erro no sistema

A restrição a seguir está relacionada ao sistema de segurança incorporado no EPS. O sistema EPS não permite que as equipes da LKA conduzam uma ampla variedade. O que é bastante lógico, porque ao dirigir na estrada, manobras repentinas não são seguras. Assim, quando o valor limite do torque no eixo é excedido, o sistema LKA gera um erro e desliga (Fig. 9).

imagem
Fig. 9. Exceder o valor limite do controle de torque no eixo

Independentemente de o sistema LKA estar ativado ou não, mensagens com comandos dele estão constantemente presentes no barramento. Instruímos o módulo EPS a girar as rodas com uma força específica para a esquerda ou direita. Enquanto isso, o LKA interrompe nossos pacotes com mensagens "vazias". Depois de nossa equipe com o valor do momento, o padrão vem com zero (Fig. 10).

imagem
Fig. 10. Mensagens regulares vêm com valores de momento zero e interrompem nosso controle

Em seguida, usando o módulo StarLine Sigma 10, conseguimos filtrar todo o tráfego do LKA e bloquear mensagens com o ID 2E4 quando necessário. Isso resolveu o problema e conseguimos obter um controle de direção suave (Fig. 11).

imagem
Fig. 11. Ajuste suave do volante sem erros

Gerenciamento de gás


O sistema ACC Adaptive Cruise Control controla o software de aceleração e frenagem através do barramento CAN. A unidade de controle do motor da ECU recebe comandos DSU; se você precisar acelerar, ativa o pedal do acelerador eletrônico. A frenagem regenerativa é usada para frear o carro. Nesse caso, um comando é usado para frenagem e aceleração, apenas os valores diferem.

O comando de controle de aceleração ou desaceleração é mostrado na Figura 12. Ele consiste no valor de aceleração ACCEL_CMD, um par de bits de sobrecarga e uma soma de verificação de soma de verificação. Para a aceleração do veículo, ACCEL_CMD é positivo; para a desaceleração, negativo. A aceleração é definida no intervalo de 0 a 3 m / s ^ 2, a desaceleração é semelhante, mas com um sinal de menos. Para enviar dados para o barramento, é necessário recalcular a aceleração ou desaceleração desejada com um coeficiente de 0,001. Por exemplo, para acelerar 1 m / s ^ 2, ACCEL_CMD = 1000 (0x03E8).

imagem
Fig. 12. O comando para controlar a aceleração / desaceleração do carro

Removemos os logs do sistema ACC padrão e analisamos as equipes. Comparado com a nossa descrição das equipes e iniciado o teste.

imagem
Fig. 13. Registro de aceleração / desaceleração do ACC Cruise Control adaptativo (realçado com um marcador)

Não foi sem dificuldades. Dirigimos em uma estrada com tráfego intenso para testar a equipe de aceleração. Os comandos de controle de aceleração ou desaceleração do veículo funcionam apenas quando o controle de cruzeiro está ativado, não é suficiente ativá-lo com o botão É necessário encontrar o carro se movendo na frente e ativar o seguinte modo.

imagem
Fig. 14. A ativação do controle de cruzeiro ocorre quando há outro veículo à frente

Usando o módulo StarLine Sigma 10, enviamos um comando de aceleração e o carro começa a ganhar velocidade. Nesse ponto, conectamos a interface gráfica para controlar o módulo StarLine Sigma 10. Agora controlamos o volante, a aceleração e a frenagem usando os botões do aplicativo.

As equipes trabalharam até perder o carro à frente. O sistema de controle de cruzeiro foi desligado e, portanto, os comandos de aceleração pararam de funcionar.
Começamos a estudar a possibilidade de usar equipes sem controle de cruzeiro ativo. Eu tive que gastar muito tempo analisando os dados no barramento CAN para entender como criar as condições para as equipes trabalharem. Em primeiro lugar, estávamos interessados ​​em qual bloco bloqueia a execução de comandos do ACC para aceleração ou desaceleração. Eu tive que estudar quais IDs vêm do DSU, LKA, radar e câmera, afastar os dados falsos de vários sensores.

A decisão veio três semanas depois. Naquela época, tínhamos uma idéia de como os blocos do carro interagem, realizamos um estudo do tráfego de mensagens e identificamos grupos de mensagens enviadas por cada bloco. O ECU de Suporte à Direção (DSU) é responsável pelo controle de cruzeiro adaptativo ACC. O DSU emite comandos para acelerar e desacelerar o carro, e é essa unidade que recebe dados do radar de alcance milimétrico. O radar indica ao DSU a que distância da máquina o objeto está se movendo, a que velocidade relativa e determina sua posição horizontal (à esquerda, direita ou centro).

Nossa idéia era substituir os dados do radar. Removemos o registro para seguir o carro e retiramos os dados do radar no momento seguinte. Agora, depois de ativar o controle de cruzeiro, enviamos dados falsos sobre a presença de um carro na frente. Acontece que enganamos nosso carro, dizendo que outro carro na frente se move a uma distância específica.

a) imagem b) imagem
Fig. 15. Ativação de cruzeiro: a) tentativa de ativar sem substituir os dados do radar; b) ativação ao substituir dados do radar.

Quando começamos nosso obstáculo, no painel o ícone de presença do veículo na frente fica aceso. Agora podemos testar nossa administração. Iniciamos o comando de aceleração e o carro começa a acelerar rapidamente.

Como já aprendemos, o comando de aceleração e desaceleração é um. Portanto, eles imediatamente verificaram a desaceleração. Fomos a velocidade com o controle de cruzeiro ativo, lançamos um comando de frenagem e o carro diminuiu a velocidade imediatamente.

Como resultado, agora ele acelera e desacelera o carro exatamente como precisávamos.

O objetivo é alcançado.

O que mais usamos


Para criar um drone, é necessário controlar sistemas auxiliares: piscas, luzes de freio, alarmes, buzina, etc. Tudo isso também pode ser controlado através do barramento CAN.

Hardware e software


Para trabalhar com o carro hoje, usamos um conjunto de vários equipamentos:

  • O Marathon Bus Analyzer permite conectar e ler dados de dois barramentos simultaneamente. O site do fabricante do analisador possui um software de análise de log gratuito. Mas usamos software escrito em nossa empresa para uso interno.
  • StarLine 10 . CAN LIN . C, . CAN-. , ID .
  • Toyota/Lexus. : , -, , .

Hoje, está em andamento um trabalho ativo para desenvolver um veículo não tripulado, em um futuro próximo, a implementação da frenagem de emergência diante de obstáculos, seu desvio e a reestruturação da rota do carro, dependendo da situação do tráfego e das instruções do motorista.

O veículo não tripulado StarLine é uma plataforma aberta para combinar as melhores mentes de engenharia da Rússia e do mundo com o objetivo de criar tecnologias avançadas de direção não tripulada que tornarão nosso futuro seguro e confortável.

Projeto Gitlab

Source: https://habr.com/ru/post/pt450140/


All Articles