CN110496377B - 一种基于强化学习的虚拟乒乓球手击球训练方法 - Google Patents
一种基于强化学习的虚拟乒乓球手击球训练方法 Download PDFInfo
- Publication number
- CN110496377B CN110496377B CN201910763946.6A CN201910763946A CN110496377B CN 110496377 B CN110496377 B CN 110496377B CN 201910763946 A CN201910763946 A CN 201910763946A CN 110496377 B CN110496377 B CN 110496377B
- Authority
- CN
- China
- Prior art keywords
- ball
- table tennis
- racket
- dimensional
- training
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63B—APPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
- A63B69/00—Training appliances or apparatus for special sports
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63B—APPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
- A63B71/00—Games or sports accessories not covered in groups A63B1/00 - A63B69/00
- A63B71/06—Indicating or scoring devices for games or players, or for other sports activities
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63B—APPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
- A63B71/00—Games or sports accessories not covered in groups A63B1/00 - A63B69/00
- A63B71/06—Indicating or scoring devices for games or players, or for other sports activities
- A63B71/0619—Displays, user interfaces and indicating devices, specially adapted for sport equipment, e.g. display mounted on treadmills
- A63B2071/065—Visualisation of specific exercise parameters
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63B—APPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
- A63B2102/00—Application of clubs, bats, rackets or the like to the sporting activity ; particular sports involving the use of balls and clubs, bats, rackets, or the like
- A63B2102/16—Table tennis
Landscapes
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Physical Education & Sports Medicine (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于强化学习的虚拟乒乓球手击球训练方法,包括步骤:1)设计任务场景及任务流程;2)使用强化学习的方法对球拍的击球策略进行训练;3)使用逆向运动学的算法估计人体击球时各关节的运动情况;4)使用强化学习对根节点的移动策略进行训练。本发明能在无训练数据的情况下通过设计简单的奖励函数得到一个能以合理的姿态和高准确率进行击球的虚拟球手,不需要设计复杂的击球规则,同时因为强化学习正向运算的低耗特性,使虚拟球手的击球动作能稳定地保持高帧率,让用户有良好的交互体验。
Description
技术领域
本发明涉及虚拟现实和强化学习领域,尤其是指一种基于强化学习的虚拟乒乓球手击球训练方法。
背景技术
虚拟现实一直是计算机领域重点研究的课题之一,近年来,随着HTCVive、Oculus等虚拟现实设备的面世与发展,虚拟现实技术的发展也达到了一个新的高度,虚拟现实的应用层出不穷,目前,虚拟现实已被广泛地应用于军事、教育、娱乐等多个领域。随着虚拟现实设备的低成本化和平民化,人们对虚拟现实应用的接触次数越来越多,接触程度也越来越深,对于虚拟现实应用质量的要求也越来越高,人们不仅希望所看到所感受到虚拟场景与现实场景别无二致,更希望能与虚拟场景有更多的交互自由度以及获得尽可能真实的反馈。虚拟角色能通过在虚拟场景中做出的行为为用户提供沉浸感,而这种沉浸感和真实性来源于虚拟角色在虚拟场景中所采取行为的智能性与合理性,对于角色是人的虚拟应用而言,人们希望虚拟人的行为决策和动作都与真实的人尽可能地相似。
智能虚拟角色是人工智能领域研究的课题之一,智能虚拟角色可定义为能在虚拟环境中自主进行活动或能对环境变化产生反馈的虚拟角色。对于智能虚拟角色而言,其核心便是其行动策略,根据其行动策略,输入其所处环境的状态,便能输出其所应采取的行动。目前有许多相关工作来针对智能虚拟角色的行动策略进行设计,目前主流的算法可分为两类,一种是基于规则的方法,另一种是基于机器学习的方法。基于规则的方法是指智能虚拟角色的行动策略是人为定制的,其包含基于逻辑、基于状态机以及基于策略树等智能虚拟角色的行动策略设计方法。基于规则的方法的主要问题是,在面对较为复杂的问题时,认为地设定规则会变得困难。比如设计一个在迷宫中进行射击的虚拟角色,需要考虑如何在复杂的迷宫中进行移动、何时进行射击、向何处进行射击,通过制定规则让虚拟角色完成如此复杂的决策需要设计非常复杂的角色逻辑,同时也会大大增加计算量。随着机器学习的发展,在面对复杂的虚拟角色的设计问题时,机器学习的方法则能很大限度地对问题进行简化处理。强化学习属于机器学习的一个分支,其在处理目标明确的任务时有着良好的表现。
在虚拟乒乓球手的设计任务中,基于规则的方法需要设计复杂的击球规则,设计难度大且运算成本高,而基于模仿学习或监督学习的方法则需要收集训练数据进行训练,训练成本较高。
发明内容
本发明的目的在于克服现有技术的缺点和不足,提出了一种行之有效、科学合理的基于强化学习的虚拟乒乓球手击球训练方法。
为实现上述目的,本发明所提供的技术方案为:一种基于强化学习的虚拟乒乓球手击球训练方法,包括以下步骤:
1)设计任务场景及任务流程;
2)使用强化学习的方法对球拍的击球策略进行训练;
3)使用逆向运动学的算法估计人体击球时各关节的运动情况;
4)使用强化学习对根节点的移动策略进行训练。
在步骤1)中,设计任务场景是为虚拟乒乓球手进行建模,在Unity3D搭建一个虚拟乒乓球场,并设定场地大小、乒乓球桌位置与尺寸、球网的高度、乒乓球的尺寸、球拍的尺寸球拍碰撞包围盒的尺寸、世界坐标系的原点;
设计任务流程具体是:在回合开始时,虚拟发球机会从球桌A端的随机位置以一个随机赋值的速度往球拍所在端B端发球,当乒乓球触碰到墙壁、地板或者球拍将乒乓球击打至球桌B端的桌面或球网上时,回合结束,该次击球被认定为失败;当球拍将乒乓球击打至球桌A端的桌面上时,回合结束,该次击球被认定为成功;回合结束时,乒乓球拍会被重置至初始位置,等待下一个回合的开始。
在步骤2)中,基于强化学习的方法,使用一个神经网络对击球策略进行训练,包括以下步骤:
2.1)设计观测
观测是指虚拟角色在虚拟环境中所能收集到的数据,设定球拍的击球策略训练的观测为4个三维向量{pball,vball,pballmat,rballmat},其中,pball为乒乓球的位置,vball为乒乓球的速度,pballmat乒乓球拍的位置,rballmat是乒乓球拍的旋转角除以360°后的结果,观测每帧发生1次,对每3帧收集到的观测作为球拍的击球策略训练网络的输入;
2.2)设计行为
行为是根据观测数据估计出的虚拟角色的行为动作,球拍的击球策略训练的行为是一个9维的向量{Tballbat,Rballbat,S,C,F},其中,Tballbat为球拍的三维平移量,将其每个分量都标准化到0~1之间,为控制球拍在三个方向上的移动速度,对其分别乘上权重系数wx、wy和wz,保证球拍的运动速度合理;Rballbat为球拍绕三个坐标轴的旋转角向量,实际输出时分别乘上权重系数wu,wv和ww;S为决定进入击球准备动作的时机,当S大于零时球拍进入击球准备动作;C为选择击球动作,当C>0使用正手击球动作击球,当C<0使用反手击球动作击球;F决定击球的力度,当球拍与乒乓球碰撞时,会沿着拍面方向为乒乓球施加一个力,大小为CF+wFF,CF为基础的击球力度,wF为F的权重,为了让F能更准确地控制击球力度,wF取值不宜过大,设定CF=-0.4+0.2×Zd,Zd为期望的击球落点在z方向上的取值;
2.3)设计奖励函数
击球策略训练的奖励函数设置如下:
Rbat=wlimitRlimit+wgoalRgoal+wsupportRsupport
该奖励函数包含约束、目标和辅助三项内容;
Rlimit为用于约束球拍的行为的函数,对不应该出现的不合理情况进行惩罚:
Rpositionlimit为球拍活动范围的函数,用于对球拍的活动范围进行限制:
Ractionlimit为球拍是否进入准备动作的函数,用于约束球拍是否进入准备动作:
wlimit为Rlimit权重;
Rgoal属于目标驱动函数,作用是驱动角色完成游戏目标:
wgoal为Rgoal权重;
Rsupport是辅助函数,通过一系列的先验知识驱动球拍完成击球的任务:
Rsupport=Rhit+Rangle+Rheight+Rdroppoint
Rhit为击中球的行为的函数,保证当球拍击中球时,无论是否能将球击回至对方桌面,均给予正面反馈,而当球拍未击中球时则给予负面反馈:
Rangle为乒乓球击打角度的函数,用于衡量乒乓球击打角度:
Rheight为乒乓球击打高度和仰角的函数,用于衡量乒乓球击打高度和仰角:
h为乒乓球接触乒乓球拍时的高度,ny为乒乓球接触乒乓球拍时拍面法向在y轴方向上的投影;
Rdroppoint为乒乓球的落点的函数,用于衡量乒乓球的落点:
Rdroppoint=1-|pz-Zg|
pz为乒乓球落点的z方向值,Zg为对方桌面中间靠后的地方,当球落在Zg附近时,不容易出界和落网;
wsupport为Rsupport权重;
2.4)设计网络与训练参数
设定神经网络的输入为一个36维的向量,输出为一个9维的向量,整个神经网络包含4层隐藏层和1个输出层,每个隐藏层含有512个神经元;网络建立完成后,使用近端策略优化算法,即PPO算法,对神经网络进行训练,得到一个击球策略。
在步骤3)中,使用逆向运动学的算法估计人体击球时各关节的运动情况,使姿态不会出现不合理拉伸、扭曲的情况,包括以下步骤:
3.1)使用全身骨骼逆向动力学算法,即Full Body Biped IK算法,简化三维人体模型的骨架,简化后的骨架有14个关节,分别是胯部、头部、左右腿部、左右小腿、左右脚掌、左右大臂、左右小臂以及左右手掌,其中左右肩部、左右腿部、左右脚部和左右手部均含有反应器;
3.2)将球拍的手柄部分与右手的末端反应器绑定在一起,当球拍进行运动时,使用Full Body Biped IK算法将右手臂视为一条关节链,并利用通过迭代方式求解逆向运动学问题的FABRIK算法求解右手臂关节链上的每一个关节点位置;
3.3)使用Full Body Biped IK算法根据右手手臂的变化相对应地身体各关节点位置进行小幅度的调整,从而求解得出所有关节点的位置;
3.4)利用Full Body Biped IK算法求出当右手握住球拍且根节点不动的情况下三维人体模型各关节点的运动情况。
在步骤4)中,由于逆向运动学并不会移动根节点,因此使用基于强化学习的根节点移动策略控制根节点的移动,配合逆向运动学使整体人体姿态更加合理,包括以下步骤:
4.1)设计观测
设定根节点移动策略训练的观测为6个三维向量{pagent,ragent,nspine,pref,rref,vref},其中,pagent是人体模型的位置、ragent是人体模型的朝向、nspine是人体脊柱的方向、pref是球拍的位置、rref是球拍朝向、vref是球拍的瞬时速度,观测每帧发生1次,对每3帧收集到的观测作为根节点移动策略训练网络的输入;
4.2)设计行为
设定根节点移动策略训练的行为是一个3维向量{tx,tz,ry},其中,tx和ty分别表示人体模型在x轴和z向上的移动,ry则是人体模型绕y轴的旋转,tx、tz和ry都被自动标准化至[-1,1]区间内,在输出前分别乘上权重系数和
4.3)设计奖励函数
根节点移动策略训练的奖励函数设置如下:
Rmove=wplimitRplimit+wleaveRleave+wposeRpose+wdiviationRdiviation
Rplimit为人体模型的活动范围的函数,用于限制人体模型的活动范围:
wplimit为Rplimit权重;
Rleave为球拍末端与手部的距离的函数,通过衡量球拍末端与手部的距离来防止球拍脱手的情况:
d为球拍柄与手掌的距离,phand为手掌的三维坐标,pbat为球拍柄的三维坐标;
wleave为Rleave权重;
Rpose为击球姿势的函数,用于衡量击球姿势的合理性:
Rforehand和Rbackhand分别为正手击球和反手击球对应的奖励函数,cosα表示的是持拍手与根节点的连线和三维人体模型局部坐标系下x方向的单位向量的夹角,phand为持拍手的三维世界坐标,proot为根节点的三维世界坐标,为SMPL人体模型局部坐标系下x方向的单位向量(1,0,0);
wpose为Rpose权重;
Rdiviation为人体模型脊柱的偏移量的函数,根据人体模型脊柱的偏移量制定奖励:
wdiviation为Rdiviation权重;
4.4)设计网络与训练参数
设定神经网络的输入为一个54维的向量,输出为一个3维的向量,整个神经网络包含3层隐藏层和1个输出层,每个隐藏层含有512个神经元;网络建立完成后,使用近端策略优化算法,即PPO算法,对神经网络进行训练,得到一个根节点移动策略。
本发明与现有技术相比,具有如下优点与有益效果:
1、本发明设计的虚拟球手能以合理的击球动作和较高的击球成功率完成击球任务,且极少出现落网和落在己方桌面的情况,能准确地将飞来地乒乓球击打回对方桌面。
2、本发明不需要设计复杂的击球规则,设计难度较小且运算成本低。
3、本发明不需要预先收集数据,能在无训练数据的情况下通过设计简单的奖励函数得到一个能以合理的姿态和高准确率进行击球的虚拟球手。
4、本发明设计的虚拟球手,因为强化学习正向运算的低耗特性,使其击球动作能稳定地保持高帧率,让用户有良好的交互体验。
附图说明
图1为本发明方法的流程图。
图2为本发明任务场景设计示意图。
图3为球拍过于靠前导致脱手的示意图。
图4为球拍合理位置示意图。
图5为本发明击球策略训练网络示意图。
图6为人体模型过于靠前而嵌入至球桌内的示意图。
图7为击球动作序列示意图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本实施例设计了一个能以较合理的击球姿态和较高的击球成功率将乒乓球击打至对方桌面的虚拟乒乓球手,主要流程如图1所示,基于强化学习的虚拟乒乓球手击球训练方法,包括以下步骤:
1)设计任务场景及任务流程
设计任务场景:使用SMPL算法为虚拟乒乓球手进行建模,在Unity3D搭建一个虚拟乒乓球场,如图2中(a)所示,场地的大小为8m×16m,场地4面有高度为4m的墙壁,场地中间有一张乒乓球桌,如图2中(b)所示,尺寸为2.74m×1.525m×0.76m,球网的高度为0.1525m,乒乓球的尺寸为直径0.04m,球拍的尺寸为0.158m×0.152m,球拍碰撞包围盒的尺寸为0.16m×0.1m×0.18m,世界坐标系的原点为场地的正中心。
设计任务流程:在回合开始时,虚拟发球机会从球桌A端的随机位置以一个随机赋值的速度往球拍所在端B端发球,当乒乓球触碰到墙壁、地板或者球拍将乒乓球击打至球桌B端的桌面或球网上时,回合结束,该次击球被认定为失败。当球拍将乒乓球击打至球桌A端的桌面上时,回合结束,该次击球被认定为成功。回合结束时,乒乓球拍会被重置至初始位置,等待下一个回合的开始。
2)使用强化学习的方法对球拍的击球策略进行训练,包括以下步骤:
2.1)设计观测
观测是指虚拟角色在虚拟环境中所能收集到的数据,设定球拍的击球策略训练的观测为4个三维向量{pball,vball,pballmat,rballmat},其中,pball为乒乓球的位置,vball为乒乓球的速度,pballmat乒乓球拍的位置,rballmat是乒乓球拍的旋转角除以360°后的结果,观测每帧发生1次,对每3帧收集到的观测作为球拍的击球策略训练网络的输入。
2.2)设计行为
行为是根据观测数据估计出的虚拟角色的行为动作,球拍的击球策略训练的行为是一个9维的向量{Tballbat,Rballbat,S,C,F},其中,Tballbat为球拍的三维平移量,将其每个分量都标准化到0~1之间,为控制球拍在三个方向上的移动速度,对其分别乘上系数wx、wy和wz,保证球拍的运动速度相对合理,取wx=0.25、wy=0.07和wz=0.07;Rballbat为球拍绕三个坐标轴的旋转角向量,实际输出时分别乘上权重系数wu,wv和ww,取wu=1.5、wv=2和ww=0.5;S为决定进入击球准备动作的时机,当S大于零时球拍进入击球准备动作;C为选择击球动作,当C>0使用正手击球动作击球,当C<0使用反手击球动作击球;F决定击球的力度,当球拍与乒乓球碰撞时,会沿着拍面方向为乒乓球施加一个力,大小为CF+wFF,CF为基础的击球力度,wF为F的权重,为了让F能更准确地控制击球力度,wF的取值不宜过大,取wF=1,CF=-0.4+0.2×Zd,Zd为期望的击球落点在z方向上的取值,取Zd=0.8m,即CF=1.2。
2.3)设计奖励函数
Rbat=wlimitRlimit+wgoalRgoal+wsupportRsupport
该奖励函数包含约束、目标和辅助三项内容;
Rlimit用于约束球拍的行为,对不应该出现的不合理情况进行惩罚:
Rpositionlimit用于对球拍的活动范围进行限制:
由于球拍与手臂末端相连,其过于靠前而超出手臂可触及的范围时,会导致手臂的扭曲甚至脱手的情况,如图3所示;位置限制函数正是用来限制球拍的活动范围的,在本发明中,只要球拍的z轴坐标不超过-0.9都被认为是合理的,z=-0.9的位置如图4所示,因此只有当z>-0.9时,即球拍越过图4红线时会触发惩罚,Rpositionlimit每帧都会触发一次检测,在回合结束后进行统一结算;
Ractionlimit用于约束球拍是否进入准备动作:
当球拍与乒乓球发生碰撞时,要触发一次Ractionlimit检测,若在碰撞时未进入准备动作,则要进行处罚;
wlimit为Rlimit权重,设为100;
Rgoal属于目标驱动函数,作用是驱动角色完成游戏目标:
根据乒乓球规则,当未成功击打到乒乓球,将乒乓球击打至球网,将乒乓球击打至球桌己方界内,将乒乓球击打出界以及击打乒乓球时乒乓球在己方桌面弹跳0次或2次及2次以上,均视为击球失败,在乒乓球在己方桌面弹跳1次的情况下,将乒乓球击打至对方桌面界内,则视为击球成功,Rgoal在回合结束时进行1次检测;
wgoal为Rgoal权重,设为2;
Rsupport是辅助函数,通过一系列的先验知识驱动球拍完成击球的任务:
Rsupport=Rhit+Rangle+Rheight+Rdroppoint
Rhit保证当球拍击中球时,无论是否能将球击回至对方桌面,均给予正面反馈,而当球拍未击中球时则给予负面反馈:
Rangle用于衡量乒乓球击打角度:
Rheight用于衡量乒乓球击打高度和仰角:
h为乒乓球接触乒乓球拍时的高度,ny为乒乓球接触乒乓球拍时拍面法向在y轴方向上的投影;
Rdroppoint用于衡量乒乓球的落点:
Rdroppoint=1-|pz-Zg|
pz为乒乓球落点的z方向值,Zg为对方桌面中间靠后的地方,设为0.8;
wsupport为Rsupport权重,设为1。
2.4)设计网络与训练参数
设定神经网络的输入为一个36维的向量,输出为一个9维的向量,整个神经网络包含4层隐藏层和1个输出层,每个隐藏层含有512个神经元,如图5所示;网络建立完成后,使用近端策略优化(PPO)算法对神经网络进行训练,得到一个击球策略。
3)使用逆向运动学的算法估计人体击球时各关节的运动情况,包括以下步骤:
3.1)使用全身骨骼逆向动力学(Full Body Biped IK)算法简化三维人体模型的骨架,简化后的骨架有14个关节,分别是胯部、头部、左右腿部、左右小腿、左右脚掌、左右大臂、左右小臂以及左右手掌,其中左右肩部、左右腿部、左右脚部和左右手部均含有反应器。
3.2)将球拍的手柄部分与右手的末端反应器绑定在一起,当球拍进行运动时,使用Full Body Biped IK算法将右手臂视为一条关节链,并利用通过迭代方式求解逆向运动学问题的FABRIK算法求解右手臂关节链上的每一个关节点位置。
3.3)使用Full Body Biped IK算法根据右手手臂的变化相对应地身体各关节点位置进行小幅度的调整,从而求解得出所有关节点的位置。
3.4)利用Full Body Biped IK算法求出当右手握住球拍且根节点不动的情况下三维人体模型各关节点的运动情况。
4)使用强化学习对根节点的移动策略进行训练,包括以下步骤:
4.1)设计观测
设定根节点移动策略训练的观测为6个三维向量{pagent,ragent,nspine,pref,rref,vref},其中,pagent是人体模型的位置、ragent是人体模型的朝向、nspine是人体脊柱的方向、pref是球拍的位置、rref是球拍朝向、vref是球拍的瞬时速度,观测每帧发生1次,对每3帧收集到的观测作为根节点移动策略训练网络的输入。
4.2)设计行为
设定根节点移动策略训练的行为是一个3维向量{tx,tz,ry},其中,tx和tz分别表示人体模型在x轴和z向上的移动,ry则是人体模型绕y轴的旋转,tx、tz和ry都被自动标准化至[-1,1]区间内,在输出前分别乘上权重系数和取和
4.3)设计奖励函数
Rmove=wplimitRplimit+wleaveRleave+wposeRpose+wdiviationRdiviation
Rplimit用于限制人体模型的活动范围:
当人体模型的位置过于靠前时,有可能与乒乓球桌发生碰撞,甚至有可能嵌入至乒乓球桌内,如图6所示,乒乓球桌的边缘位置是z=-1.5,因此当人体的在z轴方向上的位置大于-1.5时,会受到一个较大的惩罚,Rplimit每帧进行一次检测;
wplimit为Rplimit权重,设为100;
Rleave通过衡量球拍末端与手部的距离来防止球拍脱手的情况:
d为球拍柄与手掌的距离,phand为手掌的三维坐标,pbat为球拍柄的三维坐标;
wleave为Rleave权重,设为10;
Rpose衡量击球姿势的合理性:
Rforehand和Rbackhand分别为正手击球和反手击球对应的奖励函数,cosα表示的是持拍手与根节点的连线和三维人体模型局部坐标系下x方向的单位向量的夹角,当持拍手在身体右侧时,cosα>0,当持拍手在身体左侧时,cosα>0,phand为持拍手的三维世界坐标,proot为根节点的三维世界坐标,为人体模型局部坐标系下x方向的单位向量(1,0,0);
wpose为Rpose权重,设为1;
Rdiviation根据人体模型脊柱的偏移量制定奖励:
wdiviation为Rdiviation权重,设为1。
4.4)设计网络与训练参数
设定神经网络的输入为一个54维的向量,输出为一个3维的向量,整个神经网络包含3层隐藏层和1个输出层,每个隐藏层含有512个神经元;网络建立完成后,使用近端策略优化(PPO)算法对神经网络进行训练,得到一个根节点移动策略。
本发明上述方法经过实验证明其可行性,当面对一个飞来的乒乓球时,球拍能根据训练得出的策略以合理的运动轨迹将乒乓球击打至对方桌面的界内,同时,将移动中的球拍与人体模型的右手手掌进行绑定,后使用逆向运动学的方法求解出人体各关节的位置,再配合通过强化学习训练得到的根节点运动策略来移动根节点,从而完成整个击球动作。如图7所示为两个击球动作的动作序列(正手击球和反手击球),当球拍碰到乒乓球后执行击球的动作序列,完成击球,图7中(a)第1行展示了正手击球的球拍序列,图7中(b)第1行展示了反手击球的球拍序列;随后使用逆向运动学求解人体各关节点的运动信息,图7中(a)第2行展示了静止状态下虚拟球手正手击球的动作序列,图7中(b)第二行展示了静止状态下虚拟球手反手击球的动作序列;随后使用了基于强化学习的根节点运动算法移动根节点,让虚拟球手在运动的过程中保持合理的击球动作,图7中(a)第三行展示了运动状态下虚拟球手正手击球的动作序列,图7中(b)第三行展示了运动状态下虚拟球手反手击球的动作序列。
以上所述之实施例子只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。
以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。
Claims (4)
1.一种基于强化学习的虚拟乒乓球手击球训练方法,其特征在于,包括以下步骤:
1)设计任务场景及任务流程;
2)基于强化学习的方法,使用一个神经网络对击球策略进行训练,包括以下步骤:
2.1)设计观测
观测是指虚拟角色在虚拟环境中所能收集到的数据,设定球拍的击球策略训练的观测为4个三维向量{pball,vball,pballmat,rballmat},其中,pball为乒乓球的位置,vball为乒乓球的速度,pballmat乒乓球拍的位置,rballmat是乒乓球拍的旋转角除以360°后的结果,观测每帧发生1次,对每3帧收集到的观测作为球拍的击球策略训练网络的输入;
2.2)设计行为
行为是根据观测数据估计出的虚拟角色的行为动作,球拍的击球策略训练的行为是一个9维的向量{Tballbat,Rballbat,S,C,F},其中,Tballbat为球拍的三维平移量,将其每个分量都标准化到0~1之间,为控制球拍在三个方向上的移动速度,对其分别乘上权重系数wx、wy和wz,保证球拍的运动速度合理;Rballbat为球拍绕三个坐标轴的旋转角向量,实际输出时分别乘上权重系数wu,wv和ww;S为决定进入击球准备动作的时机,当S大于零时球拍进入击球准备动作;C为选择击球动作,当C>0使用正手击球动作击球,当C<0使用反手击球动作击球;F决定击球的力度,当球拍与乒乓球碰撞时,会沿着拍面方向为乒乓球施加一个力,大小为CF+wFF,CF为基础的击球力度,wF为F的权重,设定CF=-0.4+0.2×Zd,Zd为期望的击球落点在z方向上的取值;
2.3)设计奖励函数
击球策略训练的奖励函数设置如下:
Rbat=wlimitRlimit+wgoalRgoal+wsupportRsupport
该奖励函数包含约束、目标和辅助三项内容;
Rlimit为用于约束球拍的行为的函数,对不应该出现的不合理情况进行惩罚:
Rpositionlimit为球拍活动范围的函数,用于对球拍的活动范围进行限制:
Ractionlimit为球拍是否进入准备动作的函数,用于约束球拍是否进入准备动作:
wlimit为Rlimit权重;
Rgoal属于目标驱动函数,作用是驱动角色完成游戏目标:
wgoal为Rgoal权重;
Rsupport是辅助函数,通过一系列的先验知识驱动球拍完成击球的任务:
Rsupport=Rhit+Rangle+Rheight+Rdroppoint
Rhit为击中球的行为的函数,保证当球拍击中球时,无论是否能将球击回至对方桌面,均给予正面反馈,而当球拍未击中球时则给予负面反馈:
Rangle为乒乓球击打角度的函数,用于衡量乒乓球击打角度:
Rheight为乒乓球击打高度和仰角的函数,用于衡量乒乓球击打高度和仰角:
h为乒乓球接触乒乓球拍时的高度,ny为乒乓球接触乒乓球拍时拍面法向在y轴方向上的投影;
Rdroppoint为乒乓球的落点的函数,用于衡量乒乓球的落点:
Rdroppoint=1-|pz-Zg|
pz为乒乓球落点的z方向值,Zg为对方桌面中间靠后的地方,当球落在Zg附近时,不容易出界和落网;
wsupport为Rsupport权重;
2.4)设计网络与训练参数
设定神经网络的输入为一个36维的向量,输出为一个9维的向量,整个神经网络包含4层隐藏层和1个输出层,每个隐藏层含有512个神经元;网络建立完成后,使用近端策略优化算法,即PPO算法,对神经网络进行训练,得到一个击球策略;
3)使用逆向运动学的算法估计人体击球时各关节的运动情况;
4)使用强化学习对根节点的移动策略进行训练。
2.根据权利要求1所述的一种基于强化学习的虚拟乒乓球手击球训练方法,其特征在于:在步骤1)中,设计任务场景是为虚拟乒乓球手进行建模,在Unity3D搭建一个虚拟乒乓球场,并设定场地大小、乒乓球桌位置与尺寸、球网的高度、乒乓球的尺寸、球拍的尺寸、球拍碰撞包围盒的尺寸、世界坐标系的原点;
设计任务流程具体是:在回合开始时,虚拟发球机会从球桌A端的随机位置以一个随机赋值的速度往球拍所在端B端发球,当乒乓球触碰到墙壁、地板或者球拍将乒乓球击打至球桌B端的桌面或球网上时,回合结束,该次击球被认定为失败;当球拍将乒乓球击打至球桌A端的桌面上时,回合结束,该次击球被认定为成功;回合结束时,乒乓球拍会被重置至初始位置,等待下一个回合的开始。
3.根据权利要求1所述的一种基于强化学习的虚拟乒乓球手击球训练方法,其特征在于:在步骤3)中,使用逆向运动学的算法估计人体击球时各关节的运动情况,使姿态不会出现不合理拉伸、扭曲的情况,包括以下步骤:
3.1)使用全身骨骼逆向动力学算法,即Full Body Biped IK算法,简化三维人体模型的骨架,简化后的骨架有14个关节,分别是胯部、头部、左右腿部、左右小腿、左右脚掌、左右大臂、左右小臂以及左右手掌,其中左右肩部、左右腿部、左右脚部和左右手部均含有反应器;
3.2)将球拍的手柄部分与右手的末端反应器绑定在一起,当球拍进行运动时,使用Full Body Biped IK算法将右手臂视为一条关节链,并利用通过迭代方式求解逆向运动学问题的FABRIK算法求解右手臂关节链上的每一个关节点位置;
3.3)使用Full Body Biped IK算法根据右手手臂的变化相对应地身体各关节点位置进行小幅度的调整,从而求解得出所有关节点的位置;
3.4)利用Full Body Biped IK算法求出当右手握住球拍且根节点不动的情况下三维人体模型各关节点的运动情况。
4.根据权利要求1所述的一种基于强化学习的虚拟乒乓球手击球训练方法,其特征在于:在步骤4)中,由于逆向运动学并不会移动根节点,因此使用基于强化学习的根节点移动策略控制根节点的移动,配合逆向运动学使整体人体姿态更加合理,包括以下步骤:
4.1)设计观测
设定根节点移动策略训练的观测为6个三维向量{pagent,ragent,nspine,pref,rref,vref},其中,pagent是人体模型的位置、ragent是人体模型的朝向、nspine是人体脊柱的方向、pref是球拍的位置、rref是球拍朝向、vref是球拍的瞬时速度,观测每帧发生1次,对每3帧收集到的观测作为根节点移动策略训练网络的输入;
4.2)设计行为
设定根节点移动策略训练的行为是一个3维向量{tx,tz,ry},其中,tx和ty分别表示人体模型在x轴和z向上的移动,ry则是人体模型绕y轴的旋转,tx、tz和ry都被自动标准化至[-1,1]区间内,在输出前分别乘上权重系数和
4.3)设计奖励函数,根节点移动策略训练的奖励函数设置如下:
Rmove=wplimitRplimit+wleaveRleave+wposeRpose+wdiviationRdiviation
Rplimit为人体模型的活动范围的函数,用于限制人体模型的活动范围:
wplimit为Rplimit权重;
Rleave为球拍末端与手部的距离的函数,通过衡量球拍末端与手部的距离来防止球拍脱手的情况:
d为球拍柄与手掌的距离,phand为手掌的三维坐标,pbat为球拍柄的三维坐标;
wleave为Rleave权重;
Rpose为击球姿势的函数,用于衡量击球姿势的合理性:
Rforehand和Rbackhand分别为正手击球和反手击球对应的奖励函数,cosα表示的是持拍手与根节点的连线和三维人体模型局部坐标系下x方向的单位向量的夹角,phand为持拍手的三维世界坐标,proot为根节点的三维世界坐标,为SMPL人体模型局部坐标系下x方向的单位向量(1,0,0);
wpose为Rpose权重;
Rdiviation为人体模型脊柱的偏移量的函数,根据人体模型脊柱的偏移量制定奖励:
wdiviation为Rdiviation权重;
4.4)设计网络与训练参数
设定神经网络的输入为一个54维的向量,输出为一个3维的向量,整个神经网络包含3层隐藏层和1个输出层,每个隐藏层含有512个神经元;网络建立完成后,使用近端策略优化算法,即PPO算法,对神经网络进行训练,得到一个根节点移动策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910763946.6A CN110496377B (zh) | 2019-08-19 | 2019-08-19 | 一种基于强化学习的虚拟乒乓球手击球训练方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910763946.6A CN110496377B (zh) | 2019-08-19 | 2019-08-19 | 一种基于强化学习的虚拟乒乓球手击球训练方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110496377A CN110496377A (zh) | 2019-11-26 |
CN110496377B true CN110496377B (zh) | 2020-07-28 |
Family
ID=68588315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910763946.6A Active CN110496377B (zh) | 2019-08-19 | 2019-08-19 | 一种基于强化学习的虚拟乒乓球手击球训练方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110496377B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111546332A (zh) * | 2020-04-23 | 2020-08-18 | 上海电机学院 | 一种基于嵌入式设备的乒乓球机器人***及应用 |
CN113312840B (zh) * | 2021-05-25 | 2023-02-17 | 广州深灵科技有限公司 | 一种基于强化学习的羽毛球对弈方法及*** |
CN113625876B (zh) * | 2021-08-10 | 2024-04-02 | 浙江大学 | 一种基于沉浸式的羽毛球战术的分析方法 |
CN114417618A (zh) * | 2022-01-21 | 2022-04-29 | 北京理工大学 | 虚拟现实辅助的装配复杂度评价*** |
CN114841362A (zh) * | 2022-03-30 | 2022-08-02 | 山东大学 | 一种利用虚拟现实技术进行模仿学习数据收集的方法 |
CN114609918B (zh) * | 2022-05-12 | 2022-08-02 | 齐鲁工业大学 | 一种四足机器人运动控制方法、***、存储介质及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108549237A (zh) * | 2018-05-16 | 2018-09-18 | 华南理工大学 | 基于深度增强学习的预观控制仿人机器人步态规划方法 |
CN108983804A (zh) * | 2018-08-27 | 2018-12-11 | 燕山大学 | 一种基于深度强化学习的双足机器人步态规划方法 |
CN109345614A (zh) * | 2018-09-20 | 2019-02-15 | 山东师范大学 | 基于深度强化学习的ar增强现实大屏互动的动画仿真方法 |
CN109540151A (zh) * | 2018-03-25 | 2019-03-29 | 哈尔滨工程大学 | 一种基于强化学习的auv三维路径规划方法 |
CN109760046A (zh) * | 2018-12-27 | 2019-05-17 | 西北工业大学 | 基于强化学习的空间机器人捕获翻滚目标运动规划方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5750657B2 (ja) * | 2011-03-30 | 2015-07-22 | 株式会社国際電気通信基礎技術研究所 | 強化学習装置、制御装置、および強化学習方法 |
-
2019
- 2019-08-19 CN CN201910763946.6A patent/CN110496377B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109540151A (zh) * | 2018-03-25 | 2019-03-29 | 哈尔滨工程大学 | 一种基于强化学习的auv三维路径规划方法 |
CN108549237A (zh) * | 2018-05-16 | 2018-09-18 | 华南理工大学 | 基于深度增强学习的预观控制仿人机器人步态规划方法 |
CN108983804A (zh) * | 2018-08-27 | 2018-12-11 | 燕山大学 | 一种基于深度强化学习的双足机器人步态规划方法 |
CN109345614A (zh) * | 2018-09-20 | 2019-02-15 | 山东师范大学 | 基于深度强化学习的ar增强现实大屏互动的动画仿真方法 |
CN109760046A (zh) * | 2018-12-27 | 2019-05-17 | 西北工业大学 | 基于强化学习的空间机器人捕获翻滚目标运动规划方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110496377A (zh) | 2019-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110496377B (zh) | 一种基于强化学习的虚拟乒乓球手击球训练方法 | |
CN111260762B (zh) | 一种动画实现方法、装置、电子设备和存储介质 | |
Chen et al. | A system for general in-hand object re-orientation | |
Juliani et al. | Unity: A general platform for intelligent agents | |
WO2021143289A1 (zh) | 动画处理方法、装置、计算机存储介质及电子设备 | |
CN111223170B (zh) | 动画生成方法、装置、电子设备和存储介质 | |
CN111283700B (zh) | 一种乒乓球发球机器人、乒乓球发球方法和计算机可读存储介质 | |
CN106390409B (zh) | 一种乒乓球机器人的击球方法及装置 | |
Yang et al. | Ball motion control in the table tennis robot system using time-series deep reinforcement learning | |
Zhu et al. | Towards high level skill learning: Learn to return table tennis ball using monte-carlo based policy gradient method | |
Wang et al. | Movevr: Enabling multiform force feedback in virtual reality using household cleaning robot | |
Schwab et al. | Learning skills for small size league robocup | |
CN116362133A (zh) | 一种基于骨架的预测目标姿势下布料静态变形的双相流网络方法 | |
Wang et al. | RETRACTED ARTICLE: Optimization analysis of sport pattern driven by machine learning and multi-agent | |
CN102446359A (zh) | 一种基于计算机的小球运动处理方法及*** | |
CN100594520C (zh) | 基于关键帧时刻优化的空中运动仿真方法 | |
Bai et al. | Wrighteagle and UT Austin villa: RoboCup 2011 simulation league champions | |
Sasaki et al. | Exemposer: Predicting poses of experts as examples for beginners in climbing using a neural network | |
CN102004552A (zh) | 一种基于跟踪点识别的加强用户现场运动体验的方法和*** | |
Zicong et al. | Training a virtual tabletennis player based on reinforcement learning | |
Chuck et al. | Robot Air Hockey: A Manipulation Testbed for Robot Learning with Reinforcement Learning | |
US20120223953A1 (en) | Kinematic Engine for Adaptive Locomotive Control in Computer Simulations | |
CN109200575A (zh) | 基于视觉识别的加强用户现场运动体验的方法和*** | |
Ding et al. | Goalseye: Learning high speed precision table tennis on a physical robot | |
Wang et al. | Strategy and Skill Learning for Physics-based Table Tennis Animation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |