SIGGRAPH 2022 | 筷子该怎么用? ——基于贝叶斯优化和强化学习的灵巧手握筷及控制方法

本文主要是介绍SIGGRAPH 2022 | 筷子该怎么用? ——基于贝叶斯优化和强化学习的灵巧手握筷及控制方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用仿生手灵巧地操作工具一直是计算机动画和机器人方向的一个长期具有挑战性的问题。工具使用的主要困难包括:手的高自由度;工具的欠驱动;以及手、工具和物体之间复杂的相互作用。操作的困难程度也取决于所涉及的工具类型。有些工具只需要牢牢地抓在手里,如锤子。有些工具需要用手来抓取和操纵,如剪刀。在本文中,我们考虑最具有挑战性的工具之一:筷子。

筷子是一双等长的棍子,这种简单的机械设计对控制任务带来了一些挑战。首先,手需要同时握住并操纵两根独立的棍子。其次,与剪刀之类的工具不同,筷子上没有明显的固定结构,以稳定手与工具的接触。最后,筷子与物体的接触位于筷子的前端,通常远离靠近筷子后端的筷子与手的接触点。另一方面,筷子的简单形式也确实使其具有多种功能,从而成为广泛使用的工具,而其使用方式也多种多样。据估计,世界上有33%的人口每天都在使用筷子,而每个人都可能有自己独特的使用筷子的方法。筷子可以被用来拿起和移动各种食物:米饭,肉,或面条。在机器人领域,已经开展的研究包括采用筷子来辅助进食,微操作,以及医疗手术等。

筷子的实用性和通用性得益于它简单的机械结构,但是同时使筷子的控制变得困难。在机器人领域,筷子通常被刚性地连接到自由度较低的机器臂上。在图形学领域中,我们的工作是第一篇关于使用筷子的研究,其代表的是更广泛的难以解决的多接触操纵和控制问题。受父母教孩子筷子技巧的启发,我们通过将其分解为两个子问题来解决这个具有挑战性的控制问题:如何正确地握住筷子?如何用筷子操纵物体?

几种握筷子的方法
在这里插入图片描述

02

方法介绍

如下图所示,我们通过结合深度强化学习和贝叶斯优化来优化特定样式的抓取姿势。贝叶斯优化是一种优化黑盒函数的方法,它可以利用少量采样点来优化计算昂贵的目标函数。在我们的方法中,针对每一种可能的抓取方式,我们利用贝叶斯优化计算最优的抓取姿势,从而让一只移动的虚拟手可以在物理模拟中牢牢抓住筷子,并实现一些基本的开合筷子的动作。
在这里插入图片描述

获得了握筷子的姿势之后,我们设计了一个两层控制系统来控制筷子夹着物体移动:首先对筷子的运动进行规划,然后通过深度强化学习方法训练基于物理的手部控制器。在运动规划过程中,我们训练了一个基于神经网络的抓取模型来估算抓取物体的最佳筷子配置,并根据物体的起始和目标位置,利用轨迹优化结合逆向运动学的方法生成无碰撞的筷子和手的运动轨迹。
在这里插入图片描述

之后所有规划好的参考轨迹和优化的抓握姿势被传递给强化学习系统,使用简单的跟踪奖励来训练底层的手部控制器。

在这里插入图片描述

03

实验结果

我们的贝叶斯优化方法可以根据输入的握持风格优化得到不同的抓握姿势。对于人手来说,去除明显不合理的方法,我们可以得到如下的17种不同的握持方法。
在这里插入图片描述

我们的动作控制器在确定了筷子握持姿势后可以控制手用筷子夹起物体,并挪到或扔到指定位置。

在这里插入图片描述

我们的算法框架可以控制各种形态的手去使用筷子,下面展示了一只两倍大的手和三指抓取器操作筷子进行夹取。

在这里插入图片描述

除了筷子以外,我们的算法可以训练手来操作其他物体,下面展示了手握毛笔写字和用镊子夹取物体。

在这里插入图片描述

更多细节与模拟结果可参见视频:

04

总 结

我们提出了一个基于物理仿真的学习和控制系统,可以控制手使用筷子进行物体操作。这个任务的挑战性在于它涉及到手、筷子和物体之间复杂的接触。算法的关键在于将任务拆分为两部分:通过贝叶斯优化获得符合既定风格的稳定握筷子姿势,和使用高层轨迹规划+底层动作控制的方法在给定握筷子姿势来完成物体的夹取和移动。我们的算法不需要动作捕捉数据,也有较高的动作质量和不错的鲁棒性。感兴趣的同学可以看我们的视频和文章来进一步了解我们的工作。

这篇关于SIGGRAPH 2022 | 筷子该怎么用? ——基于贝叶斯优化和强化学习的灵巧手握筷及控制方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/508688

相关文章

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

电脑提示xlstat4.dll丢失怎么修复? xlstat4.dll文件丢失处理办法

《电脑提示xlstat4.dll丢失怎么修复?xlstat4.dll文件丢失处理办法》长时间使用电脑,大家多少都会遇到类似dll文件丢失的情况,不过,解决这一问题其实并不复杂,下面我们就来看看xls... 在Windows操作系统中,xlstat4.dll是一个重要的动态链接库文件,通常用于支持各种应用程序

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和