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

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

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

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

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

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

02

方法介绍

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

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

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

在这里插入图片描述

03

实验结果

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

04

总 结

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

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



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

相关文章

解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题

《解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题》在Spring开发中,@Autowired注解常用于实现依赖注入,它可以应用于类的属性、构造器或setter方法上,然... 目录1. 为什么 @Autowired 在属性上被警告?1.1 隐式依赖注入1.2 IDE 的警告:

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

python 3.8 的anaconda下载方法

《python3.8的anaconda下载方法》本文详细介绍了如何下载和安装带有Python3.8的Anaconda发行版,包括Anaconda简介、下载步骤、安装指南以及验证安装结果,此外,还介... 目录python3.8 版本的 Anaconda 下载与安装指南一、Anaconda 简介二、下载 An

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何