PUEDE conducir

Introduccion


El vehículo no tripulado StarLine basado en la plataforma Lexus RX 450h es un proyecto de investigación lanzado en 2018. El proyecto está abierto a profesionales ambiciosos de la comunidad de código abierto . Ofrecemos a todos participar en el proceso de desarrollo a nivel de código, para probar sus algoritmos en un automóvil real equipado con equipo costoso. Para controlar el automóvil, se decidió utilizar Apollo, un marco abierto. Para que Apollo funcione, necesitábamos conectar un conjunto de módulos. Estos módulos ayudan al programa a recibir información sobre el automóvil y a controlarlo de acuerdo con los algoritmos especificados.

Estos módulos incluyen:

  • módulo para posicionar un automóvil en el espacio utilizando coordenadas GPS;
  • módulo para dirección, aceleración y frenado de un automóvil;
  • módulo del estado de los sistemas del automóvil: velocidad, aceleración, posición del volante, pisar los pedales, etc.
  • Módulo para obtener información sobre el entorno del automóvil. Los sensores ultrasónicos, cámaras, radares y lidares pueden manejar esto.

En primer lugar, nuestro equipo se enfrentó a la tarea de aprender a controlar el volante, la aceleración y el frenado del automóvil. Y también recibir información sobre el estado de los sistemas de automóviles. Para esto, se hizo mucho trabajo para estudiar el bus CAN de Lexus.

Parte teórica


¿Qué es un bus CAN?


En los automóviles modernos, los sistemas electrónicos tomaron el control de todos los sistemas (Fig. 1.). Los componentes electrónicos son computadoras especializadas, cada una de las cuales tiene todas las interfaces necesarias para la integración con un automóvil. Utilizando interfaces de comunicación digital, las unidades se conectan en red para intercambiar información entre ellas. Las interfaces digitales más comunes en automóviles son CAN, LIN, FLEXRay. De estos, CAN es el más utilizado.

El bus CAN (Controller Area Network) es la red estándar de la industria. En 1986, esta norma fue desarrollada por Bosch. Y el primer automóvil con un bus CAN fue el Mercedes-Benz W140, lanzado en 1991. El estándar fue desarrollado para permitir que los dispositivos se comuniquen entre sí sin un host. La información se intercambia utilizando mensajes especiales, que consisten en campos de identificación, longitud del mensaje y datos. Cada bloque tiene su propio conjunto de ID. En este caso, un mensaje con una ID más baja tiene prioridad en el bus. El campo de datos puede transportar información, por ejemplo, sobre el estado de los sistemas y sensores, comandos para controlar mecanismos, etc.

imagen
Fig. 1. Vehículo CAN bus.

A nivel físico, el bus es un par trenzado de conductores de cobre. La señal se transmite diferencial, debido a que se logra una alta inmunidad al ruido.

imagen
Fig. 2. Representación física de la señal en el bus CAN

A través del bus CAN, puede recibir información sobre el estado de varios sensores y sistemas del vehículo. También a través de CAN, puede controlar los componentes del automóvil. Son estas oportunidades las que usamos para nuestro proyecto.

Elegimos Lexus RX porque sabíamos que podíamos administrar todos los nodos necesarios a través de CAN. Dado que lo más difícil al investigar un automóvil es protocolos cerrados. Por lo tanto, una de las razones para elegir este modelo de automóvil en particular fue la presencia de una descripción de la parte del protocolo del bus CAN en el proyecto de código abierto Openpilot.

Conducir un automóvil correctamente significa comprender cómo funcionan las partes mecánicas de los sistemas de un automóvil. Necesitábamos tener una buena comprensión de cómo trabajar con un amplificador de potencia eléctrica o controlar la desaceleración de un automóvil. De hecho, por ejemplo, cuando se giran las ruedas, crean resistencia a la dirección, lo que introduce restricciones en la dirección al girar. Algunos sistemas no se pueden usar sin ingresar al automóvil en modos de operación especiales. Tuvimos que estudiar estos y otros detalles en el proceso.

Dirección asistida eléctrica


Dirección asistida eléctrica EPS (Dirección asistida eléctrica) es un sistema diseñado para reducir la fuerza de dirección al girar (Fig. 3). El prefijo "electro" se refiere al tipo de sistema: eléctrico. Dirigir el volante con este sistema se vuelve cómodo, el conductor gira el volante en la dirección correcta y el motor eléctrico ayuda a girarlo al ángulo deseado.

Se instala un amplificador de potencia eléctrica en el eje de dirección de un automóvil, cuyas partes están interconectadas por un eje de torsión. Un sensor de torque (sensor de torque) está montado en el eje de torsión. Cuando el volante gira, el eje de torsión gira, lo cual es registrado por el sensor de torque. Los datos recibidos del sensor de par, los sensores de velocidad y las revoluciones del cigüeñal se envían a la unidad de control electrónico de la ECU. Y la ECU, a su vez, ya calcula la fuerza de compensación necesaria y le da un comando al motor eléctrico del amplificador.

imagen
Fig. 3. Diagrama esquemático del sistema de dirección asistida eléctrica.


Video: El sistema LKA dirige un automóvil usando el sistema EPS.

Pedal de gas electrónico


El acelerador es un mecanismo para ajustar la cantidad de mezcla de combustible que caerá en el motor. Cuanta más mezcla tenga, más rápido va el auto.
El acelerador electrónico es un sistema que involucra la operación de varios componentes electrónicos. La señal sobre la posición del pedal, cuando se presiona, ingresa a la unidad de control del motor ECM (Módulo de control del motor). El ECM, en base a esta señal, calcula la cantidad requerida de combustible que se debe suministrar al motor. Dependiendo de la cantidad de combustible necesaria, el ECM ajusta el ángulo de apertura del acelerador.

imagen
Fig. 4. El sistema electrónico de pedal de gas.


Video: El pedal electrónico de gas se usa para operar el control de crucero.

Sistemas electrónicos de asistencia al conductor


Compramos un automóvil que está equipado con una variedad de unidades digitales y sistemas de asistencia al conductor (ADAS). En nuestro proyecto utilizamos LKA, ACC y PCS.

LKA (Lane Keep Assist) es un sistema de retención de banda que consta de una cámara frontal y una unidad de computación. LKA mantiene el auto en el carril cuando el conductor, por ejemplo, está distraído. Los algoritmos en la unidad de computación reciben datos de la cámara y, en función de ellos, toman una decisión sobre el estado del automóvil en la carretera. El sistema puede comprender que el automóvil se mueve incontrolablemente hacia el carril derecho o izquierdo. En tales casos, suena un pitido para atraer la atención del conductor. Al cruzar el carril, el propio sistema ajustará el ángulo de rotación de las ruedas para que el automóvil permanezca en el carril. El sistema solo debe intervenir si se da cuenta de que la maniobra entre los carriles no fue causada por el conductor.

ACC (control de crucero adaptativo): un sistema de control de crucero adaptativo que le permite establecer la velocidad deseada. El automóvil mismo acelera y disminuye la velocidad para mantener la velocidad deseada, mientras que el conductor puede quitar el pie del acelerador y los pedales de freno. Este modo es conveniente de usar al conducir en autopistas y autopistas. El control de crucero adaptativo puede ver los obstáculos en frente del automóvil y reducir la velocidad para evitar colisiones con ellos. Si otro vehículo a una velocidad menor conduce hacia adelante, el ACC disminuirá la velocidad y lo seguirá. Cuando se detecta un objeto estático, el ACC se ralentizará hasta que se detenga. Para detectar objetos en frente del automóvil, dicho sistema utiliza un radar con un rango de longitud de onda milimétrica. Por lo general, estos radares funcionan a una frecuencia de 24-72 GHz y pueden ver objetos con confianza a una distancia de 300 metros. El radar generalmente se instala detrás de la placa frontal en la rejilla.

PCS (Pre-Collision System): sistema anticolisión. El sistema está diseñado para evitar una colisión con un automóvil que se está moviendo al frente. Cuando una colisión es inevitable, el sistema minimiza el daño por colisión. También utiliza el radar para estimar la distancia al objeto y una cámara frontal para su reconocimiento. El frente de PCS predice la probabilidad de una colisión en función de la velocidad del vehículo, la distancia al objeto y su velocidad. Típicamente, un sistema tiene dos etapas de operación. La primera etapa: el sistema suena y las pantallas en el tablero notifican al conductor del peligro. La segunda etapa: el frenado de emergencia se activa mediante el sistema ABS y se activan los pretensores del cinturón de seguridad.

Parte práctica


Volante


Lo primero que nuestro equipo quería hacer era aprender a conducir. El volante de un automóvil puede controlarse mediante dos sistemas: el asistente de estacionamiento IPAS (Intelligent Park Assist) y el LKA.

IPAS le permite establecer el ángulo de dirección en grados directamente. Dado que nuestro automóvil no tiene este sistema, es imposible verificar y dominar la dirección de esta manera.

Por lo tanto, estudiamos los circuitos eléctricos del automóvil y nos dimos cuenta de qué autobuses CAN podrían ser útiles. Conectamos un analizador de bus CAN. El registro contiene un archivo de registros de mensajes en el bus en secuencia cronológica. Nuestra tarea era encontrar equipos de dirección asistida de EPS (dirección asistida eléctrica). Tomamos el registro del volante de lado a lado, en el registro pudimos encontrar las lecturas del ángulo de rotación y la velocidad de rotación del volante. A continuación se muestra un ejemplo de cambio de datos en el bus CAN. Los datos que nos interesan se resaltan con un marcador.

imagen
Dirección de 360 ​​grados a la izquierda

imagen
Gire el volante 270 grados a la derecha

En el siguiente paso, examinamos el sistema de retención de carril. Para hacer esto, fuimos a una calle tranquila y registramos los registros de intercambio entre la unidad de retención de carriles y el DSU (Driving Support ECU). Usando el analizador de bus CAN, pudimos calcular mensajes del sistema LKA. La Figura 6 muestra el comando de control EPS.

imagen
Fig. 5. Comando de dirección utilizando el sistema LKA

El LKA controla el volante configurando el valor de torque en el eje (STEER_TORQUE_CMD) del volante. El comando es aceptado por el módulo EPS. Cada mensaje contiene un valor de contador (COUNTER) en el encabezado, que se incrementa con cada envío. El campo LKA_STATE contiene información de estado de LKA. Para capturar el control, debe establecer el bit STEER_REQUEST.

Los mensajes que son responsables de la operación de sistemas automáticos importantes están protegidos por una suma de verificación (CHECKSUM) para minimizar los riesgos de falsas alarmas. El automóvil ignorará dicho comando si el mensaje contiene una suma de verificación o valor de contador incorrectos. Esta es una protección construida por el fabricante contra la interferencia del sistema de terceros y la interferencia en la línea de comunicación.

El gráfico (Fig. 6.) muestra el diagrama de operación de LKA. Sensor de torque: valor del sensor de torque en el eje de torsión. Torque Cmd es un equipo de LKA para la dirección. La imagen muestra cómo se dirige el LKA para mantener el automóvil en el carril. Al cruzar a través de cero, cambia la dirección de rotación del volante. Es decir una señal negativa indica un giro a la derecha, un valor positivo a la izquierda. Mantener el comando en cero indica una falta de control por parte de la LKA. Con la intervención del conductor, el sistema deja de emitir control. LKA detecta la intervención del conductor con un segundo sensor de torque en el eje desde el lado del volante.

imagen
Fig. 6. Calendario del sistema LKA

Tuvimos que verificar el trabajo del equipo directivo. Usando el módulo StarLine Sigma 10, preparamos el firmware para las pruebas de control. StarLine Sigma 10 debe emitir comandos al volante para girar el volante hacia la izquierda o hacia la derecha. En ese momento, no teníamos una interfaz gráfica para controlar el módulo, por lo que tuvimos que usar los medios estándar del automóvil. Encontramos el estado de la posición de la palanca de control de crucero en el bus CAN y programamos el módulo de tal manera que la posición superior de la palanca llevó al volante a girar a la derecha, a la posición inferior, a girar a la izquierda (Fig.7).

imagen
Fig. 7. Los primeros intentos de dirigir

El video muestra que el control se lleva a cabo en secciones cortas. Esto ocurre por varias razones.

La primera razón es la falta de comentarios. Si la discrepancia entre la señal Cmd de torque y el sensor de torque excede un cierto valor Δ, el sistema automáticamente deja de aceptar comandos (Fig. 8). Configuramos el algoritmo para ajustar el comando de salida (Torque CMD) dependiendo del valor del par en el eje (Torque Sensor).

imagen
Fig. 8. La discrepancia de señal conduce a un error del sistema

La siguiente restricción está relacionada con el sistema de seguridad integrado en EPS. El sistema EPS no permite que los equipos de LKA se dirijan en un amplio rango. Lo cual es bastante lógico, porque Al conducir en la carretera, las maniobras repentinas no son seguras. Por lo tanto, cuando se excede el valor umbral del par en el eje, el sistema LKA genera un error y se apaga (Fig. 9).

imagen
Fig. 9. Exceder el valor umbral del control de torque en el eje

Independientemente de si el sistema LKA está activado o no, los mensajes con comandos del mismo están constantemente presentes en el bus. Le indicamos al módulo EPS que gire las ruedas con una fuerza específica hacia la izquierda o hacia la derecha. Mientras tanto, LKA interrumpe nuestros paquetes con mensajes "vacíos". Después de nuestro equipo con el valor del momento, el estándar viene con cero (Fig. 10).

imagen
Fig. 10. Los mensajes regulares vienen con valores de momento cero e interrumpen nuestro control

Luego, utilizando el módulo StarLine Sigma 10, pudimos filtrar todo el tráfico de LKA y bloquear mensajes con ID 2E4 cuando lo necesitábamos. Esto resolvió el problema, y ​​logramos obtener un control de dirección suave (Fig. 11).

imagen
Fig. 11. Ajuste suave del volante sin errores

Gestión de gas


El sistema ACC Adaptive Cruise Control controla el software de aceleración y frenado a través del bus CAN. La unidad de control del motor de la ECU recibe comandos DSU, si necesita acelerar, activa el pedal de aceleración electrónico. El frenado regenerativo se usa para frenar el automóvil. En este caso, se usa un comando para frenar y acelerar, solo los valores difieren.

El comando de control de aceleración o desaceleración se muestra en la Figura 12. Consiste en el valor de aceleración ACCEL_CMD, un par de bits superiores y una suma de comprobación de suma de control. Para la aceleración del vehículo, ACCEL_CMD es positivo; para la desaceleración, negativo. La aceleración se establece en el rango de 0 a 3 m / s ^ 2, la desaceleración es similar, pero con un signo menos. Para enviar datos al bus, es necesario volver a calcular la aceleración o desaceleración deseada con un coeficiente de 0.001. Por ejemplo, para acelerar 1 m / s ^ 2, ACCEL_CMD = 1000 (0x03E8).

imagen
Fig. 12. El comando para controlar la aceleración / desaceleración del automóvil.

Eliminamos los registros del sistema ACC estándar y analizamos los equipos. En comparación con nuestra descripción de los equipos y comenzó a probar.

imagen
Fig. 13. Registro de aceleración / desaceleración del control de crucero adaptativo ACC (resaltado con un marcador)

No fue sin dificultades. Condujimos por una carretera con mucho tráfico para probar el equipo de aceleración. Los comandos de control de aceleración o desaceleración del vehículo funcionan solo cuando el control de crucero está activado, no es suficiente activarlo con el botón. Es necesario encontrar el auto en movimiento al frente y encender el siguiente modo.

imagen
Fig. 14. La activación del control de crucero ocurre cuando hay otro vehículo adelante

Usando el módulo StarLine Sigma 10, enviamos un comando de aceleración y el automóvil comienza a acelerar. En este punto, conectamos la interfaz gráfica para controlar el módulo StarLine Sigma 10. Ahora controlamos el volante, la aceleración y el frenado utilizando los botones de la aplicación.

Los equipos trabajaron hasta que perdieron el auto por delante. El sistema de control de crucero se apagó y, por lo tanto, los comandos de aceleración dejaron de funcionar.
Comenzamos a estudiar la posibilidad de utilizar equipos sin control de crucero activo. Tuve que pasar mucho tiempo analizando los datos en el bus CAN para comprender cómo crear las condiciones para que los equipos trabajen. Nos interesó, en primer lugar, qué bloque bloquea la ejecución de los comandos ACC para la aceleración o desaceleración. Tuve que estudiar qué identificaciones provienen de DSU, LKA, radar y cámara, sin los datos falsos de varios sensores.

La decisión llegó 3 semanas después. En ese momento, teníamos una idea de cómo interactúan los bloques del automóvil, realizamos un estudio del tráfico de mensajes e identificamos grupos de mensajes enviados por cada bloque. Driving Support ECU (DSU) es responsable del control de crucero adaptativo ACC. El DSU emite comandos para acelerar y desacelerar el automóvil, y es esta unidad la que recibe datos del radar de alcance milimétrico. El radar le dice al DSU a qué distancia de la máquina se mueve el objeto, a qué velocidad relativa y determina su posición horizontal (a la izquierda, derecha o centro).

Nuestra idea era reemplazar los datos del radar. Eliminamos el registro para seguir al automóvil, sacamos los datos del radar al momento de seguirlo. Ahora, después de encender el control de crucero, enviamos datos falsos sobre la presencia de un automóvil en el frente. Resulta engañar a nuestro automóvil, diciendo que otro automóvil en el frente se mueve a una distancia específica.

a) imagen b) imagen
Fig. 15. Activación de crucero: a) intento de activación sin reemplazar los datos del radar; b) activación al reemplazar datos del radar.

Cuando comenzamos nuestro inconveniente, en el tablero de instrumentos se enciende el ícono de presencia del vehículo en la parte delantera. Ahora podemos probar nuestra gestión. Iniciamos el comando de aceleración y el automóvil comienza a acelerar rápidamente.

Como ya aprendimos, el comando de aceleración y desaceleración es uno. Por lo tanto, verificaron de inmediato la desaceleración. Fuimos a velocidad con el control de crucero activo, lanzamos un comando de frenado y el automóvil disminuyó la velocidad de inmediato.

Como resultado, ahora resulta acelerar y frenar el automóvil exactamente como lo necesitábamos.

El objetivo se logra.

¿Qué más usamos?


Para crear un dron, es necesario controlar los sistemas auxiliares: intermitentes, luces de freno, alarmas, bocina, etc. Todo esto también se puede controlar a través del bus CAN.

Hardware y software


Para trabajar con el automóvil hoy usamos un conjunto de varios equipos:

  • Marathon Bus Analyzer le permite conectar y leer datos de dos buses simultáneamente. El sitio del fabricante del analizador tiene un software de análisis de registro gratuito. Pero utilizamos software escrito en nuestra empresa para uso interno.
  • StarLine 10 . CAN LIN . C, . CAN-. , ID .
  • Toyota/Lexus. : , -, , .

Hoy, se está trabajando activamente para desarrollar un vehículo no tripulado, en el futuro cercano, la implementación de frenado de emergencia antes de los obstáculos, su desvío y la reestructuración de la ruta del automóvil, dependiendo de la situación del tráfico y las instrucciones del conductor.

El vehículo no tripulado StarLine es una plataforma abierta para combinar las mejores mentes de ingeniería de Rusia y el mundo con el objetivo de crear tecnologías avanzadas de conducción no tripulada que harán que nuestro futuro sea seguro y cómodo.

Proyecto Gitlab

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


All Articles