灵巧手
openai 机器灵巧手解读
by yangwen
邮箱 yw_yolo@126.com
最原始工作
如下图所示,现在要完成的任务是,机械臂要抓取桌子上的物块,如果可以识别到需要抓取的物块,可以准确的用位置(a,b,c)表示出来.,就可以抓取出来。
现有方案及缺点
建立三维模型,获取深度信息 But三维模型很难建立
用现实中机器人直接训练 But 训练时间长,成本过高
使用虚拟的物理模型 But 虚拟的模型和现实模型差距如何描述(重力,摩擦等参数很难表示)
openai
Domain Randomization
• 现实模型中,可以选取一个角度拍摄画面, 输入为 RGB画面信息,输出为 [a,b,c]三个空间坐标【训练在模拟环境中,随机获取不同角度画面作为输入,输出物体位置[a,b,c]】
下图为 使用的神经网络结构
• 物理模型【note:openai官网,物体模型已经开源,可以直接使用】
物理模型和现实模型有很大差距,但不考虑差距如何消除,直接随机改变物理模型参数
•Number and shape of distractor objects on the table
• Position and texture of all objects on the table
• Textures of the table, floor, skybox, and robot
• Position, orientation, and field of view of the camera
• Number of lights in the scene
•Position, orientation, and specular characteristics of the lights
• Type and amount of random noise added to images
效果如下图所示:
• 物理模型在电脑中可以复制几万份,虚拟环境中同时训练。
•训练结果直接用于现实模型,结果如下(抓取指定物体,40次成功38次)
论文
https://arxiv.org/pdf/1703.06907.pdf
https://arxiv.org/abs/1703.07326
虚拟环境RL
https://gym.openai.com/envs/#robotics
强化学习:【DPPO算法】
下棋时,棋子每步如何走。如果人为规定,每步的走法,走法指数倍增长,是不现实的。那么如果每步如何走,通过奖励训练出来,便就可行。
监督学习:损失函数 可以定义为 神经网路跑出的结果与标签的差距
强化学习:每步都有不同的损失函数,过于庞大,无法人为定义。故 损失函数是训练出来的
机器灵巧手
先思考这样一个问题,手玩魔方,需要检测几个对象?
答:2个,一个是手的状态【各个手指的位置】,
一个是魔方的状态【魔方在空间分布和魔方各个块分布】
魔方 如上图C,采用3个摄像头【避免死角,方便3D建 模】,使用神经网络预测魔方
手指 如图B,采用 16 PhaseSpace tracking cameras【16个相机,我查了下这家PhaseSpace公司,是做姿态估计的】。进行姿态估计【各个手指的状态位置】
Step1: 图A-物理模型进行训练,通过手指状态和魔方状态【RL学习】,训练出最佳结果。
Step2:获取现实中魔方状态和手指状态,作为输入。通过虚拟环境中的模型。输出采取的动作
Question
另一个问题,虚拟模型和现实的模型如何保持一样?
手指
•首先调节虚拟模型。参数尽量接近现实模型
•虚拟模型,比如摩檫力,动作延迟等不好确定的参数。转变成随机噪声【设置取值的上下限】
魔方 如下图所示,改变虚拟幻景中的背景,随机添加噪声等,便于更好适应现实情况
https://openai.com/blog/learning-dexterity/
https://arxiv.org/pdf/1910.07113.pdf