{"id":1564,"date":"2026-01-18T17:02:49","date_gmt":"2026-01-18T22:02:49","guid":{"rendered":"https:\/\/blogs.mathworks.com\/autonomous-systems\/?p=1564"},"modified":"2026-03-23T16:09:28","modified_gmt":"2026-03-23T20:09:28","slug":"generating-synthetic-data-for-urban-autonomy-with-intersection-centered-traffic-model","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/autonomous-systems\/2026\/01\/18\/generating-synthetic-data-for-urban-autonomy-with-intersection-centered-traffic-model\/","title":{"rendered":"Generating Synthetic Data for Urban Autonomy with Intersection-Centered Traffic Model"},"content":{"rendered":"<p>Developing ADAS and Automated Driving systems for urban environments is a high-stakes challenge. Intersections are particularly difficult to validate because autonomous vehicles must navigate complex road geometries, traffic signals, and highly dynamic interactions with other road users.<\/p>\n<p>Simulation plays a critical role in addressing this challenge by providing a safe, scalable, and cost-effective environment for system validation and <a href=\"https:\/\/nvidia-cosmos.github.io\/cosmos-cookbook\/recipes\/end2end\/smart_city_sdg\/workflow_e2e.html\">synthetic data generation (SDG)<\/a> for fine-tuning AI models. However, manually creating realistic ambient traffic around intersections is time-consuming and does not scale, particularly when covering diverse behaviors and edge cases.<\/p>\n<p>In the previous posts, we:<\/p>\n<ul>\n<li><a href=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/2026\/01\/05\/roadrunner-for-nvidia-sgd\/\">Established the foundation<\/a> for a MATLAB-based traffic swarm framework that generates randomized ambient traffic within a fixed region of interest (ROI).<\/li>\n<li><a href=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/2026\/01\/15\/scalable-actor-behavior-design-for-randomized-traffic-in-roadrunner\/\">Developed a scalable actor behavior model<\/a> in Simulink to fully leverage the Model-Based Design (MBD) workflow.<\/li>\n<\/ul>\n<p>While the ROI approach is effective for open roads, it often lacks the density and precision needed to stress-test intersection dynamics. This post explores the transition to <strong>intersection-centered traffic generation<\/strong>, which allows us to focus actor spawning on critical intersections. To support this, we also extend the actor behavior model to comply with <strong>traffic signals<\/strong>, ensuring a realistic and high-fidelity simulation environment.<\/p>\n<h1>Create Urban Scenes in RoadRunner<\/h1>\n<p>We begin with a realistic, high-fidelity urban scene using the <span style=\"font-family: 'Consolas', Consolas, monospace;\">USCityBlockBidirectional.rrscene<\/span> in RoadRunner (refer to <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/driving\/ug\/generate-v2x-map-message-from-roadrunner.html\">this example<\/a> for more details). This pre-built environment features 15 intersections with functioning traffic signals and four-lane bidirectional roads, providing the perfect playground for urban validation.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"2289\" height=\"1037\" class=\"aligncenter size-full wp-image-1565\" src=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/image1-2.png\" alt=\"\" \/><\/p>\n<p><a href=\"https:\/\/www.mathworks.com\/products\/roadrunner.html\">RoadRunner<\/a> facilitates the design of these complex scenes, ensuring that the physical and semantic layout\u2014including lane-level connectivity, complex junction geometries, and localized traffic signal placement\u2014aligns precisely with the rigorous requirements of urban autonomy testing.<\/p>\n<h1>Create Scenarios in RoadRunner Scenario<\/h1>\n<p>To create scenarios in RoadRunner Scenario, we first add an ego vehicle and assign it a predefined route. This route serves as the <b data-path-to-node=\"3,0\" data-index-in-node=\"131\">\u201creference path\u201d<\/b> for our autonomous system\u2019s task. You can define this path through two primary methods:<\/p>\n<ul>\n<li><strong>Interactively:<\/strong> Manually draw a path by right-clicking the road surface to place waypoints. RoadRunner automatically snaps these points to lane centers, ensuring the path is lane-compliant and follows the road geometry.<\/li>\n<li><strong>Programmatically:<\/strong> Use automated path planning to generate the route. This involves building a <a href=\"https:\/\/www.mathworks.com\/help\/nav\/ref\/navgraph.html\">navGraph<\/a> from the road network provided by the <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/roadrunner\/ref\/roadrunnerhdmap.html\">RoadRunner HD Map<\/a> and using a <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/nav\/ref\/plannerastar.html\">plannerAStar<\/a> object to calculate the optimal route between start and goal positions.\u00a0 A key advantage of the programmatic approach is the ability to perform <b data-path-to-node=\"3,0\" data-index-in-node=\"72\">replanning<\/b>\u2014the process of dynamically recalculating the vehicle\u2019s route during the simulation in response to environmental changes, such as a blocked lane or a revised destination. This capability is critical for urban autonomy, as it allows the ego vehicle to remain flexible and find the most efficient, legal route when the initial path is no longer viable.<\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"2457\" height=\"1242\" class=\"aligncenter size-full wp-image-1566\" src=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/image2-1.png\" alt=\"\" \/><\/p>\n<p>By defining the ego path first, we create the necessary foreground scenario. Then, we add background traffic to introduce the realism and unpredictability needed for validation.<\/p>\n<p>For more details about this workflow, please refer to the following resources:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/roadrunner-scenario\/ug\/design-path-following-scenario.html\">Design Path Following Scenario<\/a><\/li>\n<li><a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/driving\/ug\/lane-level-path-planning-with-roadrunner-scenario.html\">Lane-Level Path Planning with RoadRunner Scenario<\/a><\/li>\n<\/ul>\n<h1>Add Randomized Ambient Traffic<\/h1>\n<p>To validate the path-following feature through intersections under realistic traffic conditions, we add randomized ambient traffic. This exposes the autonomous driving system to diverse, unpredictable interactions, ensuring robust and safe behavior across a wide range of scenarios.<\/p>\n<p>An <a href=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/2026\/01\/05\/roadrunner-for-nvidia-sgd\/\">earlier post<\/a> introduced a MATLAB-based traffic swarm framework that generates randomized ambient traffic within a fixed region of interest (ROI). However, the <strong>predefined ROI approach<\/strong> often lacks the density needed to stress-test specific junction dynamics. By transitioning to an <strong>Intersection-centered Traffic model<\/strong>, agents are positioned to interact with traffic signals and cross-traffic at targeted intersections. This setup enables rigorous stress-testing of perception and motion-planning systems in complex intersection scenarios.<\/p>\n<h2>Configure Traffic Swarm Parameters<\/h2>\n<p>Compared to the <strong>predefined ROI approach<\/strong>, the key distinction of the <strong>Intersection-centered Traffic model<\/strong> is the introduction of a circular traffic swarm area defined between inner and outer radii and centered at intersections, as shown in the figure below.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"2503\" height=\"1254\" class=\"aligncenter size-full wp-image-1567\" src=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/image3-2.png\" alt=\"\" \/><\/p>\n<p>We introduce a <strong>spawn delay<\/strong> that defines the time between the simulation start and the spawning of the traffic swarm. This <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/roadrunner-scenario\/ug\/action-phases.html#mw_9d2e12f7-4fdc-4742-8b5e-b068bb2159da\">dynamic actor spawning<\/a> can be achieved by adding a \u201c<a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/roadrunner-scenario\/ug\/action-phases.html#mw_b115d904-4854-446b-9437-e74dc0019d7c\"><strong>Wait<\/strong><\/a>\u201d action before the initial action phase.<\/p>\n<p>Ambient traffic is generated only when the ego vehicle enters the swarm area. This dynamic spawning strategy reduces unnecessary computation in unrelated regions of the simulation while focusing resources on the intersection under test.<\/p>\n<p>The following code snippet illustrates an example set of traffic swarm parameters used in the Intersection-centered Traffic model.<\/p>\n<pre><span style=\"color: #339966;\">%--- Define traffic swarm configuration<\/span>\r\ntrafficSwarmConfig.initialSpeedRange = [10, 15]; <span style=\"color: #339966;\">% Speed range [vmin, vmax] (m\/s)<\/span>\r\ntrafficSwarmConfig.TTC = 1.0;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #339966;\">% Safe distance between vehicles in Time-To-Contact (sec)<\/span>\r\ntrafficSwarmConfig.MinRouteLength = 239.9;\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: #339966;\">% Min route length (m)<\/span>\r\ntrafficSwarmConfig.JunctionId = 25;              <span style=\"color: #339966;\">% Intersection id<\/span>\r\ntrafficSwarmConfig.Rmin = 27.3;\u00a0\u00a0\u00a0\u00a0              <span style=\"color: #339966;\">% Set the minimum radius for the traffic swarm (m)<\/span>\r\ntrafficSwarmConfig.Rmax = 74.7;\u00a0\u00a0\u00a0\u00a0              <span style=\"color: #339966;\">% Set the maximum radius for the traffic swarm (m)<\/span>\r\ntrafficSwarmConfig.SpawnDelay = 1.5;             <span style=\"color: #339966;\">% Traffic spawning delay (sec)<\/span>\r\n\r\n<span style=\"color: #339966;\">%--- Define traffic distribution<\/span>\r\nactor(1).Asset = <span style=\"color: #ff00ff;\">\"Sedan\"<\/span>;\r\nactor(1).NumOfActor = 6; <span style=\"color: #339966;\">% Set number of actors for Sedan<\/span>\r\nactor(2).Asset = <span style=\"color: #ff00ff;\">\"SK_PickupTruck\"<\/span>;\r\nactor(2).NumOfActor = 3; <span style=\"color: #339966;\">% Set number of actors for Pickup Truck<\/span>\r\nactor(3).Asset = <span style=\"color: #ff00ff;\">\"DeliveryVan\"<\/span>;\r\nactor(3).NumOfActor = 2; <span style=\"color: #339966;\">% Set number of actors for Delivery Van<\/span>\r\n\r\ntrafficSwarmConfig.TrafficDistribution = actor;\r\ntrafficSwarmConfig.NumberOfVehicles = sum([actor.NumOfActor]); <span style=\"color: #339966;\">% Total number of traffic swarm<\/span><\/pre>\n<h2>Create the Traffic Swarm<\/h2>\n<p>After configuring the swarm parameters, we generate a randomized traffic swarm centered at intersections using the following MATLAB code snippet:<\/p>\n<pre>rrApi = roadrunnerAPI(rrApp);\r\nAmbientTraffic = createTrafficSwarmAroundIntersection(mapInfo,trafficSwarmConfig,egoActor,rrApi);<\/pre>\n<p>The\u00a0<span style=\"font-family: 'Consolas', Consolas, monospace;\">createTrafficSwarmAroundIntersection()<\/span> function randomizes traffic poses centered at intersections while maintaining safe distances between vehicles according to the specified traffic swarm parameters (such as the Time-To-Contact).<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"777\" height=\"677\" class=\"aligncenter size-full wp-image-1570\" src=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/image4-2.png\" alt=\"\" \/><\/p>\n<p>It is important to note that these traffic swarms execute randomized maneuvers and routes at the intersection, with randomized initial poses. Maneuvers at each intersection are selected at random based on lane-connection information from the <strong>V2X map<\/strong>. This ensures that even though the traffic is randomized, every vehicle follows a valid, navigable path through the intersection.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-1571\" src=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/image5-2.png\" alt=\"\" width=\"611\" height=\"484\" \/><\/p>\n<p>For more details on generating V2X map messages from RoadRunner HD maps, please refer to the following resource:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/driving\/ug\/generate-v2x-map-message-from-roadrunner.html\">Generate V2X MAP Message from RoadRunner<\/a><\/li>\n<\/ul>\n<h2>Add Ambient Traffic to RoadRunner Scenario<\/h2>\n<p>We add the randomized traffic swarm to the RoadRunner Scenario using the <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025a\/roadrunner-scenario\/matlab-functions-for-scenario-authoring.html\">RoadRunner Scenario Authoring APIs<\/a>. These MATLAB functions allow you to programmatically create and author scenarios in RoadRunner.<\/p>\n<p>The following MATLAB code demonstrates how to use MATLAB functions to define\u00a0<a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025a\/roadrunner-scenario\/ref\/scenario.addactor.html\">actor assets<\/a>,\u00a0<a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025a\/roadrunner-scenario\/ref\/point.html\">initial positions<\/a>,\u00a0<a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025a\/roadrunner-scenario\/ref\/route.html\">routes<\/a>,\u00a0<a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025a\/roadrunner-scenario\/ref\/behaviorasset.html\">behavior model<\/a>, and\u00a0<a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025a\/roadrunner-scenario\/ref\/phaselogic.html\">scenario logic<\/a>\u00a0for each ambient traffic vehicle.<\/p>\n<pre>rrApp.newScenario();          <span style=\"color: #339966;\">% Create new scenario in RoadRunner Scenario<\/span>\r\nrrApi = roadrunnerAPI(rrApp); <span style=\"color: #339966;\">% Create RoadRunner authoring API object for the current RoadRunner session rrApp<\/span>\r\nprj = rrApi.Project;          <span style=\"color: #339966;\">% get current RoadRunner project<\/span>\r\nrrs = rrApi.Scenario;         <span style=\"color: #339966;\">% get current RoadRunner scenario<\/span>\r\nphaseLogic = rrs.PhaseLogic;  <span style=\"color: #339966;\">% Logic for scenario<\/span>\r\n\r\nnumActors = height(AmbientTraffic); <span style=\"color: #339966;\">% trafficSwarmConfig.NumberOfVehicles;<\/span>\r\ncolors = lines(numActors);\r\ncolors(:,4) = 1; <span style=\"color: #339966;\">% Alpha (opacity) = 1: no transparency<\/span>\r\nactors = cell(numActors,1);\r\n\r\nbuiltInBehavior = getAsset(prj,<span style=\"color: #ff00ff;\">\"Behaviors\/TrafficFollower.rrbehavior\"<\/span>,<span style=\"color: #ff00ff;\">\"BehaviorAsset\"<\/span>);\r\n\r\n<span style=\"color: #0000ff;\">for<\/span> i = 1:numActors\r\n   assetPath = getAssetPath(AmbientTraffic.ActorType(i));\r\n   actorAsset = getAsset(prj,assetPath, <span style=\"color: #ff00ff;\">\"VehicleAsset\"<\/span>); <span style=\"color: #339966;\">% extract vehicle asset<\/span>\r\n   actors{i} = rrs.addActor(actorAsset, AmbientTraffic.InitPosition(i,:)); <span style=\"color: #339966;\">% add actor to RoadRunner Scenario<\/span>\r\n   actors{i}.ActorID = AmbientTraffic.ActorId(i); <span style=\"color: #339966;\">% assign actor ID<\/span>\r\n<span style=\"color: #0000ff;\">   if<\/span> actors{i}.ActorID==EgoActor.ActorId<span style=\"color: #339966;\"> % actor is ego?<\/span>\r\n      actors{i}.Name = string(EgoActor.Name);\r\n<span style=\"color: #0000ff;\">   end<\/span>\r\n\r\n   actors{i}.Color = colors(i,:);<span style=\"color: #339966;\">             % assign actor color, RGBA<\/span>\r\n   actors{i}.BehaviorAsset = builtInBehavior; <span style=\"color: #339966;\">% assign builtInBehavior<\/span>\r\n   actors{i}.InitialPoint.autoAnchor();<span style=\"color: #339966;\">       % Anchor point (initial position) to nearest road<\/span>\r\n\r\n<span style=\"color: #339966;\">   % Set initial speed to an absolute value<\/span>\r\n   initPhase = phaseLogic.initialPhaseForActor(actors{i});\r\n   initSpeedAction = initPhase.findActions(<span style=\"color: #ff00ff;\">\"ChangeSpeedAction\"<\/span>);\r\n   initSpeedAction.Speed = AmbientTraffic.Speed(i);\r\n   initSpeedAction.SpeedReference = <span style=\"color: #ff00ff;\">\"absolute\"<\/span>;\r\n\r\n<span style=\"color: #0000ff;\">   if<\/span> actors{i}.ActorID~=EgoActor.ActorId <span style=\"color: #339966;\">% actor is not ego?<\/span>\r\n<span style=\"color: #339966;\">      % Add Serial Phase before initial phase for spawning actor<\/span>\r\n      spawnPhase = addPhaseInSerial(phaseLogic,initPhase,<span style=\"color: #ff00ff;\">\"SystemActionPhase\"<\/span>,Insertion=<span style=\"color: #ff00ff;\">\"before\"<\/span>);\r\n      addAction(spawnPhase,<span style=\"color: #ff00ff;\">\"WaitAction\"<\/span>);\r\n      durCondition = setEndCondition(spawnPhase,<span style=\"color: #ff00ff;\">\"DurationCondition\"<\/span>);\r\n      durCondition.Duration = trafficSwarmConfig.SpawnDelay; <span style=\"color: #339966;\">% Set spawn delay time<\/span>\r\n<span style=\"color: #0000ff;\">   end<\/span>\r\n<span style=\"color: #0000ff;\">end\r\n<\/span><\/pre>\n<h2>Assign Actor Behaviors to the Ambient Traffic Vehicles<\/h2>\n<p>Each ambient traffic vehicle is assigned a behavior model that enables it to follow a designated route while complying with traffic signals and avoiding collisions using Adaptive Cruise Control (ACC). To fully leverage the Model-Based Design (MBD) workflow, this behavior model is implemented in Simulink, as shown below, and incorporates the following controllers:<\/p>\n<ul>\n<li><strong>Trajectory Follower:<\/strong> Ensures the vehicle accurately tracks the randomized path generated at the intersection.<\/li>\n<li><strong>Adaptive Cruise Control (ACC):<\/strong> Manages longitudinal speed to maintain safe distances from other vehicles.<\/li>\n<li><strong>Traffic Signal Follower:<\/strong> Allows the vehicle to perceive and respond to the state of traffic signals at the intersection.<\/li>\n<\/ul>\n<pre><span style=\"color: #0000ff;\"><img decoding=\"async\" loading=\"lazy\" width=\"1912\" height=\"743\" class=\"aligncenter size-full wp-image-1578\" src=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/Simulink-1.png\" alt=\"\" \/>\r\n<\/span><\/pre>\n<p>In this implementation, the <strong>lead vehicle<\/strong> in the same lane as the ego vehicle is identified by localizing each vehicle\u2019s pose on the <strong>V2X map<\/strong>. We chose this approach\u00a0<span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">rather than using an\u00a0<a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/driving\/ref\/idealgroundtruthsensor.html\" target=\"_blank\" rel=\"noopener\">ideal ground truth<\/a><\/span><a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/driving\/ref\/idealgroundtruthsensor.html\">\u00a0sensor<\/a> to demonstrate an alternative implementation method\u2014comparing map-based vs. sensor-based logic.<\/p>\n<p>For more details on the implementation of <strong>ACC<\/strong> and the <strong>Trajectory Follower<\/strong>, see my <a href=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/2026\/01\/15\/scalable-actor-behavior-design-for-randomized-traffic-in-roadrunner\/\">previous post<\/a>. Please note a key architectural detail: the predefined reference path is assigned directly to the <strong>Trajectory Follower <\/strong>block within the Simulink model, rather than being fed from the <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/driving\/ref\/roadrunnerscenarioreader.html#mw_3314090f-e6b2-491a-bef9-73747b0174be\">Path Following Action<\/a> of the RoadRunner Scenario Reader. This provides another design alternative, allowing future flexibility in adopting online replanning.<\/p>\n<p>The <strong>Traffic Signal Follower<\/strong> is implemented by accessing the <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2024b\/driving\/ref\/simulink.actorsimulation.getattribute.html?searchHighlight=trafficsignalcontrollerruntime&amp;s_tid=doc_srchtitle#mw_b765bbba-2164-4f45-a33d-c956b436a3a5\">traffic signal controller runtime<\/a> and <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2024b\/driving\/ref\/simulink.actorsimulation.getattribute.html?searchHighlight=trafficsignalcontrollerruntime&amp;s_tid=doc_srchtitle#mw_48256c94-31cc-49ba-9116-7c420cea0141\">traffic signal runtime<\/a> APIs in RoadRunner Scenario. For more details about the Traffic Signal Follower, please refer to the following resource:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/driving\/ug\/traffic-signal-follower-with-roadrunner-scenario.html\">Traffic Signal Follower with RoadRunner Scenario<\/a><\/li>\n<\/ul>\n<h2>Publishing Ready-to-Run Actor Behaviors<\/h2>\n<p>To assign the same Simulink actor behavior to multiple actors in RoadRunner, you can publish a ready-to-run package from your Simulink behavior model. This approach enables RoadRunner to execute the compiled behavior directly, without rebuilding the Simulink model at runtime, and allows the same package to be reused by many actors.<\/p>\n<p>Use the following command to generate the package:<\/p>\n<pre>Simulink.publish.publishActor(<span style=\"color: #ff00ff;\">'TrafficFollowerSL'<\/span>,PackageType=<span style=\"color: #ff00ff;\">'ReadyToRun'<\/span>)<\/pre>\n<p>For further details on Ready-to-Run Actor Behaviors, see my <a href=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/2026\/01\/15\/scalable-actor-behavior-design-for-randomized-traffic-in-roadrunner\/\">earlier post<\/a> and the following link:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2025b\/driving\/ug\/Create-and-Publish-Ready-to-Run-Actor-Behaviors-to-Improve-Simulation-Performance.html\">Publish Ready-to-Run Actor Behaviors for Reuse and Simulation Performance<\/a><\/li>\n<\/ul>\n<h1>Run Scenario Simulation<\/h1>\n<p>The video below shows an example simulation using this intersection-centered workflow. In this scenario, a blue ego vehicle approaches an intersection; after a predefined spawn delay, the ambient traffic swarm is dynamically spawned. All vehicles, including the ego, comply with traffic signals, and no collisions occur despite the high density of the intersection.<\/p>\n<p><div style=\"width: 2880px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-1564-1\" width=\"2880\" height=\"1080\" loop=\"1\" autoplay=\"1\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/demo_1_sim_x_6.mp4?_=1\" \/><a href=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/demo_1_sim_x_6.mp4\">https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/demo_1_sim_x_6.mp4<\/a><\/video><\/div><\/p>\n<p>By using this workflow, you can validate your urban autonomy models in a realistic, dynamic environment that accurately represents the unpredictability of city driving.<\/p>\n<p>See an example of such a model below:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.mathworks.com\/videos\/automated-urban-driving-managing-lane-changes-traffic-signals-and-collision-avoidance-1747208291063.html\">Automated Urban Driving: Managing Lane Changes, Traffic Signals, and Collision Avoidance<\/a><\/li>\n<\/ul>\n<h1>Conclusion<\/h1>\n<p>The <strong>Intersection-Centered Traffic Model<\/strong> allows us to focus actor spawning on critical intersections. This workflow ensures that the resulting synthetic data captures complex edge cases\u2014such as signal compliance and cross-traffic yield behaviors\u2014that are often missed in broader ROI approaches. Ultimately, this process not only validates the safety and robustness of motion planners in complex urban environments but also provides the high-fidelity synthetic data necessary for fine-tuning next-generation AI, such as <a href=\"https:\/\/nvidia-cosmos.github.io\/cosmos-cookbook\/recipes\/end2end\/smart_city_sdg\/workflow_e2e.html\">NVIDIA\u2019s Cosmos<\/a> or <a href=\"https:\/\/research.nvidia.com\/publication\/2025-10_alpamayo-r1\">Alpamayo <\/a>vision-language-action (VLA) models.<\/p>\n<p>&nbsp;<\/p>\n<p>To request the MATLAB code and Simulink model described in this post or receive technical support for the workflow, please contact MathWorks at <a href=\"mailto:automated-driving@mathworks.com\">automated-driving@mathworks.com<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img decoding=\"async\"  class=\"img-responsive\" src=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/files\/2026\/01\/image1-2.png\" onError=\"this.style.display ='none';\" \/><\/div>\n<p>Developing ADAS and Automated Driving systems for urban environments is a high-stakes challenge. Intersections are particularly difficult to validate because autonomous vehicles must navigate complex&#8230; <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/autonomous-systems\/2026\/01\/18\/generating-synthetic-data-for-urban-autonomy-with-intersection-centered-traffic-model\/\">read more >><\/a><\/p>\n","protected":false},"author":191,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[233,231,232],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/posts\/1564"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/users\/191"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/comments?post=1564"}],"version-history":[{"count":37,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/posts\/1564\/revisions"}],"predecessor-version":[{"id":1613,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/posts\/1564\/revisions\/1613"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/media?parent=1564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/categories?post=1564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/autonomous-systems\/wp-json\/wp\/v2\/tags?post=1564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}