当前位置: 首页 > news >正文

机器人操作规划——Deep Visual Foresight for Planning Robot Motion(2017 ICRA)

1 简介

model-based RL方法,预测Action对图像的变化,以push任务进行研究。

采用完全自监督的学习方式,不需要相机标定、3D模型、深度图像和物理仿真。

在这里插入图片描述

2 数据集

采用几百个物体10个7dof机械臂采集了包括5万个push attempts的数据集。

每个push有以下步骤:

  • 在bin的边缘上随机选择一个起始gripper位姿
  • 以5Hz频率循环迭代以下步骤episodes次:
    • 随机选择一个新的target gripper pose:末端的3D坐标和pitch、yaw旋转(roll固定)
    • 移动gripper到该pose
    • 机器人以10Hz记录当前gripper pose、target gripper pose、RGB图像

3 预测网络

预测模型输入:当前和上一个的图像、当前和上一个的gripper pose、未来的action序列(序列长度是超参数)

  • 使用图像和gripper pose对的原因是,允许模型估计物体的速度。

预测模型输出:在当前状态施加action后的图像(网络一次输出一张图像,将该输出图像再作为输入,循环输出多张图像)。

网络架构:以卷积LSTM为核心,masks指定了物体像素的当前位置,归一化卷积核mc提供了物体运动的相对位置权重,以此计算输出图像中每个像素的值与输入图像同位置像素周围边长为2K的区域内所有像素的关系权重flow map,基于该map与输入图像得到输出图像。(如果物体被其他物体压住,像素目标位置丢失,方法效果会如何?)

  • 网络详细介绍参考作者另一篇论文:Unsupervised Learning for Physical Interaction through Video Prediction

在这里插入图片描述

4 基于预测模型的视觉MPC

MPC:Model-Predictive Control

包括三部分:如何通过图像指定任务goal、验证action、使用MPC进行规划和重规划。

4.1 使用像素运动指定goals

通过指定图像中物体上的起始像素,及该像素的goal位置。

只能用于push这种平面操作任务。

4.2 使用隐式像素对流验证action

给定图像中一个起始像素点位置和一个目标像素点位置,计算经过H步action之后,网络预测的起始像素点运动后的位置是否与目标像素位置一致,如果一致,成功率为1,否则为0。

对于多个像素点,分别计算成功率并求和。

还需要采样Action序列,下一节介绍。

4.3 基于采样和深度模型的MPC

采用cross-entropy方法,在每个时间步t的短期horizon内进行优化。使用一个光流求解器来跟踪像素点的变化。

详细算法看论文:

在这里插入图片描述

5 实验

构建实验来回答两个问题:

  • 能否使用基于action的预测模型来操作训练中未见过的新物体?
  • 仅从原始像素上训练的模型能否对实际物体产生有意义的推理?

测试时,H=3H=3H=3T=15T=15T=15,且在HHH时间步内action保持不变,即每次采样的action序列其实是相同的H个action。

5.1 量化对比

对比了三个baselines:

  • 均匀采样action,随机移动
  • 移动gripper到目标像素位置(需要手眼标定)
  • 从当前像素位置移动到目标像素位置,随着像素位置变化进行重新规划,使用光流求解器跟踪像素位置变化(需要手眼标定)

结果如下图,没感觉本文方法比baseline3好多少

在这里插入图片描述

5.2 定性结果

测试方法能否进行复杂操作,需要推理物体旋转和重心。

该方法在机械臂挡住物体时会失败。

6 讨论和未来计划

作者任务提高预测模型的精度能有效提高操作任务的复杂程度,本人不敢苟同,不管预测精度高不高,基于图像的方法在本质上就不能用于3D复杂操作和克服遮挡情况。

7 方法缺陷

  1. 由于采用预测像素位置变化的方式操作物体,因此必须要求物体不能被遮挡(部分遮挡或完全遮挡),而且无法预测物体的3D运动。
  2. 通过采样和交叉熵的方式获取最优的Action序列,使得该方法无法处理无法的操作任务,因为那将使采样数量呈指数上升。
  3. 以图像为单一媒介,无法进行精确的物体操作。
http://www.lryc.cn/news/9004.html

相关文章:

  • go 连接redis集群
  • LeetCode 146. LRU 缓存
  • 【mac】在m2 mbp上通过Parallels Desktop安装ubuntu22.04
  • C++类和对象,初见类
  • Redis常用数据结构及应用场景
  • C++虚继承内存布局
  • IO模型--从BIO、NIO、AIO到内核select、poll、epoll剖析
  • Zebec完成BNB Chain以及Near链上协议部署,多链化进程加速
  • wpscan常见的使用方法
  • Tree 底层源码实现(二叉树、递归、迭代)
  • 家政服务小程序实战教程13-接入客服
  • 大白话高并发(三)
  • vue全家桶(四)前端工程化
  • 超螺旋滑模控制(STA)
  • NX二次开发编译时dll自动数字签名及拷贝
  • 教你如何搭建人事OA-薪资管理系统,demo可分享
  • ChIP-seq 分析:Mapped 数据可视化(4)
  • Jenkins 基于Kubernetes 弹性构建池
  • 经典算法题---链表奇偶重排(好题)双指针系列
  • 数据仓库实战
  • GPT系列:GPT, GPT-2, GPT-3精简总结 (模型结构+训练范式+实验)
  • ASE12N65SE-ASEMI高压MOS管ASE12N65SE
  • centos8防火墙命令配置(开放端口)
  • Instagram营销教程_编程入门自学教程_菜鸟教程-免费教程分享
  • HTTP Code含义
  • Elasticsearch:Security API 介绍
  • springmvc考研交流平台 java ssm mysql
  • 2.15 vue3 day01 setup ref setup的参数 prop slot插槽 自定义事件通信
  • CentOs7更新Yum源
  • 【C/C++】VS2019下C++生成DLL并且成功调用(金针菇般细)