当前位置:   article > 正文

【转载】Sim2Real问题[1]

sim2real

原文链接
原创 Cong Wang
1月30日
微信公众号:robot_learning123

Sim2Real 问题是比较难的, 也是目前制约learning-based method在机器人上应用的一个重要原因, 近几年机器人领域的顶会都有相关的workshop进行讨论. 仿真环境中的机器人建模, 例如URDF模型, 其动力学模型一般都是3D模型的简化, 肯定没有很高的精度, 控制器的特性也是很难在仿真中体现, 由此就会导致仿真中训练的策略直接部署到真机上不能用. 有两个典型例子; ETH在Science Robotics上的那个论文就是尽可以精确的建模, 包括每个电机驱动的控制特性等; OpenAI的那个手也是经过了精确的动力学标定. 但是这个系统标定的成本高, 工程量大, 并不容易做. 伯克利2018年的一篇论文是从另一个角度来解决这个问题, 通过仿真中动力学参数的随机化, 覆盖实际中的动力学参数, 换句话就是, 把testing都包含进training中(把工作量加在了训练上~).

Paper

X. Peng, M. Andrychowicz, W. Zaremba and P. Abbeel, “Sim-to-Real Transfer of Robotic Control with Dynamics Randomization”, 2018 IEEE International Conference on Robotics and Automation (ICRA), 2018. Available: 10.1109/icra.2018.8460528.

Method

文章的目的使用一个近似的动力学模型 p ^ ( s t + 1 ∣ s t , a t ) ≈ p ∗ ( s t + 1 ∣ s t , a t ) \hat p({s_{t + 1}}|{s_t},{a_t}) \approx {p^*}({s_{t + 1}}|{s_t},{a_t}) p^(st+1st,at)p(st+1st,at)
进行训练, 以解决仿真和实际中的reality gap. 因此强化学习的训练目标就变为以下:
E μ ∼ ρ μ [ E τ ∼ p ( τ ∣ π , μ ) [ ∑ t = 0 T − 1 r ( s t , a t ) ] ] \mathop {\rm E}\limits_{\mu \sim {\rho _\mu }} \left[ {{{\rm E}_{\tau \sim p(\tau |\pi ,\mu )}}\left[ {\sum\limits_{t = 0}^{T - 1} {r({s_t},{a_t})} } \right]} \right] μρμE[Eτp(τπ,μ)[t=0T1r(st,at)]]

Tasks

文章的任务是训练用7自由度的Fetch Robot学习一个puck pushing task, 类似于冰球运动, 能不能推进球门, 和表面接触摩擦力有关系, 也不容易建模. 具体来说, 就是每一个episode, 随机指定桌面上的一个目标位置, 让机器人把物体推进去. 机械臂的初始位置是一个固定位置. 由于RL算法采用的HER, 因此reward也是稀疏奖励, 即成功为0, 其他都为-1.

State and Action

State 是一个52维状态空间, 包含机械臂的关节位置和速度, 夹钳的位置, 目标物的位置,姿态,线速度和角速度(这么多的输入, 到底对输出都有什么影响,?为什么选择这些变量? 这也是RL研究的一个问题啊). Action是一个7维的向量, 即当前关节位置的增量, 最后发送给机械臂的关节位置控制器.

Dynamics Randomization

这部分就是论文最核心的部分, 即实际机器人和仿真环境的模型动力学参数有偏差, 然后通过随机化动力学参数, 使得仿真训练的策略可以直接应用到实际机器人, 简单说就是, 不管你实际动力学参数是多少, 反正我都覆盖训练了, 所以肯定能工作(这就像斗地主的明牌吧~).

训练中的episode是固定长度, 每个训练的开始, 会随机选择一组动力学参数, 直到episode结束, 具体参数包括:

  • 机器人本体每一个连杆的mass

  • 关节damping参数

  • 目标物的mass, friction, damping参数

  • 桌子的高度

  • 位置控制器的gains参数

  • 动作之间的时间间隔: 模拟实际控制器的响应时间

  • 观察空间的噪声: 独立的高斯噪声

以上共计有95个随机参数, 其中mass, damping等动力学参数在每个episode的训练中不会变化, 但是动作时间间隔和观察空间的噪声在每个step都会变化.

Expriments

仿真训练基于MuJoCo, 仿真器的timestep是0.002s, 每个控制循环包含20个时间间隔 (0.04s), 每个episode包含100的控制循环, 对应大约是每个episode时长4s, 但是会随动作之间的随机时间间隔而变化. 以下是动力学参数的具体变化值:

ParameterRange
Link Mass[0.25, 4] X default mass of each link
Joint Damping[0.2, 20] X default damping of each joint
Puck Mass[0.1, 0.4] kg
Puck Friction[0.1, 5]
Puck Damping[0.01, 0.2] Ns/m
Table Height[0.73, 0.77]m
Controller Gains[0.5, 2] X default gains
Action Timestep[125,1000]

最后再看看训练时间: 100核的集群训练8小时. 这计算需求量还是不小的, 要是换一个普通32核的服务器, 相当于训练一天一夜. RL提高训练效率还是很重要啊!
实验结果视频:

Sim-to-Real Transfer of Robotic Control with Dynamics Randomization

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号