Main Content

How Unreal Engine Simulation for Vehicle Dynamics Blockset Works

The vehicle dynamics models run programmable maneuvers in a photorealistic 3D visualization environment. Vehicle Dynamics Blockset™ integrates the 3D simulation environment with Simulink® so that you can query the world around the vehicle for virtually testing perception, control, and planning algorithms. The Vehicle Dynamics Blockset visualization environment uses the Unreal Engine® by Epic Games®.

Understanding how this simulation environment works can help you troubleshoot issues and customize your models.

Note

Simulating models in the 3D visualization environment requires Simulink 3D Animation™.

Communication with 3D Simulation Engine

When you run your algorithms using Simulink 3D Animation, MATLAB® and Simulink co-simulate the algorithms with the 3D simulation engine through, lock-step mechanism. The lock-step mechanism is a synchronization approach where the simulation progresses in fixed time steps, and the two simulation engines, either MATLAB or Simulink and the 3D simulation engine, run sequentially. One simulation engine waits while the other simulation engine proceeds, so each simulation produces consistent results.

During each simulation step:

  • MATLAB or Simulink configures the initial settings of the 3D environment, including actor transformations and properties and the custom scene viewpoint. MATLAB or Simulink also determines the configuration parameters of the 3D environment and the actors using the 3D simulation engine feedback.

  • The co-simulation framework sends data from MATLAB or Simulink to the 3D simulation engine.

  • The co-simulation framework sends a command signal to the 3D simulation engine indicating the end of data transfer.

  • The 3D simulation engine executes the simulation. The 3D simulation engine configures the 3D environment and the actors based on the data from MATLAB or Simulink, then provides updated information about the 3D environment and the actors.

  • The co-simulation framework sends data from the 3D simulation engine to MATLAB or Simulink.

  • The co-simulation framework sends an acknowledge signal to MATLAB or Simulink, indicating the end of data transfer from the 3D simulation engine.

Block Execution Order

During simulation, the 3D simulation blocks follow a specific execution order:

  1. The vehicle blocks initialize the vehicles and send their X, Y, and Yaw signal data to the Simulation 3D Scene Configuration block.

  2. The Simulation 3D Scene Configuration block receives the vehicle data and sends it to the sensor blocks.

  3. The sensor blocks receive the vehicle data and use it to accurately locate and visualize the vehicles.

The Priority property of the blocks controls this execution order. To access this property for any block, right-click the block, select Properties, and click the General tab. By default, Simulation 3D Vehicle with Ground Following blocks have a priority of -1, Simulation 3D Scene Configuration blocks have a priority of 0, and sensor blocks have a priority of 1.

If your sensors are not detecting vehicles in the scene, it is possible that the 3D simulation blocks are executing out of order. Try updating the execution order and simulating again. For more details on execution order, see Control and Display Execution Order.

Also be sure that all 3D simulation blocks are located in the same subsystem. Even if the blocks have the correct Priority settings, if they are located in different subsystems, they still might execute out of order.

Related Examples

More About

External Websites