US city block 3D environment
The US City Block scene is a 3D environment of a US city block that contains 15 intersections and 30 traffic lights. The scene is rendered using the Unreal Engine® from Epic Games®.
To simulate a driving algorithm in this scene:
Add a Simulation 3D Scene Configuration block to your Simulink® model.
In this block, set the Scene source parameter to
Set the enabled Scene name parameter to
US city block.
Explore the 3D US City Block scene and inspect its dimensions by using a corresponding 2D top-view image of the scene.
You can use this image to inspect the scene before simulation and choose starting coordinates for vehicles. For details on using these images to select waypoints for path-following applications, see the Select Waypoints for 3D Simulation example.
Load the 2D spatial referencing object that corresponds to the scene. This
imref2d object describes the relationship between the pixels in the image and the world coordinates of the scene.
data = load('sim3d_SpatialReferences.mat'); spatialRef = data.spatialReference.USCityBlock
spatialRef = imref2d with properties: XWorldLimits: [-243.0500 200.2500] YWorldLimits: [-215.6500 227.6500] ImageSize: [4275 4275] PixelExtentInWorldX: 0.1037 PixelExtentInWorldY: 0.1037 ImageExtentInWorldX: 443.3000 ImageExtentInWorldY: 443.3000 XIntrinsicLimits: [0.5000 4.2755e+03] YIntrinsicLimits: [0.5000 4.2755e+03]
Display the image corresponding to the scene. Use the spatial referencing object to display the axes in the world coordinates of the scene. Units are in meters.
By default, the
imshow function displays Y-axis values that increase from top to bottom. To align with the Automated Driving Toolbox™ world coordinate system, set the Y-direction to
'normal' so that Y-axis values increase from bottom to top.
The image displays only the area of the scene containing the city block. The full scene has a length and width of 2040 meters.
figure fileName = 'sim3d_USCityBlock.jpg'; I = imshow(fileName,spatialRef); set(gca,'YDir','normal') xlabel('X (m)') ylabel('Y (m)')
Zoom in on the origin of the scene. Place a marker at the origin.
xlim([-35 35]) ylim([-35 35]) hold on plot(0,0,'o','MarkerFaceColor','r','MarkerEdgeColor','k','MarkerSize',8) offset = 1; % px text(offset,offset,'(0,0)','Color','w','FontWeight','bold','FontSize',12) hold off
Each intersection in the scene contains two traffic light groups. These traffic lights change color based on common US traffic light patterns. All roads in the scene are one-way and follow the direction of traffic shown here.
If you have the
Automated Driving Toolbox™ Interface for Unreal Engine 4 Projects support package, then you can modify this scene. In
the Unreal Engine project file that comes with the support package, this scene is
For more details on customizing scenes, see Customize 3D Scenes for Automated Driving.