APP下载

基于Frenet坐标的虚拟角色路径规划算法的研究

2021-08-06陈汉伟陈光浩陈威

现代计算机 2021年16期
关键词:笛卡尔障碍物坐标系

陈汉伟,陈光浩,陈威

(浙江安防职业技术学院,人工智能学院,温州 325000)

0 引言

在虚拟现实仿真场景中,虚拟角色路径规划始终是需要解决的关键问题[1]。虚拟角色往往需要沿一条合理的路径从起始位置移动到结束位置,移动过程中要避开障碍物、保证自身移动速度,并且在偏离路线后,需要及时调整移动状态,回到既定路线。现有的路径规划算法,虽然可以进行路径规划,但是存在路径轨迹不够真实、算法复杂度高或是无法应对复杂场景等问题。

针对虚拟现实仿真场景中的虚拟角色路径规划问题,提出了一种基于Frenet坐标的虚拟角色路径规划算法,算法根据已知的障碍物信息,较快地为虚拟角色规划路径,路径平滑有效,能够合理避开既有的障碍物。算法将虚拟角色和障碍物的位置信息转换到Frenet坐标当中[2],推算最优的运动轨迹,进而实现虚拟角色的障碍避让、速度持续性以及合理并线等智能行为,算法性能较好,且模拟动画效果真实,具备一定的应用价值。

1 基于Frenet坐标的虚拟角色路径规划算法

1.1 Frenet坐标与笛卡尔坐标的映射关系

在虚拟场景中,虚拟角色需要沿参考轨迹移动,但因为需要避开障碍物,实际规划路径和参考轨迹会产生偏差。路径在笛卡尔坐标中,虚拟角色与参考轨迹的位置关系处理方法相对复杂。然而,在Frenet坐标系下,以参考轨迹为依据建立坐标系统,虚拟角色与参考轨迹的位置关系可简易的表述为横向偏移量d(t)和纵向偏移量s(t),如图1所示。

图1 Frenet坐标与笛卡尔坐标的映射关系

d(t)表示虚拟角色实际位置和参考轨迹映射点之间产生的垂直距离,s(t)代表虚拟角色沿着参考轨迹移动的曲线距离。实际规划路径的点可以表示为:

x(s(t),d(t))=r(s(t))+d(t)nr(s(t))

(1)

其中向量nr,tr分别表示,虚拟角色在参考路径上映射点的法向量和切向量,r(s(t) )表示虚拟角色当前运动状态下的笛卡儿坐标,nx,tx表示路径规划点的法向量和切向量[3]。

虚拟角色的路径规划,就是要将其当前状态的位置、方向、曲率、速度和加速度信息先映射到Frenet坐标系下,通过求解Jerk最优化问题,得到备选路径集合,然后将规划的路径点转换回笛卡尔坐标系下,并推算出最优路径,使虚拟角色能够快速合理的移动。即存在如下转换关系:

在笛卡尔坐标系下:x表示坐标向量;θx表示虚拟角色的朝向;κx表示曲率;vx表示速度,ax表示加速度。

1.2 笛卡尔坐标映射到Frenet坐标

当[x,θx,κx,vx,ax]已知,s是参考路径点的一个自变量[4-5]:

d=[x-r(s)]Tnr

(3)

横向坐标对纵向坐标的导数d′表示为:

d′=(1-κ,d)tanΔθ(6)

横向坐标对纵向坐标的二阶导数d″表示为:

(7)

(8)

1.3 Frenet坐标映射到笛卡尔坐标

x=r(s)+nrd

(10)

根据公式(4),可推导速度vx为:

根据公式(6),可知朝向θx为:

加速度ax是vx的导数,表示为:

(13)

曲率κx表示为:

(14)

1.4 Frenet坐标系中的路径规划

虚拟角色的路径规划问题可视为分别在水平方向s和垂直方向d上求解Jerk最优化问题,故针对不同的初始状态(d0,s0)、结束状态(d1,s1)及时间差Δt,可分别定义横向和纵向的损失函数[9-10]:

(15)

而其最优解可使用五次多项式表示:

d(t)=αd0+αd1t+αd2t2+αd3t3+αd4t4+αd5t5(17)

s(t)=αs0+αs1t+αs2t2+αst3+αs4t4+αs5t5(18)

通过调整结束状态的值,获得水平方向备选路径集合Pd和垂直方向备选路径集合Ps,将两个集合进行笛卡尔卷积运算Pd×Ps,通过加权横向和纵向的损失函数,获得新的损失函数Cpath=kdCd+ksCs,剔除会与障碍物碰撞的路径,最终确定最优规划路径。

2 算法的实现及应用

本文基于Blender平台构建虚拟角色的移动场景,场景中包含虚拟角色,参考的行动路线,及若干障碍物,如图2所示。

图2 构建虚拟场景

基于Frenet坐标的虚拟角色路径规划算法具体实现方式如下:

(1)首先,算法获取笛卡尔坐标下的虚拟角色运动状态[x,θx,κx,vx,ax],作为算法输入参数;

(2)算法先将虚拟角色的运动状态通过公式(3)-(9)映射到Frenet坐标系中;

(3)在Frenet坐标系中求解Jerk最优化问题,得到备选路径集合;

(4)根据参考路径的信息,将Frenet路径集合通过公式(10)-(18)映射到笛卡尔坐标系中;

(5)执行障碍物检测,并校验相关约束条件,剔除集合中不满足条件的路径;

(6)最终输出最优路径,虚拟角色根据最优路径调整自身运动状态,沿最优路径执行移动任务。

算法流程如图3所示。

图3 算法实现流程

3 算法效果及分析

为验证算法性能,本文进行了多组路径跟踪试验。在试验中,虚拟角色需要沿预先设定的参考路径执行移动任务。在图4场景中,虚拟角色需沿一条多弯曲线进行移动,宽线为参考路径,虚线为实际移动路径,点状连续线表示规划路径。图4-a显示虚拟角色在无障碍的路径中,实际移动路径和参考路径近似,运行稳定;当参考路径中出现障碍物,路径规划算法会充分考虑障碍物的位置信息,并在路径规划时,逐步避开障碍物,如图4-b所示;当避开所有障碍物后,虚拟角色又逐步回到参考路径的中线上,直至完成移动任务。

4-a 无障碍状态移动

4-b 有障碍状态移动

4-c 恢复无障碍状态移动

而在图5场景中,虚拟角色处于全程无障碍的相对特殊场景中执行移动任务。在图5-a和图5-b场景中,虚拟角色的实际移动路径依然较好地趋近参考路径的中心线;在图5-c中,虚拟角色在经过第一个曲率较大的弯道时,已无法保持在参考路径的中线,产生一定的轨迹偏离,但能够迅速调整,回到参考路径的中线上继续移动;在图5-d中,因弯道曲率过大,虚拟角色已无法完成正常的路径规划,有待进行改进和优化。

5-a 全程无障碍场景一

5-b 全程无障碍场景二

5-c 全程无障碍场景三

5-d 全程无障碍场景四

4 结语

本文提出了一种基于Frenet坐标的虚拟角色路径规划算法,根据已知的障碍物信息,较快地为虚拟角色规划路径,路径平滑有效,能够避开障碍物并保证路径的合理性。算法将虚拟角色和障碍物的位置信息转换到Frenet坐标当中,构建路径的五次多项式备选路径集合,通过障碍物位置信息等特定约束条件推算最优的运动轨迹,进而实现虚拟角色的障碍避让、速度持续性以及合理并线等智能行为,算法性能较好,适用于虚拟角色移动的多数场景,且模拟效果真实,在虚拟角色仿真场景中具备一定的应用价值。

猜你喜欢

笛卡尔障碍物坐标系
独立坐标系椭球变换与坐标换算
笛卡尔的解释
笛卡尔浮沉子
极坐标系中的奇妙曲线
高低翻越
赶飞机
月亮为什么会有圆缺
数学
三角函数的坐标系模型
求坐标系内三角形的面积