ISAT Demonstration Scenarios

About the ISAT Demonstration Scenarios

Making something happen during a simulation in a repeatable and consistent fashion for different driving styles is the essence of scenario authoring. Every thing that happens must be coordinated to some degree with the External Driver (XD). For repeatability, it is also necessary to consider how different driving styles (aggressive vs. conservative) impact how the scenario unfolds for each.

These demonstration scenarios were created to facilitate learning how to use ISAT and do scenario actions. Each scenario demonstrates a key concept or element and may contain additional elements to support the main concept. For example, all scenarios contain an introduction to the scenario for the XD and a termination trigger that will stop the simulation.

These scenarios are not intended for use as completed data collection ready scenarios. They are provided to answer the question "how can I do X Y Z..?"

These scenario elements can be integrated into your scenarios using copy-paste except where elements have been created with a Create action. For those elements it will be necessary to copy the parent element instead.

TBC: Add a link to the library or directions how to get the files

Demo_ISAT_ADO_Control.scn

This scenario demonstrates how to control an ADO:

• ADO set dial > forced velocity = 0 to keep ADO stationary.

• Release the forced velocity, assign a maintain gap.

• Release the maintain gap, assign a target velocity.

See also:

Demo_ISAT_ADO_Forced_Velocity_Sum_of_Sines.scn
Demo_ISAT_ADO_Oncoming_Incursion.scn
Demo_ISAT_ADO_TTA_LVPO.scn

Demo_ISAT_ADO_Forced_Velocity_Sum_of_Sines.scn

This scenario demonstrates how to vary the velocity of an ADO using a Sum of Sines expression:

  • Uses a forced velocity action;
  • Try to maintain a constant speed at 30 mph;
  • Notice how the speed of the ADO changes during the drive.

Note: There is also a forced velocity Sin function available with 4 parameters

See Also:

Demo_ISAT_ADO_Control.scn
Demo_ISAT_ADO_Oncoming_Incursion.scn
Demo_ISAT_ADO_TTA_LVPO.scn

Demo_ISAT_ADO_Oncoming_Incursion.scn

This scenario demonstrates the use of a forced lane offset to cause an oncoming ADO to veer into the driver’s lane:

  • Additional ambient traffic is included to provide a normal driving environment;
  • A following ADO will encourage slow drivers to travel the speed limit;
  • Because we do not want to rely on the driver travelling at the right speed, we match the event ADO velocity to the driver to ensure the event happens as planned.

See Also:

Demo_ISAT_ADO_Control.scn
Demo_ISAT_ADO_Forced_Velocity_Sum_of_Sines.scn
Demo_ISAT_ADO_TTA_LVPO.scn

Demo_ISAT_ADO_Passing_Maneuvers.scn

This scenario demonstrates how to implement an ADO passing maneuver on 4 lane and 2 lane roads:

  • 4 lane roads can use either Set Dial > ADO > Lane Change OR Set_Button > ADO > Lane Change;
  • Lane change actions are not supported on 2 lane roads;

- Use a lane offset to produce something similar to a passing maneuver


See also:

Demo_ISAT_ADO_Control.scn

Demo_ISAT_ADO_Random.scn

This scenario demonstrates how to use the Rand() function to assign a randomized gap to an ADO:

  • Typical gap assignments are fixed/constant;
  • Use of a randomized value introduces some inconsistency to the ADO position, which is organic and more realistic.
  • Requires the use of variables and expressions.
  • Saves the calculated randomizations to the DAQ for validation (review in ISAT).


See also:

Demo_ISAT_ADO_Control.scn
Demo_ISAT_ADO_Forced_Velocity_Sum_of_Sines.scn
Demo_ISAT_ADO_TTA_LVPO.scn

Demo_ISAT_ADO_Relative_Create.scn

This scenario demonstrates how to use the Relative Create flag for ADOs.

Note: Relative Create works only with negative values.

Used to create traffic behind the external driver independent of the location where the ADOs are initially placed.


See Also:

Demo_ISAT_ADO_Traffic_1.scn

Demo_ISAT_ADO_Traffic_1.scn

This scenario demonstrates how to create traffic in a scenario:

  • Create ADOs or copy/paste to locations within the drive;
  • Create ADOs with a Creation Radius (they get created as the External Driver drives the route);
  • Create ADOs with a trigger Create action;
  • Generate traffic with a Traffic Source;
  • Generate traffic with the Traffic Manager (or change TM sets).

Each method has advantages and disadvantages.


See Also:

Demo_ISAT_ADO_Relative_Create.scn

Demo_ISAT_ADO_TTA_LVPO.scn

This scenario demonstrates the use of Time to Arrival trigger to create a crashpossible event:

  • The scenario contains some distracting elements;
  • The event ADO behavior is highly dependent on the speed of the XD.

- If the driver is going too fast it may cause the event ADO to disappear

  • A time trigger with creation radius acts as a proximity trigger to end the drive, in case the driver steers out of the crash area.


See Also:

Demo_ISAT_ADO_Control.scn
Demo_ISAT_ADO_Forced_Velocity_Sum_of_Sines.scn
Demo_ISAT_ADO_Oncoming_Incursion.scn

Demo_ISAT_Alert_Slow_Moving_Object.scn

This scenario demonstrates how to implement a proximity alert to warn the driver of a slow moving vehicle ahead:

  • Speed monitor to ensure the driver is travelling at a velocity where the event can happen
  • Alarm triggers when proximity threshold is achieved

Because there is no good way to tell in advance where the event happens, the end of drive happens following the alert.

Demo_ISAT_Avoid_Obstacle.scn

This demo scenario demonstrates a collision avoidance event using ambient traffic and a DDO obstacle:

  • The event requires some setup to position the event vehicles
  • The obstacle is a DDO (desk) contained within a van model that has operable rear doors which swing open
  • The DDO transitions from a coupled object to a free motion object

Demo_ISAT_Create_Elements.scn

This scenario demonstrates how to create scenario elements during a drive with the Create Element action.

  • Remember all triggers share the same actions; thus, any trigger may contain a create action.
  • Only 1 create action is permitted per trigger.

Demo_ISAT_Data_Measures_Default_Measures.scn

This scenario demonstrates how to use the miniSim Default Measures in a scenario to produce a valid report for the drive:

  • Must follow the write to cell procedure for events:
  1. initialize event status and event number to zero at scenario start
  2. change SCC_EventStatus from 0 to 1 for the event, and close to 0 after the event
  3. change SCC_EventNumber throughout the drive (incremental count starting with 1, 2, 3, etc.)
  • Produces a report.txt for each drive
  • The drive report.txt for each drive is located in the DAQ folder location.

Note: if proper write to cell steps aren’t followed, all measures will be empty in the report.

Demo_ISAT_Data_Measures_Logstreams.scn

This scenario demonstrates the use of Log Streams for documenting significant locations or events in your DAQ file.

  • Best practice: initialize all Logstreams to some value at the start.
  • Events may be numbered, or subdivided using the same logstream. This demo uses LogStream 1.
  • The scenario author and data reduction scientist must agree on what measures are important to encode.

Demo_ISAT_DDOs.scn

This scenario demonstrates different ways to use DDOs and DDDOs. Both types typically begin moving when the scenario starts, unless you assign a creation radius or control the DDO speed.

1. DDO: simple path follower.

2. DDDO (dependent path follower): includes a target path node and a target point. The DDDO movement is constrained so when the specified object is at the target point, the DDDO will be at the target path node irrespective of the speed assigned to each node. DDO and DDDOs can be pedestrians, animals or vehicles.

Demo_ISAT_Display_Screen_Text.scn

This scenario demonstrates how to display text messages to the screen.

Text font, color and locations are specified at: NadsMiniSim_x.x\bin.x64\config\scenario_text.xml

*Be sure to maintain a backup if you edit this file!

See Also: Demo_ISAT_Monitor_Driver_Speed.scn Demo_ISAT_Show_Driver_Speed.scn

Demo_ISAT_ENV_Dynamic_Fog.scn

This scenario demonstrates how to gradually apply fog and the difference between fog and visibility. The usual method of adding weather effects to a scenario is by defining a region of influence which means the effect is applied abruptly to the scene at the region boundaries (on/off).

  • Fog and Visibility are Weather Effects

- Insert >> Environment Conditions

  • Fog density is managed with 3 variables:
  1. FogDistance
  2. MaximumFog
  3. FogDensity
  • An example of reduced Visibility is included near the end of this drive to show how that setting is different from fog.

Demo_ISAT_time_of_day.scn

This scenario demonstrates how to change the time of day:

  • Variables are used to track day-night cycles
  • Time settings (Hour) were chosen arbitrarily
Small time differences will not affect environment; ie. 07:10 – 07:30
  • A parked F150 ADO in the scenario has auto-headlights enabled

NOTE: Headlight control from scenario requires changes to the miniSim hardware.xml configuration file – they do not automatically turn on at night

Demo_ISAT_Exit_Simulation_on_Collision.scn

This scenario demonstrates how to terminate simulation if a collision happens during a drive. Collisions may occur with ADOs, DDOs, DDDOs and static objects that are present in the scene.

Note: It is possible to configure miniSim or edit the scenario object list file (SOL2.txt) to disable collisions either globally or for specific objects. In that event this scenario will not terminate due to a collision.

Demo_ISAT_Exit_Follow_Trigger_Create.scn

This scenario demonstrates use of the Follow Trigger:

  • The follow trigger can activate between any two dynamic objects;
  • Most commonly uses the XD for one of the two objects (leader or follower);
  • Trigger instigator (predicate) can be either;
  • The follow trigger action stack is processed when the trigger conditions have been met;
  • When the actions are executed an oncoming Ambulance ADO is created.

Demo_ISAT_Get_ObjTTC.scn

This scenario demonstrates how to get a Time To Collision for dynamic and stationary objects (DDOs and ADOs):

  • Any time delays in the action stack collecting data and reporting it will create a variance between what you measure in ISAT and what gets reported in the DAQ;
  • Cells and variables are used to get the information for TTC and distance;
  • Variables are written to SCC_Custom1 – 3 for distance, TTC and the raw distance value reported by GetObjDistPow2;
  • 3 events are shown to illustrate re-use of the same variables throughout for the target object:
  1. DDO dynamic
  2. DDO stationary
  3. ADO stationary
  • Logstreams are used for event numbering and distances to each object;
  • If you re-use the same object name, you must remove the previous object – only 1 should be present in the simulation at any time.


NOTE: Static objects cannot be created in realtime with the Create Element action, but they can be created as DDOs. They default to their first visual option; change with a set switch action.

Demo_ISAT_Lane_Context_Actions.scn

This scenario demonstrates how to limit actions to a specific lane.

  • Lane filter can only be used with roadpad triggers.
  • Useful for situational cases: if the driver is in the correct lane, then they will not receive alert. If the driver is in the wrong lane, then they will.
  • Also useful for ADO control at the lane level.


See also:

Demo_ISAT_ADO_Control.scn

Demo_ISAT_Loop_Management_Traffic.scn

This scenario demonstrates how to configure a scenario where it is necessary to drive multiple loops:

  • Increment a counter at the location the loop counts increase;
Each time through the loop a unique action happens
Increment and decrement operators are not expressions!
  • Expression triggers fire on loops (one per loop);
  • Can create more than ADOs.

Demo_ISAT_Monitor_Driver_Speed.scn

This scenario demonstrates how to monitor driver velocity. Triggers are configured to monitor driving too slowly (under speed) and driving too fast. The threshold between under and over speed is intentionally difficult to maintain – the goal is to achieve a few alerts of either kind during the drive:

  • Variable sets are used for under, over speed cases:
a timer that increments a variable for each;
an additional conditional (variable) so there is no alert at scenario start, while the driver is getting up to operating speed.

Demo_ISAT_Play_Audio.scn

This scenario demonstrates how to play audio messages on miniSim using the write to cell >> SCC_Audio_Trigger action. A short delay after the write to cell action is recommended.

Note: Recommended practice requires a second write to cell action to ‘clear’ the previous audio message.

Playing two write to cell >> SCC_Audio_Trigger actions back to back with no delay, and no ‘clear’ likely results in a single audio message. For long messages, use the length of the message as a delay to avoid over-writing the message being played with any subsequent messages.

See also:

How to Use Audio in your Scenario

Demo_ISAT_Right_Incursion.scn

This scenario demonstrates how to present a crash possible event using a right-side incursion:

• Ambient traffic and features are used during the drive; • The event is coupled with an oncoming vehicle distraction; • The event is masked by features in the scene.

Demo_ISAT_Set_Switch.scn

This scenario demonstrates how to change objects during a simulation with a Set Switch action (static object, DDO, ADO objects).

• The set switch action requires the model switch name; • Switches for all models are listed in the file NadsMiniSim_x.x\bin.x64\ModelList.txt


Demo_ISAT_Stop_Drive.scn

This scenario demonstrates how to terminate a simulation from the scenario:

• A roadpad trigger tells the driver it is time to stop and shift into park, and creates an Expression trigger to: - monitor the transmission gear, - terminate the simulation if the driver shifts into Park. A Roadpad trigger acts as a backup that ends the drive if the XD doesn’t stop.

Demo_ISAT_Show_Driver_Speed.scn

This scenario demonstrates how to display variables on screen using the Set Visual Display Text action.

  • A time trigger is configured to monitor conditions; in this case, the external driver’s speed.
  • The monitoring trigger is created by a roadpad trigger to ensure the driver is moving; therefore driver velocity is not zero.
  • The monitoring trigger fires repeatedly during the drive.
  • A variable is set to the value of a cell containing the driver velocity;
  • That value is displayed on screen.

See Also:

Demo_ISAT_Display_Screen_Text.scn
Demo_ISAT_Monitor_Driver_Speed.scn

Demo_ISAT_Track_Button_Press.scn

This scenario demonstrates how to display variables on screen using the Set Visual Display Text action:

• A time trigger This demo scenario uses expression triggers to detect button presses (turn signal activation). • Variables are used to track which signal was activated (left vs. right) and demo progress.

Note: The values used in the scenario may be site-specific; if your miniSim does not produce the values used, this scenario may fail.

To determine the correct values for your miniSim, drive any scenario and press the left, then the right turn signals and review this drive DAQ in ISAT. The relevant cell is CIS_Turn_Signal.

Demo_ISAT_Traffic_Light.scn

This scenario demonstrates the use of a Traffic Light Trigger:

  • A traffic light trigger activates at a specified signal state;
  • Relies on a traffic light action to set the signal to a specified state;
  • That state must already exist in the traffic signal timing table configuration for the intersection
dbl-click on the traffic signal to open the signal timing table
  • A more robust method would use a time to arrival (TTA) trigger that can accommodate different XD velocities or driving styles (conservative vs. aggressive, slow vs. fast) instead of the roadpad and delays used in this demo.

Demo_ISAT_Virtual_Objects.scn

This scenario demonstrates how to display and control virtual objects during a drive. Virtual objects render to screen space on top of everything on display; they do not typically occupy 3d space within the scene.

One possible application for virtual objects is to use them as a custom heads up display (HUD) or alert system within the scenario.

By default virtual objects initialize to state 0 (off/disabled) at scenario start.

Note: Currently only Render Type = Overlay and Main Screen are supported.

Demo_ISAT_Yellow_Light_Dilemma.scn

This scenario demonstrates how to create a Yellow Light dilemma at an intersection.

  1. There must be a working signal state table;
  2. The traffic signal is controlled by a time to arrival (TTA) trigger;
  3. If the XD decides to stop, a roadpad trigger created by (2) will reset the signal to green so the XD can continue the drive;
  4. A roadpad trigger terminates the drive after the intersection.