Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

杜伟、陈萍机器之心报道

创建可微物理引擎Nimble,开源SOTA人体骨骼模型,斯坦福腿疾博士生用AI「助跑」人生

身残志坚,斯坦福大学的这位人工智能 + 机器人博士生想用技术克服身体缺陷。

有一位研究者,他身患残疾,出生时便患有退行性神经疾病,该疾病一直攻击着他的外周运动神经元(进行性神经性腓骨肌萎缩症, 2A 型)。他就是来自斯坦福大学的博士生 Keenon Werling。

为了走路,Werling 不得不带上腿支架,可能随着病情的恶化,还会坐上轮椅。

不能像正常人一样行走,但可以通过技术来帮助自己。因此,Werling 对设计、构造和控制外骨骼以帮助恢复行动不便的人正常行走产生了浓厚 兴趣。为了实现这一目标,Werling 还对可微物理引擎、人体建模和机器人技术感兴趣。此外,他还是可微物理引擎 Nimble 的创建者。

Nimble 地址:http://nimblephysics.org/

Werling 希望更多的人从事触觉、动作捕捉、人机交互等的研究。

在相关论文《 Fast and Feature-Complete Differentiable Physics for Articulated Rigid Bodies with Contact 》中, Keenon Werling 作为一作系统地介绍了关于 Nimble 的相关工作。

 论文地址:https://arxiv.org/pdf/2103.16021.pdf

该研究提出了一个快速和功能完备的可微分物理引擎 Nimble,它支持拉格朗日动力学和关节刚体模拟的硬接触约束。Nimble 提供了一套完整的功能,这些功能通常只能在机器人应用程序经常使用的不可微分物理模拟器中可用。他们使用线性互补问题(LCP),可以精确地求解接触约束。该研究利用 LCP 解的稀疏性,通过非弹性接触的 LCP 公式,提出了有效和新颖的解析梯度。

该研究支持复杂的接触几何和近似连续时间弹性碰撞的梯度。此外,该研究还介绍了一种计算互补感知梯度的新方法,可避免下游优化任务在鞍点失速。

该研究表明,在现有物理引擎 (DART)的分支中实现这种组合,在计算单个时间步(single timestep)分析雅可比矩阵时,能够在有限差分方法的基础上实现 87 倍的单核加速,同时保留原始 DART 的所有表现力。

Nimble 技术原理 

此前已经在许多不同领域对可微物理模拟进行了研究,包括机械工程、机器人、物理学和计算机图形学。借助自动微分方法和库的最新进展,研究人员已经提出了许多可微物理引擎来解决刚体和非刚体的控制和参数估计问题。虽然这些物理引擎都旨在解决类似的「逆问题」,但它们提供的特性和功能差异很大,包括接触处理、状态空间参数化和碰撞几何支持等方面的差异。

下表 I 展示了几个可微物理引擎的差异,这些引擎已经展示了「模拟有接触铰接刚体」的能力。基于每个引擎各自支持的功能,计算梯度的方法可以分为这几类,分别是有限差分、自动微分、符号微分以及利用神经网络来近似物理。

研究者提出的 Nimble 与 MuJoCo、DiffTaichi 等其他物理引擎的比较。

研究者提出的 Nimber 物理引擎通过手动调整的 C++ 代码,使用符号微分来计算引擎每个部分的梯度。从技术来讲,他们提出了一种新的方法来解析微分 LCP,该方法利用了解的稀疏性,并与求解 LCP 的直接方法兼容。 

此外,研究者的引擎支持比以前可用更丰富的碰撞和接触处理几何集合,包括网格和网格原始碰撞,以便为机器人应用程序实现全功能可微的 DART 物理引擎版本。 

Nimble 物理引擎的效果怎么样呢?下图 1 是利用 Nimble 引擎模拟的学习瑜伽的波士顿动力 Atlas 机器人。Atlas 机器人有 34 个网格碰撞器和 32 个自由度,整个冻结帧(freeze frame)有 24 个接触点。即便 Atlas 构造如此复杂,研究者在使用他们提出的方法在单个 CPU 上计算机器人动力学雅克比矩阵时,速度是有限差分方法的 87 倍(8.5ms VS 749ms)。

Nimble 具体实现

目前,Nimble 正在测试阶段,支持 Linux 和 Mac OS X 系统,不支持 Windows 系统,Windows 用户可以使用 Windows Subsystem for Linux。

所需 Python 版本为 3.5、3.6、3.7 或 3.8,安装以下 pip 即可运行:

pip install nimblephysics

将世界建模为一组骨骼

Nimble 将世界建模为一组骨骼,每个骨架由一组关节组成,它们将刚体连接在一起。研究者以 KR5 机器人为例展示了整个过程。

图源:free3d.com

输入以下代码:

import nimblephysics as nimbleimport osworld: nimble.simulation.World = nimble.simulation.World()arm: nimble.dynamics.Skeleton = world.loadSkeleton(    os.path.join(os.path.dirname(__file__), "./KR5.urdf"))    # Your code heregui = nimble.NimbleGUI(world)gui.serve(8080)gui.blockWhileServing()

用户运行以上代码时应该会在浏览器中看到 KR5 机器人。研究者通过这个运行示例来解释 Nimble 的基本概念。

在出现「Your code here」的地方,用户可以插入以下代码:

print(arm.getPositions())

当用户运行该文件时,将看到一个长度为 6 的 numpy 向量被打印到控制台。Nimble 在广义坐标(generalized coordinate)中工作,这意味着位置向量(有时称为「自由度」)的每个元素都指代一个关节位置。具体如下图所示:

用户可以更改骨架的关节值并重新运行代码以更改手臂的位置:

arm.setPositions([0, 0, -90*(3.1415/180), 0, 0, 0])

通过告知肘部(向量中的索引 2)向后旋转 90 度,手臂将直接指向天空,如下图所示:

研究者还在相同的广义坐标空间中表达速度。例如,如果用户希望肘关节以每秒 1 弧度的速度向前旋转,则可以将手臂的速度设置如下

arm.setVelocities([0, 0, 1, 0, 0, 0])

Nimble 还为很多不同的关节类型提供了内置支持,下图展示了一些常见的关节类型:

可微人体模型

该研究创建 Nimble 的主要动机之一是支持生物力学和 AI 交叉领域的研究。为了支持这一目标,Nimble 包含了许多用于处理可微分人体的工具。

有许多不同的骨骼可以用来代表人体。骨骼形式通常被设计成对计算机图形学应用足够好的形式。对于需要物理精度的应用,该研究参考了生物力学文献,生物力学的黄金标准人体模型是 Rajagopal 2015 模型,从 OpenSim 移植而来。该模型与 Nimble 捆绑在一起,并且是完全可微的!用户可以使用以下方法创建它:

# Create a Rajagopal skeleton and add it to the worldhuman: nimble.dynamics.Skeleton = nimble.RajagopalHumanBodyModel()world.addSkeleton(human)

这将创建一个如下图所示的骨架:


理论斯坦福大学可微物理引擎
相关数据
计算机图形技术

图像数据处理、计算机图像(英语:Computer Graphics)是指用计算机所创造的图形。更具体的说,就是在计算机上用专门的软件和硬件用来表现和控制图像数据。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

生物力学技术

生物力学是采用力学理论来研究生物体内物质运动的学科。人体力学是其中的一个分支。 生物力学的研究主题可以概括为以下三方面: 生物结构与功能的关系; 生物体的调节与控制机制; 生物的应力-生长关系。 目前在生物力学研究方面较为瞩目的研究领域包括骨组织的结构与受力分析、血液在血管及毛细血管网络中的流动规律、心脏的瓣膜运动、生物材料的制备、细胞乃至分子层次的生物力学问题等等。 运动生物力学:是研究人体运动力学规律的科学,它是体育科学的重要组成部分。

机器人技术技术

机器人学(Robotics)研究的是「机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈和信息处理」 [25] 。 机器人可以分成两大类:固定机器人和移动机器人。固定机器人通常被用于工业生产(比如用于装配线)。常见的移动机器人应用有货运机器人、空中机器人和自动载具。机器人需要不同部件和系统的协作才能实现最优的作业。其中在硬件上包含传感器、反应器和控制器;另外还有能够实现感知能力的软件,比如定位、地图测绘和目标识别。之前章节中提及的技术都可以在机器人上得到应用和集成,这也是人工智能领域最早的终极目标之一。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

雅可比矩阵技术

在向量分析中,雅可比矩阵是函数的一阶偏导数以一定方式排列成的矩阵,其行列式称为雅可比行列式。在代数几何中,代数曲线的雅可比行列式表示雅可比簇:伴随该曲线的一个代数群,曲线可以嵌入其中。

人机交互技术

人机交互,是一门研究系统与用户之间的交互关系的学问。系统可以是各种各样的机器,也可以是计算机化的系统和软件。人机交互界面通常是指用户可见的部分。用户通过人机交互界面与系统交流,并进行操作。小如收音机的播放按键,大至飞机上的仪表板、或是发电厂的控制室。

推荐文章
暂无评论
暂无评论~