Automatizar el control de vehículos inteligentes usando gráficos de Stateflow
Este ejemplo muestra cómo modelar un escenario de conducción con vehículos inteligentes controlados por la misma lógica de decisión. Cada vehículo determina cuándo acelerar, reducir la velocidad o cambiar de carril basándose en la lógica definida por un gráfico de Stateflow® independiente. Dado que las condiciones de conducción (posición relativa y velocidad de los vehículos cercanos) varían de un vehículo a otro, objetos de gráfico independientes de MATLAB® controlan cada uno de los vehículos en una autopista.
Abrir un escenario de conducción
Para iniciar el ejemplo, ejecute el script sf_driver_demo.m
. El script muestra una animación 3D de una autopista larga y varios vehículos. La vista se centra en un solo vehículo y sus alrededores. A medida que este vehículo se desplaza por la autopista, el gráfico de Stateflow sf_driver
independiente muestra la lógica de decisión que determina sus acciones.
Cuando se parte de una posición aleatoria, cada vehículo intenta desplazarse a una velocidad objetivo. Dado que las velocidades objetivo se eligen de forma aleatoria, los vehículos pueden obstaculizarse entre sí. En esta situación, el vehículo intentará cambiar de carril y reanudar su velocidad objetivo.
El archivo de clase HighwayScenario
define un objeto
que representa el entorno 3D que contiene la autopista y los vehículos que circulan por ella. Para controlar el movimiento de los vehículos, el objeto drivingScenario
(Automated Driving Toolbox)drivingScenario
crea un arreglo de objetos de gráfico de Stateflow. Cada objeto del gráfico controla un vehículo diferente en la simulación.
Ejecutar la lógica de decisión para vehículos
El gráfico de Stateflow sf_driver
consta de dos estados de nivel superior, LaneKeep
y LaneChange
.
Cuando el estado LaneKeep
está activo, el vehículo correspondiente permanece en su carril de circulación. En este estado, hay dos posibles subestados:
Cruise
está activo cuando la zona situada justo delante del vehículo está vacía y el vehículo puede circular a su velocidad objetivo.Follow
se convierte en activo cuando la zona situada justo delante del vehículo está ocupada y su velocidad objetivo es superior a la velocidad del vehículo que tiene delante. En este caso, el vehículo se ve obligado a reducir la velocidad e intentar cambiar de carril.
Cuando el estado LaneChange
está activo, el vehículo correspondiente intenta cambiar de carril. En este estado, hay dos posibles subestados:
Continue
está activo cuando la zona situada junto al vehículo está vacía y el vehículo puede cambiar de carril de forma segura.Abort
se convierte en activo cuando la zona situada junto al vehículo está ocupada. En este caso, el vehículo se ve obligado a permanecer en su carril.
Las transiciones entre los estados LaneKeep
y LaneChange
están restringidas por el valor de isLaneChanging
. En el estado LaneKeep
, el gráfico establece estos datos locales en true
cuando el subestado Follow
está activo y hay suficiente espacio al lado del vehículo para cambiar de carril. En el estado LaneChange
, el gráfico establece estos datos locales en false
cuando el vehículo ha terminado de cambiar de carril.
Consulte también
drivingScenario
(Automated Driving Toolbox)
Temas
- Create Stateflow Charts for Execution as MATLAB Objects
- Create Driving Scenario Programmatically (Automated Driving Toolbox)
- Create Actor and Vehicle Trajectories Programmatically (Automated Driving Toolbox)
- Define Road Layouts Programmatically (Automated Driving Toolbox)