MV-8002: Multi-Maneuver Events

In this tutorial, you will learn how to define end conditions for a maneuver or a sub-event, write parametric expressions, and to define events as multiple sub-events executed sequentially

End conditions
Conditions to end a particular maneuver before given simulation end time.
Examples of the end conditions can be – End maneuver when longitudinal velocity is greater than 10 m/s or when roll angle reaches steady state. The end conditions can be logically coupled (OR-ed or AND-ed) by splitting them into groups.
Multi-maneuver events
Events consisting for more than one maneuver – these maneuvers are executed sequentially.
The controllers can only be changed while switching the maneuvers.
Tip: Whenever it is needed to change the controller, change instead the maneuver.
Driver does the following while switching the maneuvers:
  • Halts previous maneuver
  • Saves the signals value that acts as initial value for next maneuver in case of parametric expressions (there is a list of signals that driver monitors, please refer to the documentation for more details).
  • Executes the change of/in controller
  • Starts new maneuver
Examples: Fishhook, J-turn, Throttle off cornering analysis
Parametric Expressions
In a multi-maneuver event, expressions need to be re-evaluated before the start of the maneuver in order to maintain the continuity of the signals.
{ Expression in Curly Braces }
Instruction to driver to evaluate the expression before giving it to MotionSolve
{SIGNAL}
Evaluated as VARVAL(signal solver variable id)
{SIGNAL_0}
Evaluated as Signal Value at the end of last maneuver
{%SIGNAL}
Evaluated as {SIGNAL} – {SIGNAL_0}
Driver evaluates the expressions for the maneuver before the start of the maneuver.
Example:
Throttle off cornering event in two maneuvers
Maneuver 1
Constant cornering in constant radius path with constant velocity until the roll angle reaches its maximum and stabilizes.
Maneuver 2
Step down the throttle while following the same path.

In this event, Maneuver 1 would typically consist of closed loop steering and throttle controllers.

In the Maneuver 2 event, the steering controller still remains the same, however the throttle controller is an open loop, type expression – ‘STEP(TIME – end time of maneuver 1 , 0, throttle value at the end of maneuver 1, 0.5, 0)’.

Figure 1.

Assemble the Vehicle

Follow the instructions in Step #1 of tutorial MV-8000 to create the vehicle with the topology as provided below.
Page Label Selection
1 Model type Full vehicle with advanced driver
2 Driveline configuration Front wheel drive
3 Vehicle body Body
3 Front subframe None
3 Front suspension Frnt macpherson susp (1 pc. LCA)
3 Steering linkages Rackpin steering
3 Rear subframe None
3 Rear suspension Rear quadlink susp
3 Powertrain Linear torque map powertrain
3 Tires AutoTires
4 Steering column Steering column 1 (not for Abaqus)
4 Steering boost None
5 Front struts Frnt strut (with inline jts)
5 Front stabilizer bars Frnt stabar with links
5 Rear struts Rear strut (with inline jts)
5 Rear stabilizer bars Rear stabar with links
6 Front jounce bumpers None
6 Front rebound bumpers None
6 Rear jounce bumpers None
6 Rear rebound bumpers None
7 Disk brakes Disk brakes
7 Front driveline Independent fwd
8 Aerodynamic Forces None
9 ABS/ESP System None
9 Traction Control None
10 Drive system Altair Driver
11 Finish

Adding Driver Analysis

  1. Use the Task Wizard to load the driver analysis.
    Figure 2.
  2. Select the AltairDriverFile as the Event Type and click OK.
    Figure 3.

Write the Altair Driver File (ADF)

We will model a Fish Hook Event using three sequential maneuvers.

Figure 4.


  1. Open any text editor, copy and paste the following text, and save the text file as multievents.adf.
    Important: All blank lines must be removed prior to saving the file!

    Be sure to read through the comments for a better understanding on what is written in the ADF.

    $-----------------------------------------------------------------ALTAIR_HEADER
    [ALTAIR_HEADER]
    FILE_TYPE 		= 'ADF'
    FILE_VERSION 	= 2.0
    FILE_FORMAT 	= 'ASCII'
    $--------------------------------------------------------------------------UNITS
    [UNITS]
    (BASE)
    {length  force      angle       mass    time}
    'meter'   'newton'   'radians'   'kg'    'sec'
    $--------------------------------------------------------------VEHICLE_IC
    [VEHICLE_INITIAL_CONDITIONS]
    VX0 	= 17.5
    VY0 	= 0.0
    VZ0 	= 0.0
    $--------------------------------------------------------------STEERING_STANDARD
    [STEER_STANDARD]
    $Upper and lower bounds are kept to match the event requirement of saturating at 
    $270 deg and -540 deg respectively
    MAX_VALUE 	        =  4.712 
    MIN_VALUE 	        =  -9.425
    SMOOTHING_FREQUENCY = 5 
    INITIAL_VALUE       = 0.0
    $--------------------------------------------------------------THROTTLE_STANDARD
    [THROTTLE_STANDARD]
    MAX_VALUE           = 1
    MIN_VALUE           = 0
    SMOOTHING_FREQUENCY = 5
    INITIAL_VALUE       = 0.0
    $---------------------------------------------------------------BRAKING_STANDARD
    [BRAKE_STANDARD]
    MAX_VALUE           = 1
    MIN_VALUE           = 0
    SMOOTHING_FREQUENCY = 5
    INITIAL_VALUE       = 0.0
    $-----------------------------------------------------------------MANEUVERS_LIST
    [MANEUVERS_LIST]
    {name  		simulation_time         h_max   	print_interval}
    'GO_STRAIGHT'        		2.0     		0.01		0.1
    'LEFT_TURN'                 	10.0		0.001		0.1
    'RIGHT_TURN'              	10.0		0.001       	0.1
    $-----------------------------------------------------------------MANEUVER_1
    [GO_STRAIGHT]
    TASK = 'STANDARD' 
    (CONTROLLERS)
    {DRIVER_SIGNAL  PRIMARY_CONTROLLER	ADDITIONAL_CONTROLLER}
     STEER	OL_CONSTANT_STEER           	NONE
     THROTTLE	FEED_FORWARD_TRACTION       	NONE
     BRAKE	FEED_FORWARD_TRACTION       	NONE
    $---------------------------------------------------------------------MANEUVER_2
    [LEFT_TURN] 
    TASK = 'STANDARD' 
    (CONTROLLERS)
    {DRIVER_SIGNAL  PRIMARY_CONTROLLER	ADDITIONAL_CONTROLLER}
     STEER	OL_LEFT_STEER            		NONE
     THROTTLE	FEED_FORWARD_TRACTION		NONE
     BRAKE	FEED_FORWARD_TRACTION		NONE
    $The TIME end condition defined below will trigger the Roll Rate end condition after the time value (3s) 
    $We want to end the left turn maneuver if the roll rate reaches steady state in other words, d(Roll rate)/dt = 0 any time after the time value (3s
    $ Operator definition: SS = Steady State, GT =  Greater Than
    (END_CONDITIONS)
    {SIGNAL                GROUP  ABS  OPERATOR  VALUE  TOLERANCE  WATCH_TIME}
    TIME                    0        Y       GT    3         0           0
    ROLL_RATE               1	 Y       SS     0        0.005       0.5
    $---------------------------------------------------------------------MANEUVER_3
    [RIGHT_TURN] 
    TASK = 'STANDARD' 
    (CONTROLLERS)
    {DRIVER_SIGNAL  PRIMARY_CONTROLLER	ADDITIONAL_CONTROLLER}
     STEER	OL_RIGHT_STEER            	NONE
     THROTTLE	FEED_FORWARD_TRACTION	NONE
     BRAKE	FEED_FORWARD_TRACTION	NONE
    $--------------------------------------STEER for Maneuver 1
    [OL_CONSTANT_STEER]
    TAG = 'OPENLOOP'
    TYPE = 'CONSTANT'
    VALUE = 0 
    $--------------------------------------STEER for Maneuver 2
    $Ramp up the steering wheel @ 360 deg per second
    [OL_LEFT_STEER]
    TAG = 'OPENLOOP'
    TYPE = 'EXPRESSION'
    SIGNAL_CHANNEL = 0
    EXPRESSION = '{STEER_0} + {%TIME}*PI*2'
    $--------------------------------------STEER for Maneuver 3
    [OL_RIGHT_STEER]
    TAG = 'OPENLOOP'
    TYPE = 'EXPRESSION'
    SIGNAL_CHANNEL = 0
    EXPRESSION = '{STEER_0} - {%TIME}*PI*2'
    $--------------------------------------THROTTLE and BRAKE controller for entire event
     [FEED_FORWARD_TRACTION]
    TAG             = 'FEEDFORWARD'
    TYPE            = 'FOLLOW_VELOCITY'
    LOOK_AHEAD_TIME = 0.5
    DEMAND_SIGNAL   = 'DEMAND_VEL'
    $----------------Demand Velocity
    [DEMAND_VEL]
    TYPE            = 'CONSTANT'
    VALUE           = 17.5
  2. Right-click on AltairDriverFile and select Edit Event.
    Figure 5.


  3. Enter the multievent.adf file and run the simulation.
    Figure 6.


  4. Plot in HyperGraph the Steering Angle and Roll Rate.
    Figure 7. Steering Angle


    Figure 8. Roll Rate


    The plots show the Maneuver 2 stopping when the roll rate is consistently 0 (with mentioned tolerance) for 0.5 seconds after the 3s. The simulation then changes to the Maneuver 3 with the vehicle turning to the right as specified in the multievent.adf.
    Figure 9.