|||
张诗波
行人碰撞检测及避碰算法是行人决策模型中很重要的一部分,它是使仿真场景看起来更真实、尽量避免两行人相互“交迭”的保障。当行人与其他交通参与者或环境没有冲突时,行人在自驱动力、排斥力、提前避让力的作用下运动;当检测到冲突时,行人模型便调用避碰算法进行行为决策。
碰撞检测不仅要求精度要尽量高,而且要求算法尽量简单,运算速度尽量快。 许多专家对碰撞检测技术进行了研究,并相继提出了包围盒法、距离跟踪法、八叉数法、分割过滤法等算法。在实际应用中,具体选择哪一种碰撞检测算法,要根据具体的精度要求和计算机能力来决定。本文采用包围盒法来进行行人的碰撞检测,其原理为:
在计算机中实体的运动就是实体从一个空间坐标点跳到另一个空间坐标点。所谓“平滑的”的移动也是通过减少跳动的距离来实现的。实体运动得越快,它在固定时间内跳过的距离就越大。若实体在两帧之间跳过的距离过大,则会发生“细节丢失”现象。因为,其它实体有可能正好在两帧之间实体所跳过的距离范围内经过。因此,需将检测延伸至运动的间隙,此为“运动间隙的填充”。为了解决“细节丢失”的问题,须建立一个围绕实体的“Speedbox”, “Speedbox”是一个包围了实体的移动可能经过空间的包围盒。当检测碰撞时,可用“Speedbox”代替实体的实际形状(如图2-18中的矩形盒)。在行人仿真中,我们用圆或圆柱(见
图2-18 物体运动包围盒
实际上,为了提高仿真的运行效率,不可能每两个体之间就要调用一次包围盒的碰撞检测算法,这也没有必要。在实际的仿真中,考虑到仿真的时间步长较小,且行人的运动速度较慢,我们考虑行人一般只搜索威胁最大的个体检测碰撞,比如运动前方距离最近的一个;而且对于边界的碰撞检测优先于人的检测。行人碰撞检测的原理见图2-19,以行人