Modelling connected vehicles using Aimsun API: Cooperative Adaptive Cruise Control
Technical Note #22
By Paolo Rinelli and Dimitris Triantafyllos
Did you know that you can use the Aimsun micro Advanced Programming Interface (API) to model some connected vehicle applications, such as Cooperative Adaptive Cruise Control (CACC)?
For this application, you need functions to:
- Read the state of a vehicle and that of the preceding vehicle (to check that the two are within the maximum communication range of the system and to read the information that would be transmitted between the two, such as: position, speed, acceleration, etc.)
- Modify the behavioral parameters of a vehicle to emulate the transition from human to machine control
- Control the speed of a vehicle during the simulation
The API provides all of the functions to perform these tasks.
Cooperative Adaptive Cruise Control
Cooperative Adaptive Cruise Control relies on inter-vehicle communication to access the speed, distance and acceleration of the leader vehicle(s) to calculate the speed or acceleration that the follower vehicle should adopt.
Schematic representation of a vehicle string with V-V communication and object sensors (source: TNO report, 2007-D-R0280/B, Design and evaluation of an Integrated Full-Range Speed Assistant, March 20th, 2007)
An example of CACC logic (see Bart van Arem et al., The Impact of Cooperative Adaptive Cruise Control on Traffic Flow Characteristics, 2006) is:
ad is the acceleration that the follower should apply
a is the acceleration of the leader
ev,i is the velocity error, equal to the relative speed between leader and follower
exi is the clearance error, equal to the difference between the desired clearance xd,i and the current clearance xr,i
k1, k2, k3 are controller feedback loop gains for acceleration a, velocity vx and clearance error ex
Aimsun micro API implementation
The attached source code provides an example of implementation of the CACC logic described above. The implementation relies on the following functionality. All vehicles entering the network must be set as tracked so that you can modify their speed afterwards.
At every simulation step we get the number of vehicles in a single one-lane section* using the following function:
Obtain the state of each vehicle and that of its leader using the following function:
Check whether the distance between the two vehicles is within the maximum communication range of the system, in which case CACC is activated. The activation of CACC is modelled by altering some vehicle parameters that reflect human driving behavior.
To change the behavioral parameters of a vehicle, for example reactionTime, reactionTimeAtStop, reactionTimeAtTrafficLight, sensitivityFactor, minDistanceVeh, you use the following function*:
Calculate the speed using the CACC formula described above and apply the new speed using the following function:
Note that Aimsun doesn’t allow you to set a speed higher than that it calculates applying the default car-following. The vehicle parameters that we set when CACC is activated aim at making the default car-following speed less restrictive than the CACC speed.
If the leader of a CACC vehicle leaves the platoon, the following vehicle must return to manual driving conditions. This is achieved by restoring the initial values of the vehicle parameters.
Running the sample API
Download the sample files below and ensure that all files are located in the same directory:
Remember that the Aimsun AAPI file must be consistent with the Aimsun version currently in use. You can retrieve it here: C:\Program Files\TSS-Transport Simulation Systems\Aimsun\programming\Aimsun API\AAPIPython\Micro
- Launch Aimsun and then open the CACC.ang file provided
- Execute the Replication. See Log window for detailed feedback about the operation of the CACC
License: Note that you need an API license to run this example. For more information, please contact email@example.com