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

运动重定向:C-3PO

C-3PO: Cyclic-Three-Phase Optimization for Human-Robot Motion Retargeting based on Reinforcement Learning解析

  • 摘要
  • 1. 简介
  • 2. 相关工作
    • 2.1 运动重定向(Motion Retargeting)
    • 2.2 强化学习(Reinforcement Learning)
  • 3. 预备知识
    • 3.1 深度强化学习
    • 3.2 Source Dataset
    • 3.3 数据预处理
  • 4. 方法
    • 4.1 问题表述
    • 4.2 阶段1:学习潜在的Manifold
    • 4.3 阶段2:学习映射功能
    • 4.4 阶段3:通过微调进行策略优化
    • 4.5 n-Step Monte-Carlo Learning

论文链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9196948&tag=1
论文代码:https://github.com/gd-goblin/C-3PO_Motion_Retargeting_Module
论文出处:2020 ICRA
论文单位:Korea University of Science and Technology,韩国

摘要

  • 在不同尺寸和运动学构型的同质多形体之间进行运动重定位需要全面的(逆)运动学知识。
  • 此外,提供一个与运动无关的通解是困难的。
  • 在本研究中,我们开发了一种基于深度强化学习的人-机器人运动重定向**循环三阶段(cyclic three-phase)**优化方法。
  • 该方法通过循环路径滤波路径潜在空间中使用精细数据进行运动重定向学习。
  • 此外,基于人在环的三阶段方法从定量和定性两方面为改进运动重定向策略提供了一个框架。
  • 利用所提出的C-3PO方法,我们成功地学习了NAOPepperBaxterC-3PO等多个机器人在人体骨骼和运动之间的运动重定向技能。

1. 简介

  • 人类可以毫不费力地模仿不同体型的人甚至动物的动作。
  • 这是因为人类具有非凡的运动重定向技能,从视觉信息中掌握目标的运动属性,并将其与自己的关节适当地连接起来。
  • 运动重定向技术对人类来说并不困难,但对机器人来说却是一项具有挑战性的任务,因为它需要复杂的算法来理解运动属性、正确映射源和目标之间的关系以及处理特殊情况。
  • 虽然有一些局限性,但已经提出了几种方法来教机器人的运动重定向。
  • 例如,直接关节映射基于逆运动学(IK)求解器的方法需要机器人运动学专业知识,并且由于它们的运动学构型不同,难以推广。它们还存在奇异位置问题高IK计算成本的问题。
  • 最近基于学习的方法视觉传感器动作捕捉(MoCap)虚拟现实(VR)设备收集的演示中学习模仿技能。然而,基于视觉的采样(如人体骨骼)是非常嘈杂和不稳定的。MoCap和VR方法需要额外的成本,并且不方便佩戴。
  • 直接教学(Direct teaching,DT) 直观地生成各种机器人动作,因为用户可以通过自己的手自由配置机器人的姿势。然而,由于与硬件的物理交互和相关的教学时间,它在收集大量演示时存在局限性
  • 在我们之前的工作中,我们设计了一个基于 actor-critic 的简单网络架构,仅使用骨架编码器和基于已知架构机器人的运动解码器。然而,critic 网络的输入不足以评估 actor 的质量,因为它应该基于编码的骨架,而不是完整的运动学配置。此外,编码骨架直接反映了原始输入骨架的严重噪声。
  • 在本文中,为了克服这些限制,我们提出了一种先进的方法来改进我们在之前的工作开发的三相框架(three-phase framework),用于学习鲁棒的人机运动重定向技能。
  • 在改进的框架中,我们引入了新的滤波和循环路径结构来处理有噪声的输入,并以更丰富的状态信息更好地评估参与者。
  • 在强化学习中,广泛使用的时间差分(TD)方法在马尔可夫环境下有效地工作。如果机器人任务处于马尔可夫环境中,机器人代理的状态不仅应该包括角度位置,还应该包括角速度,以便从当前状态预测下一个状态。然而,低成本电机如Dynamixel可能无法提供准确的角速度,因为传感器误差和控制系统中的延迟。
  • 因为我们的目标是建立一个可以应用于这种低成本系统的模型,我们将我们的运动重定向建模为一个非马尔可夫问题,其中智能体的状态只有位置信息而没有速度。我们尝试学习基于MonteCarlo (MC)方法的运动重定向策略,该方法在非马尔可夫环境下比TD方法更有效地工作。
  • 我们的主要贡献可以概括如下:
    (1)我们通过重用之前工作中忽略的网络提出了一种新的架构。
    (2)基于新提出的循环路径滤波路径,我们定义了扩展的潜在状态和改进的奖励函数。这比我们以前的工作显示出更高的性能。
    (3)基于六个运动类的统一策略编码器-解码器网络,我们证明了我们的模型可以在非马尔可夫环境下使用MC方法充分执行人机运动重定向。

2. 相关工作

运动重定向已经引起了包括机器人和计算机图形学在内的许多研究领域的极大关注。在本节中,我们回顾了运动重定向和强化学习的相关研究。

2.1 运动重定向(Motion Retargeting)

  • 在机器人领域,对人体运动和类人机器人之间的运动重定向进行了大量的研究。
  • Behzad等人提出了一种基于约束IK求解器的在线运动重定向方法,该方法将深度传感器获取的人体运动信息传递给仿人机器人ASIMO。
  • Sen等人从深度传感器的3D点云中估计一个人的姿态,并将其姿态重新定位到一个没有任何骨骼和关节限制的类人机器人。
  • Ko等人提出了一种运动重定向方法,该方法同时解决了运动变形和运动优化的几何参数辨识问题。
  • 利用动作捕捉传感器,基于 IK 求解器的从人到机器人的运动重定向方法近年来得到了广泛的研究。
  • 尽管大多数运动重定向研究都使用了基于IK求解器的方法,但在本研究中,我们将深度强化学习(DRL) 应用于运动重定向,而不使用任何IK求解器。我们还利用微调方法在主学习后进行姿态校正。

2.2 强化学习(Reinforcement Learning)

  • 近年来,强化学习(RL)已被用于各种研究领域,包括电脑游戏、机器人和动画,并且优于以前的方法。
  • 机器人领域的许多研究将强化学习用于特定任务,如投球、拾取和放置、基于视觉的机器人抓取、机器人导航以及日常生活中的其他机器人任务。
  • 在我们的学习模型中,我们采用了参考运动和基于变分自编码器(VAE) 网络架构的PPO算法

3. 预备知识

3.1 深度强化学习

  • 我们将运动重定向建模为一个infinite-horizon discounted partially observable Markov decision process (POMDP)的元组:M = {S,O,A,T,r,γ,S}。
    状态空间S,部分观测空间O,动作空间A,状态转移概率函数T,奖励函数r:S × A >R,折现因子γ ∈ (0;1],初始状态分布S。
    智能体的目标是学习一个确定性策略π:O >A 在无限范围内最大化预期折现奖励
    在这里插入图片描述
    其中返回值定义如下
    在这里插入图片描述
  • 我们采用基于PPO的 actor-critic算法来学习 w for the actor and ζ for the critic network。
  • critic network 评估政策的行动价值。
  • 我们定义了一个Q函数,它描述了在策略 π 下的期望收益,参数为 ζ,从动作 a_t 在状态s_t,如下所示
    在这里插入图片描述

3.2 Source Dataset

  • 为了学习人机运动重定向技能,我们使用了公共人体运动数据集NTU-DB。
  • 在60个运动类别中,选择12个运动类别,排除了shake head 等6个运动类别,因为仅使用骨架无法识别这些运动。最终确定的6个动作类别是:{fcheer up,hand waving, pointing with finger, wipe face, salute, and put the palms togetherg},如图2所示:
    在这里插入图片描述
  • 我们还排除了噪声严重的数据,将90%的数据用于训练,剩余的10%用于评估(表1)。
    在这里插入图片描述

3.3 数据预处理

  • NTU-DB的骨架数据以相机坐标给出,而机器人数据以躯干坐标给出。
  • 由于第二阶段的奖励是使用方向向量相似度来计算的,因此骨骼和机器人之间的坐标对齐过程是必不可少的。
  • 为了正确对齐,我们做了以下假设。至少在选定的运动类中:
    (1)腰部不存在弯曲的姿势。
    (2)因此,肩膀、躯干和骨盆在骨骼中的中心关节是共面的。
    (3)从左肩关节到右肩关节的向量总是平行于地面。
  • 基于这些假设,我们分两步执行坐标对齐
    (1)关于(w.r.t)骨架躯干框架的归一化
    (2)转动 w.r.t 机器人基架。
  • 第一步,每个骨架关节位置通过减去所有骨骼关节的躯干位置而归一化.
  • 第二步,我们首先需要为机器人躯干框架创建一个相同的局部坐标。
    在这里插入图片描述
  • 我们可以计算出 anterior axis 通过 u’,获得 cranial vector 通过 w。
  • 从归一化的局部坐标系坐标系出发,建立方向余弦矩阵(DCM),利用DCM转置变换相机坐标系下的骨架,该矩阵与机器人基坐标系矩阵 I 相同
    在这里插入图片描述

4. 方法

在本节中,我们将详细描述我们的 three-phase framework,包括过滤和循环路径。同时,介绍了n-step MC 及其公式。

4.1 问题表述

  • 骨架生成函数 fs 取人体姿态 Dt 在时刻 t 的图像,生成与输入人体姿态对应的骨架向量 xs_t = fs(Dt),其中原始骨架数据包含所有关节的 x、y、z 位置 xs_t = {x1,y1,z1,…,x25,y25,z25}。
  • 然后,骨架编码器 ρs 从原始骨架数据中获取转换后的骨架 xs_t’’ (Eq.(5)),并生成一个七维潜在表示 zs_t = ρs(xs_t’')。
  • 骨架潜在向量 zs_t 可以被骨架解码器 βs 解码,以便以后用于骨架重建和潜在表征学习。
  • 同理,机器人运动 xrj_t = {θ1;θ2;···;θ14} 由关节角(rad)在时刻 t 定义,由机器人运动编码器 ρr 编码为 zr_t = ρr(xrj_t)。
  • 机器人运动的潜在向量 zr_t 也可以被机器人运动解码器 解码,以便将来用于机器人运动重建和潜在表征学习。
  • 我们的映射策略 πw 通过在潜在表示骨架 zs_t 和 机器人运动 zr_t 之间进行映射来执行运动重定向,zr_t = πw(zs_t)。

4.2 阶段1:学习潜在的Manifold

  • 在第一阶段,我们使用VAE学习骨架和机器人运动的 latent manifold(图4)。
  • 在第一阶段,使用NTU-DB和机器人参考运动 训练 骨架和机器人运动的latent manifold。
    在这里插入图片描述
  • 骨架编码器 ρs 由具有ReLU的 512、256、128、64 四个全连通(FC)层组成,将变换后的骨架xs_t’’ 编码在 7 维潜在向量 zs_t 中。
  • 骨架解码器具有与编码器相同的结构,但顺序相反
  • 我们通过一次学习所有六个运动类数据创建了一个统一的骨架编码器-解码器。
  • 为了学习机器人运动编解码器,我们需要为每个类采样一组参考机器人运动轨迹。
  • 机器人运动网络由三个具有Tanh的FC层组成,其中编码层为256、128、64,潜在表示层为7,解码器层相同但顺序相反。
  • MSE损失用于骨架和机器人运动网络。

4.3 阶段2:学习映射功能

  • 在第二阶段,我们学习了基于模拟器和奖励函数的适当运动重定向的映射策略 πξ。
    在这里插入图片描述
  • 评价网络πζ基于这个包含骨架和机器人在时刻t运动信息的完整状态来评价agent的动作值。

4.4 阶段3:通过微调进行策略优化

  • 尽管该策略在阶段1中通过参考运动学习到的潜在流形之间执行映射,但由于阶段2的奖励不考虑头部或手腕的姿势,因此可能会发生错误的重定向。
  • 在最后阶段,我们尝试使用基于 DT(直接学习) 的微调来纠正这种错误的重定向。
    在这里插入图片描述

4.5 n-Step Monte-Carlo Learning

  • 一般来说,MC方法具有无偏、高方差估计,而TD方法具有偏和低方差估计。这是因为MC经验地用实际回报更新策略,而TD通过使用自举(bootstrapping)的推理来估计预期回报。
  • MC通常在情景环境中工作,然而,它可以应用于我们的动作重定向,因为我们将问题建模为非情景任务,并且可以在每个时间框架中获得奖励。

相关文章:

运动重定向:C-3PO

C-3PO: Cyclic-Three-Phase Optimization for Human-Robot Motion Retargeting based on Reinforcement Learning解析 摘要1. 简介2. 相关工作2.1 运动重定向(Motion Retargeting)2.2 强化学习(Reinforcement Learning) 3. 预备知…...

天池SQL训练营(四)-集合运算-表的加减法和join等

-天池龙珠计划SQL训练营 4.1表的加减法 4.1.1 什么是集合运算 集合在数学领域表示“各种各样的事物的总和”, 在数据库领域表示记录的集合. 具体来说,表、视图和查询的执行结果都是记录的集合, 其中的元素为表或者查询结果中的每一行。 在标准 SQL 中, 分别对检索结果使用 U…...

thinkphp lists todo

来由: 数据库的这个字段我想返回成: 新奇的写法如下: 逻辑层的代码: public function goodsDetail($goodId){$detail $this->good->where(id, $goodId)->hidden([type_params,user_id])->find();if (!$detail) {ret…...

【Flutter】创建应用顶级组件,应用根组件 (学习记录)

前言 在 Flutter 中,应用的顶级组件或根组件通常是在 main() 函数中通过 runApp() 方法创建的。这个组件通常是一个 MaterialApp、CupertinoApp、GetMaterialApp 或其他类似的应用框架组件。 以下是一个创建 MaterialApp 作为根组件的示例: void main()…...

AI材料专题报告:AI革命催生新需求国产替代推动新方向

今天分享的AI系列深度研究报告:《AI材料专题报告:AI革命催生新需求国产替代推动新方向》。 (报告出品方:光大证券) 报告共计:25页 1、算力需求增长催生 800G 光模块需求 算力是数字经济时代新生产力&…...

JVM 分析GC日志

GC日志参数 -verbose:gc 输出gc日志信息,默认输出到标准输出 -XX:PrintGC 输出GC日志。类似:-verbose:gc -XX:PrintGCDetails 在发生垃圾回收时打印内存回收详细的日志,并在进程退出时输出当前内存各区域分配情况 -XX:PrintGCTimeStam…...

阿里云服务器环境配置,ssh免密登录和配置docker

此文章适合ubuntu20.04 64位和ubuntu22.04 64位版本 一.登陆服务器 租完服务器后,首选需要使用本地gitbash或者cmd进入服务器, 命令: ssh rootxxx xxx为服务器公网ip,然后yes,然后输入密码就会进入自己的服务器&am…...

【LeetCode】2621. 睡眠函数

睡眠函数 Promise异步 题目题解 题目 请你编写一个异步函数,它接收一个正整数参数 millis ,并休眠 millis 毫秒。要求此函数可以解析任何值。 示例 1: 输入:millis 100 输出:100 解释: 在 100ms 后此异步…...

网络入门---TCP通信实现

目录标题 前言准备工作 tcpserver.hpp构造函数初始化函数(listen)运行函数(accept) tcpserver.cctcpclient.hpp构造函数初始化函数运行函数(connect) tcpclient.cc问题测试改进一:多进程改进二:多线程改进三:线程池完整代码 前言 在前面的文…...

neuq-acm预备队训练week 8 P2661 [NOIP2015 提高组] 信息传递

题目背景 NOIP2015 Day1T2 题目描述 有 n 个同学(编号为 1 到n)正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学。 游戏开始时,每人都…...

《C++新经典设计模式》之第18章 备忘录模式

《C新经典设计模式》之第18章 备忘录模式 备忘录模式.cpp 备忘录模式.cpp #include <iostream> #include <vector> #include <memory> using namespace std;// 保存对象内部状态&#xff0c;必要时恢复 // 在不破坏封装性的前提下&#xff0c;捕获对象的内部…...

OWASP安全练习靶场juice shop-更新中

Juice Shop是用Node.js&#xff0c;Express和Angular编写的。这是第一个 完全用 JavaScript 编写的应用程序&#xff0c;列在 OWASP VWA 目录中。 该应用程序包含大量不同的黑客挑战 用户应该利用底层的困难 漏洞。黑客攻击进度在记分板上跟踪。 找到这个记分牌实际上是&#…...

当使用RSA加密,从手机前端到服务器后端的请求数据存在+

将转成了空格&#xff0c;导致解密出错 将空格转成了...

BUUCTF crypto做题记录(3)新手向

目录 一、Rabbit 二、篱笆墙的影子 三、丢失的MD5 四、Alice与Bob 一、Rabbit 得到的密文&#xff1a;U2FsdGVkX1/ydnDPowGbjjJXhZxm2MP2AgI 依旧是看不懂是什么编码&#xff0c;上网搜索&#xff0c;在侧栏发现Rabbit解码&#xff0c;直接搜索就能有在线解码网站 二、篱笆…...

SpringMVC修炼之旅(2)基础入门

一、第一个程序 1.1环境配置 略 1.2代码实现 package com.itheima.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;//定义…...

matlab 最小二乘拟合空间直线(方法二)

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理...

ASPICE-汽车软件开发能力评级

Automotive SPICE&#xff08;简称A-SPICE 或 ASPICE&#xff09;&#xff0c;全称是“Automotive Software Process Improvement and Capacity dEtermination”&#xff0c;即“汽车软件过程改进及能力评定”模型框架。 常被用于评估一家汽车软件供应商的软件开发能力&#x…...

准确!!!在 CentOS 8 上配置 PostgreSQL 14 的主从复制

在 CentOS 8 上配置 PostgreSQL 14 的主从复制&#xff0c;并设置 WAL 归档到特定路径 /home/postgres/archive 的步骤如下&#xff1a; 主服务器配置&#xff08;主机&#xff09; 配置 PostgreSQL&#xff1a; 编辑 postgresql.conf 文件&#xff1a; vim /data/postgres/p…...

leetcode 1466

leetcode 1466 使用dfs 遍历图结构 如图 node 4 -> node 0 -> node 1 因为节点数是n, 边长数量是n-1。所以如果是从0出发的路线&#xff0c;都需要修改&#xff0c;反之&#xff0c;如果是通向0的节点&#xff0c;例如节点4&#xff0c;则把节点4当作父节点的节点&…...

想学编程,但不知道从哪里学起,应该怎么办?

怎样学习任何一种编程语言 我将教你怎样学习任何一种你将来可能要学习的编程语言。本书的章节是基于我和很多程序员学习编程的经历组织的&#xff0c;下面是我通常遵循的流程。 1&#xff0e;找到关于这种编程语言的书或介绍性读物。 2&#xff0e;通读这本书&#xff0c;把…...

Python数据科学视频讲解:Python概述

2.1 Python概述 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解2.1节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程&#xff0c;包括数据科学应用和…...

数据结构之内部排序

目录 7-1 直接插入排序 输入格式: 输出格式: 输入样例: 输出样例: 7-2 寻找大富翁 输入格式: 输出格式: 输入样例: 输出样例: 7-3 PAT排名汇总 输入格式: 输出格式: 输入样例: 输出样例: 7-4 点赞狂魔 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&a…...

软考高级备考-系统架构师(机考后新版教材的备考过程与资料分享)

软考高级-系统架构设计师 考试复盘1.考试结果2.备考计划3.个人心得 资料分享 考试复盘 1.考试结果 三科压线过&#xff0c;真是太太太太太太太幸运了。上天对我如此眷顾&#xff0c;那不得不分享下我的备考过程以及一些备考资料&#xff0c;帮助更多小伙伴通过考试。 2.备考…...

Spring Boot 整合kafka:生产者ack机制和消费者AckMode消费模式、手动提交ACK

目录 生产者ack机制消费者ack模式手动提交ACK 生产者ack机制 Kafka 生产者的 ACK 机制指的是生产者在发送消息后&#xff0c;对消息副本的确认机制。ACK 机制可以帮助生产者确保消息被成功写入 Kafka 集群中的多个副本&#xff0c;并在需要时获取确认信息。 Kafka 提供了三种…...

Java+Swing: 主界面组件布局 整理9

说明&#xff1a;这篇博客是在上一篇的基础上的&#xff0c;因为上一篇已经将界面的框架搭好了&#xff0c;这篇主要是将里面的组件完善。 分为三个部分&#xff0c;北边的组件、中间的组件、南边的组件 // 放置北边的组件layoutNorth(contentPane);// 放置中间的 Jtablelayou…...

pytorch:YOLOV1的pytorch实现

pytorch&#xff1a;YOLOV1的pytorch实现 注&#xff1a;本篇仅为学习记录、学习笔记&#xff0c;请谨慎参考&#xff0c;如果有错误请评论指出。 参考&#xff1a; 动手学习深度学习pytorch版——从零开始实现YOLOv1 目标检测模型YOLO-V1损失函数详解 3.1 YOLO系列理论合集(Y…...

YOLOv8配置文件yolov8.yaml解读

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 位置 该文件的位置位于 ./ultralytics/cfg/models/v8/yolov8.yaml 模型参数配置 # Parameters nc: 80 # number of classes scales: #…...

4-Tornado高并发原理

核心原理就是协程epoll事件循环&#xff0c;再使用协程之后&#xff0c;开销是特别的小&#xff0c;那具体如何提供高并发的呢&#xff1f; 异步非阻塞IO 这意味我们整套开发的模式不在与原来一样&#xff0c;正因为不再一样&#xff0c;所以有时我们在理解代码时就有可能会比…...

基于以太坊的智能合约开发Solidity(事件日志篇)

//声明版本号&#xff08;程序中的版本号要和编译器版本号一致&#xff09; pragma solidity ^0.5.17; //合约 contract EventTest {//状态变量uint public Variable;//构造函数constructor() public{Variable 100;}event ValueChanged(uint newValue); //事件声明event Log(…...

【BME2112】w11 notes

下周做老鼠实验 group analysis SPM group analysis 数据地址resting state 可以分析&#xff1a;correlation 计算两个脑区的相关性 静息态实验简单functional 成功的实验能看到激活区不成功的实验&#xff1a;比如被试头动太大&#xff0c;不是健康的被试 Spontaneous brain…...