群体动画是群体行为动画的简称[1], 是指在特定环境下对群体行为的模拟. 群体动画在近些年来得到了广泛的研究和应用, 如机器人学[2]、社会学[3]、交通工程[4]、电影[1]、游戏[5]等. 目前实现群体动画的方法主要有基于力的方法[6]、基于速度的模型[7]、基于场的模型[8]、基于梯度的方法[9]、基于群智能的方法[10]、基于深度强化学习的方法[11]等. 这些方法在对智能体的每一步动作进行规划时, 均需大量的计算对智能体进行碰撞检测或获取当前智能体的环境状态以引导智能体向目标运动, 当智能体的数量很大时, 大量的计算会导致效率较低. 针对这一问题, 本文提出了一种基于马尔可夫决策过程(Markov Decision Processes, MDPs)的群体动画运动轨迹生成算法, 该算法在规划智能体的每一步动作时, 无需进行碰撞检测等大量的计算即可实现智能体无碰撞地向目标运动, 因此智能体的轨迹生成效率较高. 同时为了快速求解马尔可夫决策过程的状态-值, 本文提出了一种改进的值迭代算法, 该算法利用贪婪的思想计算出每个状态的初始状态-值, 再将该初始状态-值输入经典的值迭代算法进行迭代优化, 以保证每个状态最终的状态-值能满足预先设定的阈值要求. 在栅格环境中对改进的值迭代算法进行实验, 结果显示此算法的计算效率明显高于使用欧氏距离作为启发式的值迭代算法和Dijkstra算法. 在三维(3D)动画场景中对本文提出的运动轨迹生成算法进行仿真实验, 结果表明此算法可实现群体无碰撞地朝向目标运动, 并具有多样性.
本文后续结构安排如下: 第1节介绍基于马尔可夫决策过程的群体动画建模; 第2节介绍本文提出的改进的值迭代算法和群体动画运动轨迹生成算法; 第3节介绍实验部分, 并对实验结果进行分析; 第4节给出结论与展望.
1 基于马尔可夫决策过程的群体动画建模马尔可夫决策过程常被用来作为序列决策问题的框架, 在近些年来得到了大量的研究与应用, 如路径规划[12]、深度强化学习[11]等. 本节将对马尔可夫决策过程进行形式化描述, 并利用马尔可夫决策过程对群体动画进行建模, 最后介绍求解马尔可夫决策过程状态-值的值迭代算法.
1.1 马尔可夫决策过程马尔可夫决策过程常被用来作为序列决策问题的框架, 可以用一个五元组
当马尔可夫决策过程用来表示序列决策问题后, 求解马尔可夫决策过程即可表示为求解最优策略(
${v_\pi }(s) = {E_\pi }\left( {\sum\limits_{k = 0}^\infty {{\gamma ^k}{R_{t + k + 1}}|{S_t} = s} } \right)$ | (1) |
为了方便计算状态-值函数
${v_\pi }(s) = \sum\limits_a {\pi (a|s)\sum\limits_{s',r} {p(s',r|s,a)} \left( {r + \gamma {v_\pi }(s')} \right)} $ | (2) |
当
$\pi (s) = argma{x_a}\sum\limits_{s',r} {p(s',r|s,a)\left( {r + \gamma {V_\pi }(s')} \right)} $ | (3) |
求解最优策略常见的方法有策略迭代和值迭代[13]算法. 因值迭代方法在本文所研究的问题中具有更高的计算效率, 本文采用值迭代方法进行求解, 并在1.3节给出针对群体动画模型特点的值迭代算法, 在第2节中给出本文所提出的改进的值迭代算法.
1.2 群体动画建模利用马尔可夫决策过程对群体动画进行建模, 即对群体动画的运动环境和在每个环境状态下智能体所能采取的动作进行建模. 本小节首先介绍对群体动画的运动环境进行建模, 然后再利用上一小节介绍的马尔可夫决策过程对群体动画的运动行为进行刻画.
本文采用栅格法[14,15]对环境状态进行建模, 即用矩阵(
对环境状态进行建模后, 即可利用马尔可夫决策过程对智能体的运动行为进行建模, 形式化表示如下:
此时我们便完成了对群体动画运动环境状态的栅格法建模和智能体运动行为的马尔可夫决策过程建模. 群体相当于多个智能体, 当我们通过上述模型求解出环境中每个栅格区域所对应的状态的最优状态-值, 即
求解马尔可夫决策过程通常采用策略迭代或值迭代[13]算法, 其中策略迭代需在每个状态-值收敛后再进行策略提升, 不断地迭代直到策略收敛, 而值迭代在状态-值每更新一次之后即进行策略提升, 再重复进行状态-值更新和策略提升直至状态-值收敛[16], 此时智能体按式(3)即可输出最优策略. 因值迭代算法在本文所研究的问题(即栅格环境状态所对应的状态-值的求解)上的效率明显高于策略迭代算法, 本文采用值迭代算法求解环境状态的状态-值. 本小节在算法1中给出了结合1.2节中群体动画模型特点的值迭代算法, 与经典的值迭代算法相比, 省略了对于概率
算法1. 值迭代算法
1) 对每个栅格区域初始化状态-值为
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)输出
由于本文的群体动画模型中智能体采取每步动作所能获得的回报
基于第1节中使用马尔可夫决策过程对群体动画的建模, 利用算法1求出每个环境状态的状态-值, 利用式(3)已可以实现群体中每个智能体向目标运动, 同时可以有效地避开障碍物(即矩阵中值为1所对应的栅格区域). 在此基础上, 本文提出了一种可实现智能体间无碰撞的运动轨迹生成算法, 同时该算法可保证智能体的运动具有多样性. 为了进一步提升算法1的收敛速度, 本文同时提出了一种改进的值迭代算法, 本节将分别予以介绍.
2.1 改进的值迭代算法对于算法1进行改进以进一步提升收敛速度, 一般采用基于启发式信息作为状态-值
因群体动画涉及多个智能体的运动, 并且智能体初始位置不确定, 使用启发式信息作为状态-值的初始值, 再利用算法1进行迭代更新可求出每个环境状态的状态-值, 进而可方便求出随机初始状态的所有智能体的运动策略.
本文根据贪婪思想设计了一种新的可计算出每个环境状态的估计状态-值
算法2. 初始状态-值
1) 初始化所有的状态-值
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13) 输出
从算法2的伪代码中可以看出使用集合
通过算法1求出每个环境状态的状态-值
为了保证智能体向目标状态所在区域运动并且保证智能体之间不发生碰撞, 在智能体当前状态
对于所有的待选取状态
$P(k) = \frac{{e^{\frac{v'(k)}{\tau}} }}{{\sum\nolimits_{i = 0}^K {e^{\frac{v'(i)}{\tau}} } }}$ | (4) |
取
为了计算同一时间群体中每个智能体可采取的动作, 即下一个单位时间各智能体所能达到的状态, 我们对每个智能体按当前所在状态的状态-值
为了使智能体可以在有运动的障碍物环境中进行无碰撞运动, 我们每隔一段时间检测障碍物位置是否发生变化, 如果发生变化, 我们将障碍物当前位置及一定帧数后的位置所覆盖的区域均作为障碍物处理, 更新表示栅格环境状态的矩阵, 再重新根据算法1计算各状态的状态-值, 然后再按上述步骤继续规划各智能体的运动轨迹.
算法3. 动轨迹生成算法
1) 随机初始化各智能体的初始状态(均在自由区域), 为每个智能体
2)
3) 根据算法1中输出的
4)
5) 在block中将L[agent]的尾部状态对应位置的元素置为0;
6) 根据
7) 当
8) 在block中将选取的下一状态对应位置的元素置为1;
9)
10) 检测是否有障碍物位置发生变化, 若有则更新环境状态矩阵grid, 重新执行算法1获取最新的状态-值
11)
12)
13) 输出各智能体的运动轨迹
当获取执行算法3输出的各智能体的运动轨迹后,在仿真软件中只需将各智能体的运动轨迹映射到栅格环境中各状态区域的真实坐标并让智能体按此真实坐标进行运动即可实现群体运动目的.
3 实验分析本节将对本文提出的改进的值迭代算法进行实验, 并将其与以欧氏距离作为启发式的值迭代算法和经典的最短路径算法Dijkstra算法的计算时间进行比较分析. 同时利用maya 2009软件在三维动画场景中对本文提出的运动轨迹生成算法进行群体动画仿真实验.
3.1 改进的值迭代算法实验及分析我们用矩阵表示二维平面空间和三维立体空间分别对本文提出的改进的值迭代算法(记作IVI)、以欧氏距离作为启发式的值迭代算法(记作HVI)和Dijkstra算法进行实验, 每组各取5个不同大小的矩阵, 在矩阵边界的中心处取一点作为目标点, 在矩阵的中间部分区域设置障碍物区域, 以使测试模型具有一定的代表性. 其中表示二维平面空间的矩阵分别为:
1) 大小: 10×10, 目标: (9, 5), 障碍物区域: (5, 3)到(5, 7)所在直线区域;
2) 大小: 20×20, 目标: (19, 10), 障碍物区域: (10, 5)到(10, 14)所在直线区域;
3) 大小: 30×30, 目标: (29, 15), 障碍物区域: (15, 10)到(15, 19)所在直线区域;
4) 大小: 40×40, 目标: (39, 20), 障碍物区域: (20, 15)到(20, 24)所在直线区域;
5) 大小: 50×50, 目标: (49, 25), 障碍物区域: (25, 20)到(25, 29)所在直线区域.
表示三维立体空间的矩阵为:
1) 大小: 10×10×10, 目标: (9, 5, 5), 障碍物区域: (5, 3, 3)到(5, 7, 7)所在平面区域;
2) 大小: 20×20×20, 目标: (19, 10, 10), 障碍物区域: (10, 5, 5)到(10, 14, 14)所在平面区域;
3) 大小: 30×20×30, 目标: (29, 10, 15), 障碍物区域: (15, 5, 10)到(15, 14, 19)所在平面区域;
4) 大小: 40×20×40, 目标: (39, 10, 20), 障碍物区域: (20, 5, 15)到(20, 14, 24)所在平面区域;
5) 大小: 50×20×50, 目标: (49, 10, 25), 障碍物区域: (25, 5, 20)到(25, 14, 29)所在平面区域.
实验环境为: Intel® Core™ i5-4590 @ 3.30GHz, win7 操作系统, 使用Python 语言实现.
每次实验均运行3次, 取平均时间作为算法求解结束所需时间(值迭代算法均取阈值
通过表1和表2我们可以看出, 我们提出的改进的值迭代算法仅有一项较Dijkstra算法慢1.1毫秒, 而其他测试结果与以欧氏距离作为启发式的值迭代算法和经典的最短路径算法Dijkstra算法的计算效率相比均具有明显提升. 同时我们通过设置阈值
我们用C++语言结合maya 2009软件自带的mel语言和api接口对运动轨迹生成算法在三维动画场景中进行群体动画仿真实验, 将三维动画场景中的地面作为二维平面环境, 立体空间作为三维环境各进行3次实验, 二维平面环境中以地面上的机器人作为智能体, 共30个, 各智能体的对应的起始位置和目标地点均相同, 三维立体环境中以无人机作为智能体, 共30个, 各智能体对应的起始位置和目标点均相同(机器人和无人机模型下载于3D溜溜网: https://www.3d66.com/). 实验效果见图1和图2.
从图1和图2可以看出, 各智能体均能自动避开障碍物, 同时各智能体之间没有发生碰撞, 最终智能体均聚集在目标点附近. 实验效果体现了本算法实现群体动画的有效性, 不同时间运行的程序, 各智能体在相同时间帧时所处的位置略有不同, 体现了本算法可实现群体运动的多样性.
4 结论与展望
本文通过使用马尔可夫决策过程对群体动画进行建模, 同时设计了一种新的改进的值迭代算法和运动轨迹生成算法, 通过实验验证了改进的值迭代算法的计算效率明显高于用欧氏距离作为启发式信息的值迭代算法和经典的最短路径算法Dijkstra算法, 并通过三维群体动画仿真实验验证了本文设计的运动轨迹生成算法对于群体运动的有效性和多样性. 我们正在将本文所设计的算法在本实验室的手机短信3D动画自动生成系统中进行部署. 今后我们将尝试结合深度强化学习算法对智能体的运动进行细化以增强智能体运动轨迹的光滑性.
[1] |
黄东晋, 雷雪, 蒋晨凤, 等. 基于改进JPS算法的电影群体动画全局路径规划. 上海大学学报(自然科学版), 2018, 24(5): 694-702. |
[2] |
Molnár P, Starke J. Control of distributed autonomous robotic systems using principles of pattern formation in nature and pedestrian behavior. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 2001, 31(3): 433-435. DOI:10.1109/3477.931538 |
[3] |
McPhail C, Powers WT, Tucker CW. Simulating individual and collective action in temporary gatherings. Social Science Computer Review, 1992, 10(1): 1-28. DOI:10.1177/089443939201000101 |
[4] |
Sewall J, Wilkie D, Merrell P, et al. Continuum traffic simulation. Computer Graphics Forum, 2010, 29(2): 439-448. DOI:10.1111/j.1467-8659.2009.01613.x |
[5] |
Henry J, Shum HPH, Komura T. Interactive formation control in complex environments. IEEE Transactions on Visualization and Computer Graphics, 2014, 20(2): 211-222. DOI:10.1109/TVCG.2013.116 |
[6] |
Loscos C, Marchal D, Meyer A. Intuitive crowd behavior in dense urban environments using local laws. Proceedings of 2003 Theory and practice of computer graphics. Birmingham, UK. 2003. 122–129.
|
[7] |
Ondřej J, Pettré J, Olivier AH, et al. A synthetic-vision based steering approach for crowd simulation. ACM Transactions on Graphics, 2010, 29(4): 123. |
[8] |
Weiss T, Litteneker A, Jiang CFF, et al. Position-based multi-agent dynamics for real-time crowd simulation. Proceedings of the ACM SIGGRAPH/Eurographics Symposium on Computer Animation. Los Angeles, CA, USA. 2017. Article No. 27.
|
[9] |
Dutra TB, Marques R, Cavalcante-Neto JB, et al. Gradient-based steering for vision-based crowd simulation algorithms. Computer Graphics Forum, 2017, 36(2): 337-348. DOI:10.1111/cgf.2017.36.issue-2 |
[10] |
张超, 魏三强, 陈伟. 一种基于萤火虫算法的群体动画行为控制仿真设计. 重庆理工大学学报(自然科学), 2017, 31(1): 100-106. |
[11] |
Lee J, Won J, Lee J. Crowd simulation by deep reinforcement learning. Proceedings of the 11th Annual International Conference on Motion, Interaction, and Games. Limassol, Cyprus, 2018. |
[12] |
Ferguson D, Stentz A. Focussed processing of MDPs for path planning. Proceedings of the 16th IEEE International Conference on Tools with Artificial Intelligence. Boca Raton, FL, USA, 2004, 310-317. |
[13] |
Pashenkova E, Rish I, Dechter R. Value iteration and policy iteration algorithms for Markov decision problem. Proceedings of 1996 Workshop on Structural Issues in Planning and Temporal Reasoning. 1996. 1–15.
|
[14] |
杨兴, 张亚. 基于改进栅格模型的移动机器人路径规划研究. 农家科技, 2016(3): 416. |
[15] |
王殿君. 基于改进A*算法的室内移动机器人路径规划. 清华大学学报(自然科学版), 2012, 52(8): 1085-1089. |
[16] |
Sutton RS, Barto AG. Reinforcement learning: An introduction. Cambridge, Massachusetts, London, England: MIT Press, 2018. 82–85.
|
[17] |
Hansen EA, Zilberstein S. LAO: A heuristic search algorithm that finds solutions with loops. Artificial Intelligence, 2001, 129(1–2): 35-62. |