人形机器人CMU-ASAP算法理解

一原文

在第一阶段,用重定位的人体运动数据在模拟中预训练运动跟踪策略。

在第二阶段,在现实世界中部署策略并收集现实世界数据来训练一个增量(残差)动作模型来补偿动态不匹配。

,ASAP 使用集成到模拟器中的增量动作模型对预训练策略进行微调,以有效地与现实世界的动态保持一致。

与 SysID、DR 和增量动态学习基线相比,减少跟踪误差。ASAP 实现以前难以实现的高度敏捷运动,展示增量动作学习在连接模拟和现实世界动态方面的潜力。

实现人形机器人的敏捷全身技能仍然是一项根本挑战,这不仅是因为硬件限制,还因为模拟动力学与现实世界物理之间的不匹配。

出现了三种主要方法来弥合动力学不匹配:系统识别 (SysID) 方法、域随机化 (DR) 和学习动力学方法。

SysID 方法直接估计关键物理参数,例如电机响应特性、每个机器人连杆的质量和地形特性。

DR 方法依赖于随机化模拟参数 [87, 68];但这可能导致过于保守的策略 [26]

弥合动态不匹配的另一种方法是使用现实世界数据学习现实世界物理的动态模型。虽然这种方法已经在无人机[81]和地面车辆[97]等低维系统中取得了成功,但其对人形机器人的有效性仍未得到探索。

二 步骤

(a) 从视频中捕捉人体动作。(b) 使用 TRAM [93],以 SMPL 参数格式重建 3D 人体运动。(c) 在模拟中训练强化学习 (RL) 策略以跟踪 SMPL 运动。(d) 在模拟中,将学习的 SMPL 运动重定位到 Unitree G1 人形机器人。(e) 训练有素的 RL 策略部署在真实机器人上,在物理世界中执行最终运动。

(a):从2D视频帧中恢复3D人体姿态和动作序列,计算机视觉的方法,有很多现有的模型。需要动作优化和后处理,例如限位、例如瞬时高速移动的滤波,去噪等等。

(b):时序感知的3D姿态估计方法。TRAM 是一个 ​​“视频动作翻译器”​​,它把普通视频里的人物动作,转换成计算机能懂的 ​​SMPL数字人参数​​,生成3D动画。(1标记出每帧的关节位置,2 根据前后帧的关系,推测关节在3D空间中的位置,​​匹配数字人(SMPL)​​:调整SMPL模型的 ​​“姿势旋钮”​​(72个参数控制关节旋转)和 ​​“体型旋钮”​​(10个参数控制高矮胖瘦),让3D数字人的动作和视频里真人一致。)

TRAM [93] 的核心创新在于 ​​联合优化时序连续性与SMPL参数空间​​,使用HRNet或ViTPose检测视频每一帧的2D人体关键点(17或25点),

最终得到一串 ​​SMPL参数​​,导入到3D软件(如Blender)就能看到和视频一样的数字人动画。

TRAM 的聪明之处是,像“脑补”连续动作,避免突然卡顿,自动过滤不可能的动作(比如膝盖不会往后弯)。

基于模型的数据清理:让一个 ​​数字人(SMPL模型)​​ 在虚拟世界里做这些动作。

MaskedMimic ,:一个 ​​基于物理的动作修正器​​,用于修复3D人体动作中的物理错误(如穿模、反关节、速度突变等)。主要配合SMPL动作数据(如TRAM的输出)和物理模拟器(如IsaacGym)使用。

c) 将 SMPL 运动重定位为机器人运动:阶段1:优化体型(β′调整),让SMPL模型的“骨架”尽量接近机器人。

阶段2:优化动作(θ和p调整),在匹配的体型下,让动作轨迹也适合机器人。固定优化后的β′​​,只调动作参数(姿势θ + 根节点平移p)。

机器人残差学习:这些模型可以改进初始控制器的动作,其他方法利用残差组件来纠正动力学模型中的不准确性。

三 理解

如何进行模仿学习。(通过强化学习奖励的形式学习

不只是各个关节的位置。还包括:

主要任务是跟踪脚的位置,

实时跟踪用户 ​​头显(1点) + 双手控制器(2点)​​ 的空间位置,共3个关键点(故称"3-point") 

除此之外,当然加入一些正则化和惩罚措施。

残差模型。

直接将预训练的策略,部署到真实机器人上,

记录真实的状态-动作对。 其中,状态,

包括基座位置,基座的线速度,基座的线加速度、基座的角速度、关节位置、关节速度。

其中,基座的位置、线速度是无法直接获得的。

残差模型:下一状态= F_sim(当前状态,真实action, + 残差action)

理解:假设在仿真中按相位直接给真实的action轨迹,那么表现的动作和真实不像,和原策略的动作也不像。如果要是和真机表现一致的话,也就说明没有sim和real差了。

加入残差action让状态表现的和原策略一样,这毫无意义,因为这个优化目标是(残差为原策略仿真action 和真机action的差)

但是,如果残差action能让仿真中的表现和现实一样的话?,那么就量化了仿真与现实的差异,也就是残差模型代表了现实和仿真的差异。所以优化目标是:在训练残差模型时,让机器人的环境反馈状态和现实采集的状态一致。

所以ASAP是确切的real2sim,将现实的策略部署到仿真环境中。如果只训练一个策略让仿真和现实状态一致,就变成了克隆学习,而采集现实的action是获取残差action的关键,假设采集的数据足够多,那么其实是具有足够泛性应用到其他动作的。

可以直接在原策略- 残差策略,输出到真机(注意,是减不是加)。

论文:固定残差模型,在原策略action下加入残差策略action,如果直接play,那在仿真中的表现要比原策略差,但应该是偏向于真实表现一侧的。

再训练一下原策略,假设训练的足够充分,那么新的策略 = 原策略 - 残差策略,因为优化目标和最初是一致的。

新的策略+残差策略在仿真中表现良好,然后不要残差策略,直接将新策略部署到真机。

微调的原因是:残差策略是从真机轨迹上得到的,但真机轨迹又不太好,存在过拟合的问题。

举例子:仿真策略训练到10度,部署真机到9度,采集真机状态和动作,动作放到仿真中去,可能是9度左右,可能是10度左右度,  假设是10.5, 原策略上加一个残差策略,按仿真状态和真机状态一致对残差策略进行训练,那么这个策略最终的action效果是-1.5度,这代表了仿真和现实差异。 

方法1 :直接部署,原策略-残差策略 到真机,真机角度比原来更接近10度。

方法2:ASAP,原策略+残差策略(冻结),训练原策略,奖励与最初一致。若完全充分训练,新策略 = 原策略-残差策略,此时部署新策略到真机。也可控制训练程度,只对原策略进行微调。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89961.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

next.js刷新页面时二级菜单展开状态判断

在 Next.js 中保持二级菜单刷新后展开状态的解决方案 在 Next.js 应用中,当页面刷新时保持二级菜单的展开状态,可以通过以下几种方法实现: 方法1:使用 URL 参数保存状态(推荐) import { useRouter } from n…

网络基础DAY13-NAT技术

NAT技术internet接入方式:ADLS技术:能够将不同设备的不同信号通过分离器进行打包之后再internet中传输,到另一端的分离器之后再进行分离。传输到不同的设备中去。常见光纤接入方式internet接入认证方式:PPPoE:先认证再…

HBuilderX中设置 DevEco Studio路径,但是一直提示未安装

前言: HBuilderX中设置 DevEco Studio路径,但是一直提示未安装。 报错信息: 检测到鸿蒙工具链,请在菜单“工具->设置->运行配置”中设置鸿蒙开发者工具路径为 DevEco Studio 的安装路径,请参考 报错原因…

什么是GNN?——聚合、更新与循环

在传统的深度学习中,卷积神经网络(CNN)擅长处理网格结构数据(如图像),循环神经网络(RNN)擅长处理序列数据(如文本)。但当数据以图的形式存在时(如…

深入解析 Django REST Framework 的 APIView 核心方法

在 Python 3 中,Django 的 APIView 类是 Django REST Framework(DRF)中用于构建 API 视图的核心基类。它提供了一个灵活的框架来处理 HTTP 请求,并通过一系列方法支持认证、权限检查和请求限制等功能。self.perform_authenticatio…

神经网络——卷积层

目录 卷积层介绍 Conv2d 卷积动画演示 卷积代码演示 综合代码案例 卷积层介绍 卷积层是卷积神经网络(CNN)的核心组件,它通过卷积运算提取输入数据的特征。 基本原理 卷积层通过卷积核(过滤器)在输入数据&…

神经网络——线性层

在机器学习中,线性层(Linear Layer) 是一种基础的神经网络组件,也称为全连接层(Fully Connected Layer) 或密集层(Dense Layer)。 其严格的数学定义为:对输入数据执行线…

大模型高效适配:软提示调优 Prompt Tuning

The Power of Scale for Parameter-Efficient Prompt Tuning ruatishi 软提示向量 具体是什么 《The Power of Scale for Parameter-Efficient Prompt Tuning》中增加的部分是“软提示(soft prompts)”,这是一种针对特定下游任务,添加到输入文本中的可调参数序列。它与传统…

https正向代理 GoProxy

背景: 在安全隔离的内网环境中,部署于内网的应用如需调用公网第三方接口(如支付、短信),可通过正向代理服务实现访问。 GoProxy 下载: https://github.com/snail007/goproxy/releases 使用文档&#xff…

Java IO流体系详解:字节流、字符流与NIO/BIO对比及文件拷贝实践

一、字节流与字符流:如何选择? 1.1 核心区别特性字节流字符流处理单位字节(8位)字符(16位Unicode)适用场景二进制文件(图片/视频)文本文件(TXT/CSV)编码处理需…

QT6 源,七章对话框与多窗体(5) 文件对话框 QFileDialog 篇二:源码带注释

&#xff08;13&#xff09;本源代码定义于头文件 qfiledialog . h &#xff1a; #ifndef QFILEDIALOG_H #define QFILEDIALOG_H#include <QtWidgets/qtwidgetsglobal.h> #include <QtCore/qdir.h> #include <QtCore/qstring.h> #include <QtCore/qurl.h…

关于Ajax的学习笔记

Ajax概念&#xff1a;是一门使用了js语言&#xff0c;可以使用于Javaweb&#xff0c;实现前端代码和后端代码连结的的一种异步同步&#xff08;不需要等待服务器相应&#xff0c;就能够发送第二次请求&#xff09;的一种技术&#xff0c;它主要用于网页内容的局部刷新&#xff…

The Missing Semester of Your CS Education 学习笔记以及一些拓展知识(三)

文章目录The Missing Semester of Your CS Education 学习笔记以及一些拓展知识Vim编辑器笔记部分程序员常用的编辑器Vim的模式Vim的普通模式Vim的插入模式Vim的可视模式Vim的替换模式Vim的命令行模式Vim的高级功能文本对象宏寄存器缓冲区标记代码折叠Vim的常用配置Vim的常用插…

PyTorch常用的简单数学运算

一、基础算术运算1. 逐元素运算a torch.tensor([1, 2, 3]) b torch.tensor([4, 5, 6])# 加减乘除 a b # [5, 7, 9] a - b # [-3, -3, -3] a * b # [4, 10, 18] a / b # [0.25, 0.4, 0.5]# 幂运算、平方根 a ** 2 # [1, 4, 9] torch.sqrt(a) # [1.0, 1.414, 1.732]2. 标…

C++ Lambda 表达式详解:从基础到实战

Lambda 表达式是 C11 引入的重要特性&#xff0c;它允许我们在代码中定义匿名函数&#xff0c;极大地简化了代码编写&#xff0c;尤其是在使用 STL 算法和多线程编程时。本文将详细介绍 Lambda 表达式的语法、特性及实际应用场景。什么是 Lambda 表达式&#xff1f;Lambda 表达…

Spring Boot注解详解

文章目录前言1. 核心启动注解SpringBootApplicationEnableAutoConfigurationSpringBootConfiguration2. 组件注解Component及其衍生注解ComponentServiceRepositoryControllerRestController3. 依赖注入注解AutowiredQualifierPrimary4. Web相关注解请求映射注解RequestMapping…

Web开发:ABP框架12——中间件Middleware的创建和使用

一、简介中间件可以用于鉴权、日志&#xff0c;拦截器可以用于指定方法或url的业务逻辑处理&#xff0c;两者分工不同&#xff0c;实现效果相似&#xff0c;先执行中间件&#xff0c;后执行拦截器&#xff0c;再到WebAPI接口。二、示例一个Token验证中间件三、代码1.Startup.cs…

京东商品评论如何获取?API接口实战指南

一、API接入准备1. 注册开发者账号访问京东开放平台&#xff1a;前往京东开放平台注册账号&#xff0c;完成企业或个人实名认证。创建应用&#xff1a;在控制台创建应用&#xff0c;获取App Key和App Secret&#xff08;用于签名认证&#xff09;。2. 申请API权限搜索接口&…

leetcode-sql-627变更性别

题目&#xff1a; Salary 表&#xff1a; --------------------- | Column Name | Type | --------------------- | id | int | | name | varchar | | sex | ENUM | | salary | int | --------------------- id 是这个表的主键…

【学习路线】C#企业级开发之路:从基础语法到云原生应用

一、C#基础入门&#xff08;1-2个月&#xff09; &#xff08;一&#xff09;开发环境搭建Visual Studio安装配置 Visual Studio Community&#xff1a;免费版本&#xff0c;功能完整Visual Studio Code&#xff1a;轻量级&#xff0c;跨平台支持JetBrains Rider&#xff1a;专…