[论文阅读] Dynamic Group Behaviors for Interactive Crowd Simulation
文章目录
论文地址
Dynamic Group Behaviors for Interactive Crowd Simulation-原文
Liang He, Jia Pan, Sahil Narang, Wenping Wang, Dinesh Manocha
论文简介
本篇论文的重点在于能够生成动态的群体行为,与真实世界(视频)中出现的人群移动时动态形成小团体现象一致。本文采用least effort principle和改进版的RCA实现寻路和组内、组间的碰撞避免。
Introduction
人群仿真的其中一个主要挑战在于导航、碰撞避免、社会交互方面的不同建模方法。其中,group dynamics的建模是非常重要的,J. James1953年提出群体大小服从泊松分布。
但是先前的研究多数忽视了对任意环境下动态group dynamics的仿真。比如:每个group的大小并不是固定不变的,group可能会分散、合并,group中的任意一个agent有可能随时变换到另一个group。
main results:
- 提出了开创性的动态仿真群体行为的方法,使用spatial clustering方法,根据agent的位置和速度生成动态分组策略。最小努力原则保证了agent向目标位置前进。
- 延申了RCA碰撞避免方法,实现组内、组间的碰撞避免,因此可以仿真大规模人群、任意形状的群体。
- 经实验性能优,在许多复杂的benchmark上实验了该方法。
Overview+Method
背景简介-Velocity Obstacle:经典RVO思想,直观地说,VO在几何上可以构建为一个圆锥体,其顶点在agent的位置p,其两侧与包围群体的凸多边形相切,沿vG扩展,扩展大小为agent的半径ra,如figure3所示。
Group formation
用spatial clustering算法对人群做初始化分类,即:对于两个agent a 和b,如果a,b之间的距离小于超参数p并且 v a − v b < ϵ v (超参数 v ) v_a - v_b < \epsilon _v(超参数v) va−vb<ϵv(超参数v),那么a和b属于同一个组;本文采用贪心算法做初始化分类,算法复杂度O(nk)并且每帧检查每个agent是都可以被分进已存在的组
Group maintenance and navigation
-
组间,一个组作为整体对其他组避障,即:
为了使组内的成员保持整体和谐运动,采用figure3的方式计算出组内每个agent的最小努力向量( v a − v G v_a-v_G va−vG),所有agent的最小努力向量相加,如果<0就从右边绕,否则从左边绕过。一个group i和其他多个group避障时,先随便选一个group,算出从哪边绕,选出 e i s , s = l e f t o r r i g h t e_i^s,s=left~or~right eis,s=left or right;对于所有其他group,如果有碰撞可能,且在 e i s e_i^s eis的s侧,则更新 e i s e_i^s eis为这个group的 e i s e_i^s eis。用最后算出的 e i s e_i^s eis作为这个group的整体避障策略。
-
组内,除了group leader的每一个agent都选择一个跟从的agent,即:
如果这个group决定从s侧绕过其他的group,那么 e i s e_i^s eis就是这个组内所有成员暂时的目标点。group内离目标最近的agent作为group leader。group内所有其他的agent找自己的follower:组内所有比自己离leader更近的agent中,离自己最近的那一个。
Group Update
- 如果一个agent接近目标,即原有的vdesired不会与其他agent相撞,就让这个agent从group中独立出来,采用ORCA原则接近目标
- 如果许多group变形,不是凸多边形了,就重新做一次group formation
Collision Avoidance
沿用Group maintenance and navigation里的方法完成。
-
先采用ORCA的agent-group碰撞避免模式让group leader和其他group避障,即:
对于一个group leader agent和其他group,采用figure3的方式计算出VO,选取VO之外的、离自己原有的vdesired最近的速度方向矢量即可。
-
然后采用ORCA的agent-agent碰撞避免模式让其他agent和其他group避障,即:
对于所有group leader的follower,他们的新速度矢量为:原有的vdesired在 p l e a d e r − p t h i s a g e n t p_{leader}-p_{this~agent} pleader−pthis agent方向上的投影(p为位置)
文章中Overview提到,“An agent aligns itself with a group such that the resulting motion is governed by effort minimization”,agent将自己与一个群体对齐,从而使所产生的运动受努力最小化原则的支配。感觉这句话在本文中没有很好的体现。。。
Implementation and Performance
与ORCA、meso-scale(同作者13年的成果)+真实视频对比,in C++ on an Intel Core i7 CPU running at 3.30GHz with 16GB of RAM and running Windows 7,单核cpu。
对比:运行时间、从初始位置到目标位置的碰撞次数、用tracking algorithm提取出来的轨迹(以不同颜色标识)
benchmark:
- 过人行道
- 过一栋建筑里的走廊(tight space)
- 杂乱场景过走廊
- 场景中随意放置agent,本文提出的方法agent会自动成组
- 在benchmark4的基础上放几个静态障碍物
(场景中的人数都不超过200)