Create and Use an Oval Track
You can create an oval track with RoadRunner and use it in a Vehicle Dynamics Blockset™ simulation that co-simulates with Unreal®. This example provides the workflow for creating the oval track that is used in the Follow Waypoints Around Oval Track example.
Before you start, make sure that you have the products required to follow the workflow.
Step | Required Products | |
---|---|---|
1 | RoadRunner | |
2 | RoadRunner Unreal Engine® 5.3 RoadRunner plugin Visual Studio® 2022 | |
3 | ||
4 | Unreal Engine 5.3 Vehicle Dynamics Blockset Vehicle Dynamics Blockset Interface for Unreal Engine Projects |
Step 1: Create Track in RoadRunner
In this example, you create the oval track specified in the following figure. The locations and reference poses are in the RoadRunner coordinate system, (X, Y, θ). The locations, X and Y, are in m. The reference poses, θ, are in deg.
Legend | |
---|---|
Green | Locations of patch boundaries, X, Y |
Red | Intersection points of straight-line segments, X, Y |
Black | Track locations and reference poses, X, Y, θ |
Use RoadRunner to create the oval track. For more information about creating tracks, see Road Plan Tool (RoadRunner).
Create Straight Line Segments
Open the Road Plan Tool.
Navigate to Library Browser > RoadStyles. Select
Residential
.Right-click to place the start and endpoints of a straight-line road.
After each straight segment, left-click and repeat the preceding step.
Selecting the road control points. Use the preceding figure to the enter coordinate information.
Create Circular Arc
Open the Road Plan Tool. If you are continuing from creating the straight-line segments, the
Residential
road is the default road.Right-click to place the start and endpoints of the arc. If you use this method to connect straight lines, there might be multiple control points. Delete all but one control point.
To create a control point, right-click anywhere in the road. To position it as specified in red in the preceding figure, left-click in each arc control point.
To create the circular arc, edit the positions of the control points. If the start of a road marks the end of another, RoadRunner connects them.
Adjust Road Width
Open the Lane Width Tool.
Select the road that needs the width adjustment.
To adjust the road width, select any purple or red segment.
Modify the lines so that the entire width of the road is 14 m, or 7 m from the road centerline to each edge.
Create Patch
Open the Surface Tool.
Right-click to create four nodes.
Right-click the first node to close the loop. By default, the surface is green.
Add Trees
To provide visual cues that indicate how fast the vehicle is traveling, you can add trees.
Open the Prop Curve Tool.
Select an asset to place in the scene. For example, select
Props\Trees\Eucalyptus_Sm01
.Right-click to select the inner boundary of the trajectory. To limit the trees in the green areas, adjust the tangents at the control points.
To facilitate faster import into Unreal Engine, choose an appropriate spacing that limits the number of trees in the scene. The import time is proportional to the number of scene assets.
Step 2: Export Track from RoadRunner
In RoadRunner, open the scene.
Select File > Export > Unreal (.fbx, .xodr + rrdata.xml)
In the Export Unreal dialog box, select Split by Segmentation and export folder. Click Export.
Step 3: Import Track to Unreal Engine
After exporting from RoadRunner, you import the data into Unreal Engine.
Create Empty Project
Create an empty project by following the steps listed in Create Empty Project in Unreal Engine.
Acquire and Rebuild RoadRunner Plugins
Download the RoadRunner plugin. For more information, see Downloading Plugins (RoadRunner).
Extract the RoadRunner plugin
.zip
file. Locate theRoadRunnerImporter
andRoadRunnerMaterials
folders under the Unreal Engine plugins.Note
The Unreal Engine plugin folder also contains a
RoadRunnerCarla
integration plugin. If you are not using CARLA, do not copy this folder.Copy the
RoadRunnerImporter
andRoadRunnerMaterials
folders into the Plugins folder under the project folder. If a Plugins folder does not exist, create one.Use a or b to rebuild the plugin.
Generate the project files.
Windows® – Right-click the .
uproject
file and select Generate Visual Studio project files.Linux® – Set environment variable
UE4_ROOT
to your Unreal Engine installation folder. At the command line, run this code:$UE4_ROOT/GenerateProjectFiles.sh -project="<Path to .uproject file>" -game -engine
Open the project. Select Yes to build the plugins.
If both a and b fail, try using Visual Studio to build the binaries.
Verify that the RoadRunner and MathWorks Interface plugins are enabled. Select Edit > Plugins. Confirm that Enabled is selected.
Import to Unreal Engine
In the Unreal Editor, click Import. Select the
.fbx
file from Step 2.Note
Selecting File > Import Into Level does not use the exported RoadRunner
xml
. Instead, it uses the Unreal importer.Use the default options in the RoadRunner Import Options Dialog Box. Click Import.
Under the Scene tab, select Import as Dynamic. This enables translation of the whole scene.
Under Static Meshes, clear Remove Degenerates. Set Normal Input Method as
Input Normals
. Click Import. The import can take up to 1 hour to complete.In the World Outliner, select the scene that you imported, for example
FbxScene_OvalTrack1
. To align the RoadRunner and Unreal coordinate systems, enter a 90° rotation about the Z-axis.Optionally, consider using the editor to add terrain and foliage in the scene.
Save the project (
.uproject
) file. Close the Unreal Editor.
Step 4: Co-Simulate in Vehicle Dynamics Blockset
Open the Simulink® model. Do not open the Unreal Editor.
Open the Simulation 3D Scene Configuration block.
Set Scene source to
Unreal Editor
.Set Project to the project (
.uproject
) file that you saved in Step 3: Import Track to Unreal Engine.Click Apply.
Click Open Unreal Editor.
The project opens in the Unreal Editor.
Select Blueprints > Open Level Blueprint.
In the level blueprint:
Select File > Reparent Blueprint.
Select Sim3dLevelScriptActor.
Click Save.
Close the level blueprint.
In the editor, click Save Current.
This ensures that the vehicle identifies the ground properly during co-simulation.
Run the simulation.
In the Simulink model, click Run.
Because the source of the scenes is the project opened in the Unreal Editor, the simulation does not start.
Verify that the Diagnostic Viewer window in Simulink displays this message:
In the Simulation 3D Scene Configuration block, you set the scene source to 'Unreal Editor'. In Unreal Editor, select 'Play' to view the scene.
This message confirms that Simulink has instantiated the vehicles and other assets in the Unreal Engine 3D environment.
In the Unreal Editor, click Play. The simulation runs in the scene currently open in the Unreal Editor.
See Also
Simulation 3D Scene Configuration
Related Examples
More About
- Integrate Scenes with MATLAB and Simulink (RoadRunner)