Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

Cambio de carril en la autopista

Este ejemplo muestra cómo percibir la información de la vista envolvente y utilizarla para diseñar un sistema de maniobra de cambio de carril automatizado para escenarios de conducción en carretera.

Introducción

Un sistema de maniobra de cambio de carril automatizado (LCM) permite que el vehículo ego se mueva automáticamente de un carril a otro. Un sistema LCM modela la dinámica de control longitudinal y lateral para un cambio de carril automatizado. Los sistemas LCM escanean el entorno en busca de los objetos más importantes (MIO) utilizando sensores integrados, identifican una trayectoria óptima que evita estos objetos y dirigen el vehículo ego a lo largo de la trayectoria identificada.

Este ejemplo muestra cómo crear un modelo de banco de pruebas para probar los componentes de fusión de sensores, planificador y controlador de un sistema LCM. Este ejemplo utiliza cinco sensores de visión y un sensor de radar para detectar otros vehículos desde la vista circundante del vehículo ego. Utiliza un rastreador basado en una asociación de datos probabilísticos conjuntos (JPDA) para rastrear las detecciones fusionadas de estos múltiples sensores. El planificador de cambio de carril genera entonces una trayectoria factible para que las vías negocien un cambio de carril que es ejecutado por el controlador de cambio de carril. En este ejemplo, usted:

  • Dividir el algoritmo y el banco de pruebas: el modelo se divide en modelos de algoritmo de cambio de carril y un modelo de banco de pruebas. Los modelos algorítmicos implementan los componentes individuales del sistema LCM. El banco de pruebas incluye la integración de los modelos algorítmicos y el marco de pruebas.

  • Explore el modelo del banco de pruebas: el modelo del banco de pruebas contiene el marco de prueba, que incluye los sensores y el entorno, el modelo de dinámica del vehículo ego y la evaluación de métricas utilizando la ground-truth.

  • Explorar los modelos de algoritmo: los modelos de algoritmo son modelos de referencia que implementan los componentes de fusión de sensores, planificador y controlador para crear la aplicación de cambio de carril.

  • Simular y visualizar el comportamiento del sistema: simule el modelo del banco de pruebas para probar la integración de la fusión y el seguimiento de sensores con la planificación y los controles para realizar maniobras de cambio de carril en una carretera con curvas con varios vehículos.

  • Explorar otros escenarios: estos escenarios prueban el sistema en condiciones adicionales.

Puede aplicar los patrones de modelado utilizados en este ejemplo para probar su propio sistema LCM.

Algoritmo de partición y banco de pruebas

El modelo se divide en modelos de algoritmos separados y un modelo de banco de pruebas.

  • Modelos de algoritmos: los modelos de algoritmos son modelos de referencia que implementan la funcionalidad de componentes individuales.

  • Modelo de banco de pruebas: el banco de pruebas de cambio de carril de la autopista especifica el estímulo y el entorno para probar los modelos de algoritmos.

Explorar el modelo de banco de pruebas

En este ejemplo, se utiliza un modelo de banco de pruebas de simulación a nivel de sistema para explorar el comportamiento de un sistema LCM probabilístico basado en sensores.

Para explorar el modelo del banco de pruebas, cargue el proyecto de cambio de carril de la autopista.

openProject("HighwayLaneChange");

Abra el modelo de banco de pruebas de simulación a nivel de sistema.

open_system("HighwayLaneChangeTestBench")

Al abrir este modelo se ejecuta la función helperSLHighwayLaneChangeSetup, que inicializa el escenario de la carretera utilizando el objeto drivingScenario (Automated Driving Toolbox) en el espacio de trabajo base. También configura los parámetros de configuración del sensor, los parámetros de diseño del rastreador, los parámetros de configuración del planificador, los parámetros de diseño del controlador, los parámetros del modelo del vehículo y las señales de bus Simulink ® necesarias para definir las entradas y salidas del modelo HighwayLaneChangeTestBench.

El modelo de banco de pruebas contiene estos subsistemas:

  • Scenario and Environment — Subsistema que especifica la escena, los vehículos, los sensores y los datos del mapa utilizados para la simulación. Este ejemplo utiliza cinco sensores de visión, un sensor de radar y un sensor INS.

  • Surround Vehicle Sensor Fusion — Subsistema que fusiona las detecciones de múltiples sensores para producir pistas.

  • Planner Configuration Parameters — Subsistema que especifica los parámetros de configuración necesarios para el algoritmo del planificador.

  • Highway Lane Change Planner — Subsistema que implementa el algoritmo planificador de cambio de carril para conducción en carretera.

  • Lane Change Controller — Subsistema que especifica el controlador de seguimiento de trayectoria que genera comandos de control para dirigir el vehículo ego a lo largo de la trayectoria generada.

  • Vehicle Dynamics — Subsistema que especifica el modelo dinámico del vehículo ego.

  • Metrics Assessment — Subsistema que especifica métricas para evaluar el comportamiento a nivel del sistema.

Los subsistemas Highway Lane Change Planner, Lane Change Controller y Metrics Assessment son los mismos que los del ejemplo Highway Lane Change Planner and Controller (Automated Driving Toolbox). Sin embargo, mientras que el planificador de cambio de carril en el ejemplo del controlador y planificador de cambio de carril de la autopista utiliza información ground-truth del escenario para detectar MIO, el planificador de cambio de carril en este ejemplo utiliza pistas de la fusión de sensores de vehículos circundantes para detectar los MIO. El subsistema Vehicle Dynamics modela el vehículo ego utilizando un bloque Bicycle Model y actualiza su estado utilizando comandos recibidos del subsistema Lane Change Controller.

El subsistema Scenario and Environment utiliza el bloque Scenario Reader (Automated Driving Toolbox) para proporcionar información sobre la red de carreteras y las posiciones ground-truth del vehículo. Este bloque también genera datos de mapas necesarios para el algoritmo del planificador de cambio de carril de la autopista. Este subsistema genera las detecciones de los sensores de visión, los grupos del sensor de radar y la posición estimada por el ego del sensor INS necesarios para el algoritmo de seguimiento y fusión del sensor. Abra el subsistema Scenario and Environment.

open_system("HighwayLaneChangeTestBench/Scenario and Environment")

  • El bloque Scenario Reader (Automated Driving Toolbox) configura el escenario de conducción y genera poses de actores que controlan las posiciones de los vehículos de destino.

  • El bloque Vehicle To World (Automated Driving Toolbox) convierte las poses del actor de las coordenadas del vehículo ego a las coordenadas del mundo.

  • El bloque Vision Detection Generator (Automated Driving Toolbox) simula la detección de objetos utilizando un modelo de sensor de cámara.

  • El bloque Driving Radar Data Generator (Automated Driving Toolbox) simula detecciones de objetos basándose en un modelo estadístico. También genera detecciones de objetos agrupados para su posterior procesamiento.

  • El bloque INS (Automated Driving Toolbox) modela las mediciones del sistema de navegación inercial y del sistema de navegación satelital global y genera las mediciones fusionadas. Produce la posición, velocidad y orientación corrompidas por el ruido del vehículo ego.

El subsistema configura cinco sensores de visión y un sensor de radar para capturar la vista circundante del vehículo. Estos sensores están montados en diferentes ubicaciones del vehículo ego para capturar una vista de 360 ​​grados.

El telescopio Bird's-Eye Scope muestra la cobertura del sensor utilizando una representación cuboide. El área de cobertura del radar y las detecciones están en rojo. El área de cobertura de visión y las detecciones están en azul.

El subsistema Vehicle Dynamics utiliza un bloque Bicycle Model para modelar el vehículo ego. Para obtener más detalles sobre el subsistema Vehicle Dynamics, consulte el ejemplo Highway Lane Following (Automated Driving Toolbox). Abra el subsistema Vehicle Dynamics.

open_system("HighwayLaneChangeTestBench/Vehicle Dynamics");

El bloque Modelo de bicicleta implementa un modelo rígido de carrocería de vehículo de vía única de dos ejes para calcular el movimiento longitudinal, lateral y de guiñada. El bloque tiene en cuenta la masa corporal, la resistencia aerodinámica y la distribución del peso entre los ejes debido a la aceleración y la dirección. Para más detalles, véase Bicycle Model (Automated Driving Toolbox) (Automated Driving Toolbox).

El subsistema Metric Assessment permite evaluaciones métricas a nivel de sistema utilizando la información ground-truth del escenario. Abra el subsistema Metrics Assessment.

open_system("HighwayLaneChangeTestBench/Metrics Assessment")

  • El subsistema Collision Detection detecta la colisión del vehículo ego con otros vehículos y detiene la simulación si detecta una colisión. El subsistema también calcula el parámetro TimeGap utilizando la distancia al vehículo líder (distancia) y la velocidad longitudinal del vehículo anterior. Este parámetro se evalúa según los límites prescritos.

  • El subsistema Jerk Metrics calcula los parámetros LongitudinalJerk y LateralJerk utilizando la velocidad longitudinal y la velocidad lateral, respectivamente. Estos parámetros se evalúan según los límites prescritos.

Para obtener más detalles sobre cómo validar las métricas automáticamente utilizando Simulink Test, consulte el ejemplo Automate Testing for Highway Lane Change (Automated Driving Toolbox).

Explorar modelos de algoritmos

El sistema de cambio de carril se desarrolla integrando la fusión de sensores envolventes del vehículo, el planificador de cambio de carril y los componentes del controlador de seguimiento de carril.

El modelo de algoritmo de fusión de sensores de vehículos envolventes fusiona las detecciones de vehículos de cámaras y sensores de radar y rastrea los vehículos detectados utilizando el método de seguimiento de nivel central. Abra el modelo del algoritmo Surround Vehicle Sensor Fusion.

open_system("SurroundVehicleSensorFusion")

El modelo de fusión de sensores envolventes del vehículo toma como entradas las detecciones del vehículo provenientes de los sensores de visión y los grupos del sensor de radar.

  • El bloque Vision Detection Concatenation concatena las detecciones de visión.

  • El bloque Delete Velocity From Vision es un bloque de función MATLAB que elimina la información de velocidad de las detecciones de visión.

  • El bloque Vision and Radar Detection Concatenation concatena las detecciones de visión y radar.

  • El bloque Add Localization Information es un bloque de función MATLAB que agrega información de localización del vehículo ego a las detecciones concatenadas utilizando una posición estimada del vehículo ego del sensor INS. Esto permite que el rastreador realice un seguimiento en el marco global y minimiza el efecto en las pistas de las maniobras de cambio de carril del vehículo ego.

  • El bloque helperJPDATracker realiza la fusión y administra las pistas de objetos estacionarios y en movimiento. El rastreador fusiona la información contenida en las detecciones concatenadas y rastrea los objetos alrededor del vehículo ego. Estima rutas en el sistema de coordenadas de Frenet. Utiliza mapInfo del escenario para estimar las pistas en el sistema de coordenadas Frenet. Luego, el rastreador genera una lista de pistas confirmadas. Estas pistas se actualizan en un tiempo de predicción impulsado por un reloj digital en el subsistema Scenario and Environment.

Para obtener más detalles sobre el algoritmo, consulte el ejemplo Object Tracking and Motion Planning Using Frenet Reference Path (Automated Driving Toolbox).

El planificador de cambio de carril en una autopista es un componente fundamental de un sistema de cambio de carril en una autopista. Se espera que este componente maneje diferentes comportamientos de conducción para navegar con seguridad el vehículo ego de un punto a otro. El modelo de algoritmo Highway Lane Change Planner contiene un muestreador de estado terminal, un planificador de movimiento y un módulo de predicción de movimiento. El muestreador de estados terminales toma muestras de estados terminales basándose en los parámetros del planificador y el estado actual tanto del vehículo ego como de otros vehículos en el escenario. El módulo de predicción de movimiento predice el movimiento futuro de los MIO. El planificador de movimiento toma muestras de trayectorias y genera una trayectoria óptima. Abra el modelo del algoritmo Highway Lane Change Planner.

open_system("HighwayLaneChangePlanner")

El modelo de algoritmo implementa el algoritmo principal para el sistema de cambio de carril de la autopista. El modelo de referencia lee datos del mapa, poses de actores (en coordenadas mundiales) y parámetros del planificador del subsistema Scenario and Environment para realizar la planificación de la trayectoria. El modelo utiliza el sistema de coordenadas de Frenet para encontrar los MIO que rodean al vehículo ego. Luego, el modelo toma muestras de estados terminales para diferentes comportamientos, predice el movimiento de los actores objetivo y genera múltiples trayectorias. Finalmente, el modelo evalúa los costes de las trayectorias generadas y verifica la posibilidad de colisión y la viabilidad cinemática para estimar la trayectoria óptima. Para obtener más detalles, consulte el ejemplo Generate Code for Highway Lane Change Planner (Automated Driving Toolbox).

El modelo de referencia Lane Change Controller simula un mecanismo de control de seguimiento de trayectoria que mantiene al vehículo ego viajando a lo largo de la trayectoria generada mientras sigue una velocidad establecida. Abra el modelo de referencia Lane Change Controller.

open_system("LaneChangeController");

El controlador ajusta tanto la aceleración longitudinal como el ángulo de dirección delantera del vehículo ego para garantizar que el vehículo ego viaje a lo largo de la trayectoria generada. El controlador calcula las acciones de control óptimas y al mismo tiempo satisface las restricciones de velocidad, aceleración y ángulo de dirección mediante el control predictivo de modelo adaptativo (MPC). Para obtener más detalles sobre la integración del planificador y controlador de cambio de carril de la autopista, consulte el ejemplo Highway Lane Change Planner and Controller (Automated Driving Toolbox).

Simule y visualice el comportamiento del sistema

Configure y ejecute el modelo de simulación HighwayLaneChangeTestBench para visualizar el comportamiento del sistema durante un cambio de carril. El bloque Visualization del modelo crea una figura MATLAB que muestra la vista de seguimiento y la vista superior del escenario y traza el vehículo ego, las pistas, las trayectorias muestreadas, la lista de cápsulas y otros vehículos en el escenario.

Deshabilite los mensajes de actualización de MPC.

mpcverbosity("off");

Configure el modelo HighwayLaneChangeTestBench para utilizar el escenario scenario_LC_15_StopnGo_Curved.

helperSLHighwayLaneChangeSetup(scenarioFcnName="scenario_LC_15_StopnGo_Curved");
sim("HighwayLaneChangeTestBench");

Durante la simulación, el modelo registra señales en el espacio de trabajo base como logsout. Puede analizar los resultados de la simulación y depurar cualquier falla en el comportamiento del sistema utilizando el objeto HelperAnalyzeLCSimulationResults. La función visualizeSimulationData del método crea una figura MATLAB y traza una vista de seguimiento del escenario junto con las detecciones y los seguimientos. Para obtener más detalles sobre esta figura, consulte el ejemplo Generate Code for Highway Lane Change Planner (Automated Driving Toolbox). Ejecute la función y explore la trama.

visualizatonObj = HelperAnalyzeLCSimulationResults(logsout);
visualizatonObj.visualizeSimulationData()

Explora otros escenarios

En este ejemplo, ha explorado el comportamiento del sistema para el escenario scenario_LC_15_StopnGo_Curved, pero puede utilizar el mismo modelo de banco de pruebas para explorar otros escenarios. Esta es una lista de escenarios que son compatibles con el modelo HighwayLaneChangeTestBench.

scenario_LC_01_SlowMoving
scenario_LC_02_SlowMovingWithPassingCar
scenario_LC_03_DisabledCar
scenario_LC_04_CutInWithBrake
scenario_LC_05_SingleLaneChange
scenario_LC_06_DoubleLaneChange
scenario_LC_07_RightLaneChange
scenario_LC_08_SlowmovingCar_Curved
scenario_LC_09_CutInWithBrake_Curved
scenario_LC_10_SingleLaneChange_Curved
scenario_LC_11_MergingCar_HighwayEntry
scenario_LC_12_CutInCar_HighwayEntry
scenario_LC_13_DisabledCar_Ushape
scenario_LC_14_DoubleLaneChange_Ushape
scenario_LC_15_StopnGo_Curved [Default]

Cada uno de estos escenarios se ha creado utilizando Driving Scenario Designer (Automated Driving Toolbox) y se ha exportado a un archivo de escenario. Examine los comentarios en cada archivo para obtener más detalles sobre la carretera y los vehículos en cada escenario. Puede configurar el modelo y el espacio de trabajo HighwayLaneChangeTestBench para simular estos escenarios utilizando la función helperSLHighwayLaneChangeSetup. Por ejemplo, puede configurar la simulación para un escenario de carretera con curvas usando este comando.

helperSLHighwayLaneChangeSetup(scenarioFcnName="scenario_LC_10_SingleLaneChange_Curved");

Conclusión

En este ejemplo, diseñó y simuló un sistema de maniobra de cambio de carril en una autopista utilizando información percibida desde la vista circundante. Este ejemplo mostró cómo integrar componentes de fusión de sensores, planificador y controlador para simular un sistema de cambio de carril en una autopista en un entorno de circuito cerrado. El ejemplo también demostró varias métricas de evaluación para validar el desempeño del sistema diseñado. Si tiene una licencia de Simulink Coder™ y una licencia de Embedded Coder™, puede generar código listo para implementar de los modelos de algoritmo para un objetivo integrado en tiempo real (ERT).

Habilite los mensajes de actualización de MPC nuevamente.

mpcverbosity("on");