Autonomous Emergency Braking with Vehicle Variants
This example shows how to simulate an autonomous emergency braking application by varying the fidelity of an ego vehicle using 3DOF and 14DOF variants of a vehicle dynamics model. The example also shows how to test these variants in a closed-loop environment that includes probabilistic camera and radar sensor models.
Introduction
Autonomous emergency braking (AEB) is an advanced active safety system that helps drivers avoid or mitigate collisions with other vehicles. In an AEB system, an AEB controller specifies commands for required steering and acceleration (or braking) controls. The vehicle dynamics model receives these commands from the controller. For AEB applications, high-fidelity vehicle dynamics are very important for matching virtual simulation test results to real-world test results. In this example, you study the interactions between an AEB controller and two vehicle dynamics models with different fidelity. You separately integrate each vehicle dynamics model with the AEB system, and analyze the test behavior for each case. For more details on vehicle dynamics models, see Passenger Vehicle Dynamics Models (Vehicle Dynamics Blockset).
In this example, you:
Explore the test bench model — The model contains the sensors and environment, sensor fusion and tracking, decision logic, controls, and a subsystem for selecting between a 3DOF and a 14DOF vehicle dynamics model.
Visualize test scenario — In the test scenario, a pedestrian is crossing a road at an intersection when an ego vehicle is taking a left turn through the intersection.
Simulate with the 3DOF vehicle dynamics model — Configure the test bench model with 3DOF vehicle dynamics and simulate the test bench model.
Simulate with the 14DOF vehicle dynamics model — Configure the test bench model with 14DOF vehicle dynamics and simulate the test bench model.
Explore another test scenario — This test scenario contains an ego vehicle, a child pedestrian, and two obstructing vehicles.
Explore Test Bench Model
In this example, you use a system-level simulation test bench model to explore and analyze the interactions between the AEB controller and the behavior of the vehicle dynamics model for AEB system.
To explore the test bench model, load the autonomous emenrgency braking with vehicle variants project.
openProject("AEBWithVehicleVariants");
To reduce Command Window output, turn off MPC update messages.
mpcverbosity("off");
Open the system-level simulation test bench model.
open_system("AEBWithVehicleVariantsTestBench");
Opening this model runs the helperSLAEBWithVehicleVariantsSetup
function that initializes the scenario using the drivingScenario
object in the base workspace. The setup function runs the default test scenario scenario_02_AEB_PedestrianChild_Nearside
, which contains an ego vehicle and a child pedestrian crossing the road. It also selects the default vehicle dynamics variant 14DOF
. This setup function also configures the controller design parameters, vehicle model parameters, and Simulink® bus signals required for defining the inputs and outputs for the AEBWithVehicleVariantsTestBench
model.
The test bench model contains these subsystems:
Sensors and Environment
— Subsystem that specifies the road, actors, camera, and radar sensor used for simulation.Sensor Fusion and Tracking
— Algorithm model to fuse vehicle detections from the camera and radar sensors.AEB Decision Logic
— Algorithm model to specify the lateral and longitudinal decision logic that provides most important object (MIO) related information and ego vehicle reference path information to the controller.AEB Controller
— Algorithm model that uses the nonlinear model predictive controller (NLMPC) to specify the steering angle and acceleration controls.Vehicle Dynamics
— Variant subsystem that specifies the dynamics model of the ego vehicle.Metrics Assessment
— Subsystem that assesses system-level behavior.MIO Track
— Subsystem that prepares the MIO track for display in the Bird's-Eye Scope.
To plot synthetic sensor detections, tracked objects and ground truth data, use the Bird's-Eye Scope. The Bird's-Eye Scope is a model-level visualization tool that you can open from the Simulink model toolbar. On the Simulation tab, under Review Results, click Bird's-Eye Scope. After opening the scope, click Update Signals to set up the signals. The dashboard panel displays these ego vehicle parameters: velocity, acceleration, AEB status, forward collision warning (FCW) status, and safety status.
The Sensors and Environment
and Metrics Assessment
subsystems, as well as the Sensor Fusion and Tracking
, AEB Decision Logic
, and AEB Controller
reference models, are reused from the Autonomous Emergency Braking with Sensor Fusion example. The Vehicle Dynamics
variant subsystem contains two vehicle variants.
Vehicle Dynamics 3DOF
Vehicle Dynamics 14DOF
(default)
Each of these variants takes the Steering Angle
and Acceleration
commands from the AEB controller as input and outputs the Pose
, Longitudinal Velocity
, and Lateral Velocity
of the ego vehicle. Open the Vehicle Dynamics
variant subsystem.
open_system("AEBWithVehicleVariantsTestBench/Vehicle Dynamics");
You can configure the desired variant using the helperSLAEBWithVehicleVariantsSetup
function. The default variant is Vehicle Dynamics 14DOF
.
Explore 3DOF Variant
The Vehicle Dynamics 3DOF
variant uses a Bicycle Model - Force Input block that implements a Bicycle Model single-track, 3DOF, rigid vehicle body to calculate longitudinal, lateral, and yaw motion. Open the Vehicle Dynamics 3DOF
variant.
helperSLAEBWithVehicleVariantsSetup(... scenarioFcnName="scenario_01_AEB_Pedestrian_Intersection", ... vehicleVariantName="3DOF"); pause(3) open_system( ... "AEBWithVehicleVariantsTestBench/Vehicle Dynamics/Vehicle Dynamics 3DOF");
The Bicycle Model - Force Input block accounts for body mass, aerodynamic drag, and weight distribution between the axles due to longitudinal acceleration. The block is configured to use the external longitudinal force to accelerate or brake the vehicle. This block calculates lateral forces using the tire slip angles and linear cornering stiffness.
Explore 14DOF Variant
The Vehicle Dynamics 14DOF
variant implements transmission controls, tires, load transfer, braking, and powertrain response for a vehicle. Open the Vehicle Dynamics 14DOF
variant.
helperSLAEBWithVehicleVariantsSetup(... scenarioFcnName="scenario_01_AEB_Pedestrian_Intersection", ... vehicleVariantName="14DOF"); pause(3) open_system( ... "AEBWithVehicleVariantsTestBench/Vehicle Dynamics/Vehicle Dynamics 14DOF");
The Vehicle Dynamics 14DOF
variant subsystem contains the VehDyn14DOF
reference model, which has the Input Routing
, Driver Commands
, Controllers
, and Environment
subsystems. Open the VehDyn14DOF
reference model.
open_system("VehDyn14DOF");
The VehDyn14DOF
reference model has a Passenger Vehicle
subsystem that contains the Engine
, Steering and Driveline
, Pedal cluster and Cabin
, and Chassis and Tires
subsystems. Open the Passenger Vehicle
subsystem.
open_system("VehDyn14DOF/Passenger Vehicle");
The Passenger Vehicle
subsystem contains these subsystems:
Engine
— TheEngine
subsystem contains a Mapped SI Engine block to model a spark-ignition engine by using power, air mass flow, fuel flow, exhaust temperature, efficiency, and emission performance lookup tables. For more details, see Mapped SI Engine (Vehicle Dynamics Blockset).
Steering and Driveline
— TheSteering and Driveline
subsystem uses a Kinematic Steering block with the Type parameter set toAckerman
. For more details, see Kinematic Steering (Vehicle Dynamics Blockset). The transmission is modelled using the Ideal Fixed Gear Transmission block. For more details on the transmission, see Ideal Fixed Gear Transmission (Vehicle Dynamics Blockset). TheDriveline Model
is a variant subsystem that contains four variants:Rear Wheel Drive
,Front Wheel Drive
,All Wheel Drive
, and the defaultRear Wheel Drive Active Differential
. TheBrake Hydraulics
subsystem converts the brake command to the actual brake pressure on the pedal.
Pedal Cluster and Cabin
— ThePedal Cluster and Cabin
subsystem is a placeholder for introducing faults, detailed actuator behavior, and interactions of other systems with a human interface, such as changes in power steering and braking assistance.
Chassis and Tires
— TheChassis and Tires
subsystem has theVehicle
subsystem,Wheels and Tires
subsystem, andSuspension
variant subsystem. TheVehicle
subsystem has a variant subsystem to select between a3DOF
and a6DOF
vehicle body. TheWheels and Tires
subsystem has aVDBS
subsystem containing the variant subsystemTires
, which selects between theMagic Formula Tires
,Fiala Tires
, defaultMagic Formula Vector Tires
, andFiala Tires Vector
variants. TheSuspension
variant subsystem has six variants of suspension models:Double Wishbone Suspension
that uses Independent Suspension - Double Wishbone (Vehicle Dynamics Blockset),Independent Mapped Front Suspension Mapped Solid Axle Rear Suspension
that uses Independent Suspension - Mapped (Vehicle Dynamics Blockset) for front suspension and Solid Axle Suspension - Mapped (Vehicle Dynamics Blockset) for rear suspension,MacPherson Front Suspension Solid Axle Rear Suspension
uses the Independent Suspension - MacPherson (Vehicle Dynamics Blockset) for front suspension and solid axle for rear suspension,MacPherson Suspension
uses independent MacPherson suspension,Mapped Suspension
uses the independent Mapped suspension,Kinematics and Compliance Independent Suspension
uses the Independent Suspension - K and C (Vehicle Dynamics Blockset) (default).
Visualize Test Scenario
The scenario_01_AEB_Pedestrian_Intersection
scenario generates a cuboid scenario that is compatible with the AEBWithVehicleVariantsTestBench
model. This is an open-loop scenario containing an ego vehicle and a pedestrian actor. In this scenario, the pedestrian actor crosses the road at the intersection when the ego vehicle takes a left turn at the intersection.
Plot the open-loop scenario to see the interactions of the ego vehicle and the pedestrian actor.
hFigScenario = helperPlotScenario("scenario_01_AEB_Pedestrian_Intersection");
The ego vehicle is not under closed-loop control, so a collision occurs with the pedestrian actor that is crossing the road at the intersection. The goal of the closed-loop simulation is to avoid the collision with the pedestrian actor. Using this scenario, you can analyze the lateral controls with both the vehicle variants in a closed loop.
Close the figure.
close(hFigScenario);
Simulate with 3DOF Vehicle Dynamics Model
In this section, you configure and assess the simulation results of the 3DOF vehicle variant using the scenario_01_AEB_Pedestrian_Intersection
test scenario.
Configure the AEBWithVehicleVariantsTestBench
model to use the scenario_01_AEB_Pedestrian_Intersection
scenario and 3DOF
vehicle model variant.
helperSLAEBWithVehicleVariantsSetup(... scenarioFcnName="scenario_01_AEB_Pedestrian_Intersection", ... vehicleVariantName="3DOF");
Simulate the test bench model. Use the Bird's-Eye Scope visualization to view the results while the simulation is running.
Simulate the model and analyze the plots.
sim("AEBWithVehicleVariantsTestBench");
helperPlotAEBResults(logsout,scenarioFcnName);
TTC vs. Stopping Time — Shows a comparison between time-to-collision (TTC) and the stopping times for the FCW, first stage partial brake, second stage partial brake, and full brake respectively.
FCW and AEB Status — Shows how the AEB state machine determines the activations for the FCW and AEB based on the comparison results from the first plot.
Ego Car Acceleration — Shows the longitudinal and lateral acceleration of the ego vehicle.
Ego Car Yaw and Yaw Rate — Shows the yaw and yaw rate of the ego vehicle.
Ego Car Velocity — Shows the longitudinal velocity of the ego vehicle.
Headway — Shows the headway distance between the ego vehicle and the MIO.
Simulate with 14DOF Vehicle Dynamics Model
In this section, you configure and assess the simulation results of the 14DOF vehicle variant using the scenario_01_AEB_Pedestrian_Intersection
test scenario. The higher order 14DOF vehicle model enables you to more realistically reflect nonlinear dynamics and effects including transmission controls, tires, load transfer, braking, and powertrain response.
Configure the AEBWithVehicleVariantsTestBench
model to use the scenario_01_AEB_Pedestrian_Intersection
scenario and 14DOF
vehicle model variant.
helperSLAEBWithVehicleVariantsSetup(... scenarioFcnName="scenario_01_AEB_Pedestrian_Intersection", ... vehicleVariantName="14DOF");
Simulate the test bench model. Use the Bird's-Eye Scope visualization to view the results while the simulation is running.
Simulate the model and analyze the plots.
sim("AEBWithVehicleVariantsTestBench");
[hFigLongResults,hFigLatResults] = helperPlot14DOFVehicleResults(logsout,scenarioFcnName);
### Starting serial model reference simulation build. ### Successfully updated the model reference simulation target for: VehDyn14DOF Build Summary Simulation targets built: Model Action Rebuild Reason =================================================================================== VehDyn14DOF Code generated and compiled. VehDyn14DOF_msf.mexa64 does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 4m 49.672s
From the Longitudinal Results plots, you can observe the acceleration and deceleration input commands and corresponding outputs from the high-fidelity vehicle dynamics model, such as the ego car velocity, longitudinal acceleration, and brake pressures at the four wheels. These plots enable you to analyze the longitudinal behavior of the vehicle.
From the Lateral Results plots, you can observe the steering input commands and corresponding outputs such as yaw rate, lateral acceleration, and gear commands. These plots enable you to analyze the lateral behavior of the vehicle.
For an ego vehicle traveling at higher speeds, you can also plot tire forces, suspension forces, engine speed, and tire speeds for a more in-depth analysis.
close(hFigLongResults); close(hFigLatResults);
This example also provides an additional scenario, scenario_02_AEB_PedestrianChild_Nearside
, which is compatible with the AEBWithVehicleVariantsTestBench
model. This scenario has been created using the Driving Scenario Designer app and exported to a scenario file. You can configure the AEBWithVehicleVariantsTestBench
model and workspace to simulate with this scenario using the helperSLAEBWithVehicleVariantsSetup
function.
To configure the test bench to simulate the scenario_02_AEB_PedestrianChild_Nearside
scenario using the 14DOF
vehicle variant, enter this command.
helperSLAEBWithVehicleVariantsSetup(scenarioFcnName="scenario_02_AEB_PedestrianChild_Nearside",vehicleVariantName="14DOF");
To configure the test bench to simulate the scenario_02_AEB_PedestrianChild_Nearside
scenario using the 3DOF
vehicle variant, enter this command.
helperSLAEBWithVehicleVariantsSetup(scenarioFcnName="scenario_02_AEB_PedestrianChild_Nearside",vehicleVariantName="3DOF");
This scenario enables you to analyze the longitudinal dynamics of the selected vehicle model. You can simulate and plot the signals for analysis using the helperPlotAEBResults
function for a 3DOF simulation or the helperPlot14DOFVehicleResults
function for a 14DOF simulation.
For new scenarios, you must specify the initial gear value for the transmission controller that provides inputs to the Passenger Vehicle
subsystem. To set the initial gear to 0
, enter this command.
set_param("VehDyn14DOF/Controllers/Transmission Controller/PRNDL Controller/Transmission Controller PRNDL","GearInit","0");
When you are done with this example, enable MPC update messages.
mpcverbosity("on");
See Also
Blocks
Related Topics
- Autonomous Emergency Braking with High-Fidelity Vehicle Dynamics
- Autonomous Emergency Braking with Sensor Fusion
- Automate Testing for Autonomous Emergency Braking
- Automate Testing for Scenario Variants of AEB System
- Autonomous Emergency Braking with RoadRunner Scenario
- Forward Collision Warning Using Sensor Fusion
- Highway Lane Following