使用Aimsun API为互联车辆建模:”合作自适应巡航控制“

技术注解 #22

2017年1月

作者:Paolo Rinelli, Dimitris Triantafyllos

你知道吗,你可以使用Aimsun micro高级编程接口(API)来为一些互联汽车应用建模,如”合作自适应巡航控制“(Cooperative Adaptive Cruise Control – CACC)。

对于这一应用,你需要的功能是:

  • 读取一辆车和前一辆车的状态(检查两者是否在系统的最大通信范围内,并读取两者之间将传输的信息,如:位置、速度、加速度等)。
  • 修改车辆的行为参数以模拟从人类到机器控制的过渡
  • 在仿真过程中控制车辆的速度

该API提供了执行这些任务的所有功能。

”合作自适应巡航控制“

“合作自适应巡航控制”依赖于车辆间的通信,以获取领先车辆的速度、距离和加速度,从而计算出跟随者车辆应采用的速度或加速度。


TSS Aimsun互联车辆带有V-V通信和物体传感器的车串示意图

带有V-V通信和物体传感器的车辆串的示意图(来源: TNO报告,2007-D-R0280/B,设计和评估一个综合全范围的速度协助,2007年3月20日)


CACC逻辑的一个例子(参考Bart van Arem等人,The Impact of Cooperative Adaptive Cruise Control on Traffic Flow Characteristics, 2006)是:


ad = k3a + k2ev + k1ex, k1, k2, k3 > 0

其中:


ad 是跟车应该应用的加速度
a 是领车的加速度
ev,i 是速度误差,等于领车和跟车之间的相对速度
exi是间距误差,等于期望间距xd,i和当前间距 xr,i
k1, k2, k3 是加速度a,速度vx 和间距误差ex 的控制器反馈回路增益


Aimsun micro API的实施

所附的源代码提供了上述CACC逻辑的实施实例。 该执行依赖于以下功能。

所有进入网络的车辆必须被设置为跟踪,这样你就可以在事后修改它们的速度。

解释:将一辆车设置为被跟踪的

int AKIVehSetAsTracked(int aidVeh)

步骤1

在每一个仿真步骤中,我们用以下函数得到一个单车道路段*的车辆数量:

解释:读取一个路段的车辆总数

int AKIVehStateGetNbVehiclesSection(int aidSec, bool considerAllSegments)

* 在这个例子中,找到领车是很简单的,因为只有一个路段和一条车道,而且API返回的车辆是从路段的终点到起点的顺序。 如果你想处理有多个车道和路段的更复杂情况,你应该重写这个函数。


使用以下函数获得每辆车的状态和其领车的状态:

解释:读取车辆在路段的信息

infVeh = AKIVehStateGetVehicleInfSection(id, i)

步骤2

检查两车之间的距离是否在系统的最大通信范围内,在这种情况下,CACC被激活。 CACC的激活是通过改变一些反映人的驾驶行为的车辆参数来模拟的。

要改变车辆的行为参数,例如reactionTime、reactionTimeAtStop、reactionTimeAtTrafficLight、sensitivityFactor、minDistanceVeh,你可以使用以下函数*:

解释:修改被跟踪车辆的静态参数。 静态参数是那些在车辆生成时就设定好的参数

StaticInfVeh AKIVehTrackedSetStaticInf(int aidVeh)

* 不要忘记缓存这些参数的初始值,以便在CACC停用时能够恢复这些参数。


步骤3

用上述的CACC公式计算速度,用以下函数应用新的速度:

解释:为下一个仿真步骤修改被跟踪车辆的速度

int AKIVehTrackedModifySpeed(int aidVeh, double newSpeed)

请注意,Aimsun不允许你设置一个高于它应用默认跟车计算的速度。 我们在激活CACC时设置的车辆参数,目的是使默认的跟车速度比CACC速度的限制要小。

如果一辆CACC车辆的领队离开了排队,后面的车辆必须恢复到手动驾驶状态。 这是通过恢复车辆参数的初始值来实现的。

运行样本API

下载下面的样本文件,并确保所有文件都位于同一目录中:

记住,Aimsun AAPI文件必须与目前使用的Aimsun版本一致。 你可以在这里获取:C:\Program Files\TSS-Transport Simulation Systems\Aimsun\programming\Aimsun API\AAPIPython\Micro

程序
  1. 启动Aimsun,然后打开提供的CACC.ang文件
  2. 执行 “复制”。 参见日志窗口,了解关于CACC运行的详细反馈

许可证:请注意,你需要一个API许可证来运行这个例子。 欲了解更多信息,请联系 info@aimsun.com

  • 有问题吗? 请联系我们。

    我们在这里提供帮助!

  • 有问题吗? 请联系我们。

    我们在这里提供帮助!

分享