Main Content

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:

  • Particionar 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 pruebas, que incluye los sensores y el entorno, el modelo de dinámica del vehículo ego y la evaluación de métricas utilizando datos reales.

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

  • Simular y visualizar el comportamiento del sistema: simule el modelo de 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.

  • Explore otros escenarios: estos escenarios prueban el sistema bajo 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 en autopistas especifica el estímulo y el entorno para probar los modelos de algoritmo.

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 de vehículo y las señales del bus Simulink® necesarias para definir las entradas y salidas para el 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 de mapas 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 de planificación de cambio de carril para conducción en autopista.

  • Lane Change Controller : subsistema que especifica el controlador de seguimiento de ruta 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 para el 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 usando un bloque Modelo de bicicleta y actualiza su estado usando comandos recibidos del subsistema Lane Change Controller .

El subsistema Scenario and Environment utiliza el bloque Scenario Reader (Automated Driving Toolbox) para proporcionar la red de carreteras y las posiciones reales de los vehículos ground-truth. 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 actor, que controlan las posiciones de los vehículos objetivo.

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

  • El bloque Vision Detection Generator (Automated Driving Toolbox) simula la detecciones 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 el sistema de navegación global por satélite 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 Bird's-Eye Scope muestra la cobertura del sensor en una representación cúbica. 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 Modelo de bicicleta 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 obtener más detalles, consulte Bicycle Model (Automated Driving Toolbox) (Automated Driving Toolbox).

El subsistema Metric Assessment permite evaluaciones de métricas a nivel de sistema utilizando la información real 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 (avance) y la velocidad longitudinal del vehículo ego. 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 usando 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 de 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 funciones de MATLAB que elimina 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 funciones de MATLAB que agrega información de localización para el vehículo ego a las detecciones concatenadas utilizando una pose 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 gestiona 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 rutas 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 de 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 de mapas, poses de actores (en coordenadas mundiales) y parámetros del planificador del subsistema Scenario and Environment para realizar la planificación de trayectorias. 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 en el modelo crea una figura de MATLAB que muestra la vista de persecución 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 usar 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 de MATLAB y traza una vista de persecución del escenario junto con detecciones y 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 gráfica.

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 creó utilizando Driving Scenario Designer (Automated Driving Toolbox) y se exportó 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 usando 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");