paper4-DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills

1、文章理解

abstract

在人物动画方面一个长期的目标是将行为的数据驱动规范化与可以在物理模拟中执行类似的行为的系统相结合,这样对于干扰和环境的变化能够产生现实的反应。

文章中提出的这种方法可以处理动作的关键帧,高度的动态动作,比如动作捕捉的翻转和旋转,重新制定目标动作;将动作仿真目标和任务目标结合,可以训练人物在交互的设置中智能地做出反应。

1)introduction

在人物仿真方面存在以下几点困难:

  1. 对人和动物的运行进行建模,在概括性和方向性两方面存在困难:
    概括性:概括一个新的技能和新的情况由人的视角决定,阐述内部策略,将他们解码到控制器中都是很困难的
    方向性:编写模拟角色的动作十分困难,且当前界面无法为用户提供一种从模拟角色中引发所需行为的有效手段。

本文的主要贡献是基于物理的角色动画的框架,该框架将目标导向的强化学习与数据相结合,可以以运动捕捉剪辑或关键帧动画的形式提供。

2)related work

3)overview

控制策略π将角色的状态(任务特定的目标映射到动作)进行映射,然后将其用于计算要应用于每个角色关节的扭矩。每个动作为比例微分(PD)控制器指定目标角度,然后生成最终扭矩施加在关节上。

4)background

5)policy representation

状态s:角色身体的配置和特征包括每一个连杆关于根的相对位置,四元数表示的旋转,线速度,角速度
动作a:指定每个关节处PD控制器的目标方向。
网络结构:
在这里插入图片描述
奖励函数:由两部分组成在这里插入图片描述
rtI:代表模仿目标,鼓励角色遵循给定的参考动作{ˆqt}。
rtg:代表任务目标,激励角色去实现特定的任务的目标
其中模仿部分的reward又分为四部分,分别代表位姿pose,速度velocity,末端位置end-effector,重心位置centre of mass。

6)training

使用ppo算法去训练,有两个神经网络,一个是策略网络,一个是值函数网络。训练过程中,初始状态s0是从参考网络随机抽样出来的。
本文章提出两个新的设计想法十分重要:

1、初始化状态分布

通常初始化状态分布是在一个固定的状态,但是这篇文章将了一堆道理说明了把角色的初始状态设置到动作开始的状态的一堆好处。

为了给智能体一个提示,在每个 episode 开始时,把智能体初始化至从参考动作随机采样的状态。比如,在后空翻的动作中,智能体有时候会从地面开始,有时候会从后空翻的中间状态开始。这样即使智能体尚未熟悉如何达到这些状态,它们也能学习到哪些状态能获得高奖励。
在这里插入图片描述

2、提前终止

当模型的运动状态不理想的时候,或者一些动作失败之后,就不必继续往下运行了,提前终止训练,通常用来提高仿真效率。同时提前终止也可以作为一种机制,使得可能不利于完成任务的样本数据分布偏向,即这些动作的概率会降低。

7)multi-skill integration

将多个片段集成到学习过程的方法,以构建出能执行多个不同技能的智能体,也就是说一个智能体可以实现前面多个智能体的功能,文章介绍了三种融合的方法:
Multi-clip Reward: 将训练时引入的参考动作reward稍稍变复杂一些,由一种参考变为多动作参考,具体在某一state选择哪种动作参考,根据的是那一时刻各个reference motion所带来的reward的大小,选取reward大的当做参考;

Skill Selector:在训练时,让用户(user)指定某一时段或执行某一任务时参考哪一种动作,训练结束后,Character自然就会用多种动作了,这里让用户指定的方法就是将动作编成一个one-hot码,和前文中的goal一起输入网络;

Composite Policy:在训练时每种动作分别训练,训练结束执行时则根据每种动作所对应的输出的value network返回值确定当前state下哪一种动作被使用。

8)characters

主要有四种角色:a 3D humanoid, an Atlas robot model, a T-Rex, and a dragon.

9)tasks

target heading:这一部分是给角色一个指定的方向,让模型朝着这个方向走过去。
strick:用脚去踢随机位置球形物体。
throw:模型仍手里的球,使得能够击中目标位置的东西。
terrain traversal:训练模型从充满障碍物的环境中穿过。

10)result

11)discussion and limitations

这里面有谈到这篇文章的不足之处,想对文章进行改进的可以多看看这部分内容。

2、收获

里面提到了两种重要的方法,也就是在文章第六部分提到的那两种方法,还有就是target heading的设置,对刚开始训练模型直立行走也十分有用,要是有代码就好了,现在代码还没有找到,等找到后会在这里分享的!

3、问题残留

1、什么是数据驱动

2、target heading部分的代码

参考链接

https://blog.csdn.net/OhTuzimao/article/details/79916651
https://bair.berkeley.edu/blog/2018/04/10/virtual-stuntman/
https://xbpeng.github.io/projects/DeepMimic/index.html
https://github.com/xbpeng/DeepMimic

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值