try ai
科普
编辑
分享
反馈
  • 机器人运动学

机器人运动学

SciencePedia玻尔百科
核心要点
  • 齐次变换矩阵提供了一个统一的数学工具,用于在单次操作中描述机器人连杆的位置和姿态。
  • 正运动学根据关节角度计算末端执行器的位姿,而更复杂的逆运动学问题则寻找达到期望位姿所需的关节角度。
  • 雅可比矩阵是一个关键工具,它将关节速度映射到末端执行器速度,构成了速度控制、误差分析和迭代式逆运动学求解器的基础。
  • 运动学模型不仅是控制机器人运动的基础,也是其感知能力的基础,在像 SLAM 这样的状态估计任务中充当预测引擎。

引言

机器人运动学是一门基础科学,它描述机器人的运动而不考虑引起运动的力。它是运动的语法,为期望任务与实现该任务所需的特定关节配置之间提供了必要的联系。但是,我们如何将“拾取一个物体”这一抽象目标转化为精确的电机指令呢?这个问题凸显了机器人学的一个核心挑战:创建一个数学框架来指令、预测和理解多关节机器的复杂舞蹈。本文为这一框架提供了指南。我们将首先探讨运动学的核心“原理与机制”,建立坐标系、变换和雅可比矩阵的语言。然后,在“应用与跨学科联系”部分,我们将看到这一数学基础如何实现从精确的工业控制到自主导航和建图等广泛的能力。

原理与机制

要理解机器人如何运动,我们首先需要一种描述运动本身的语言。大自然以其优雅的方式,使用了数学的语言。我们探索机器人运动学的旅程,就是学习这门语言的旅程——从它的基本字母表到能够让我们指令和预测现代机器复杂舞蹈的丰富语法。

刚体运动的字母表:坐标系与变换

想象一下,你正试图描述你手中一块木头上的一个螺丝的位置。你可能会说:“它距离左边缘两英寸,距离顶部一英寸。”这很容易,因为你使用的是一个附着在木块上的坐标系——一个​​坐标系​​(frame)。但如果你房间另一边的朋友想知道那个螺丝相对于他们的位置在哪里呢?他们不仅需要你的描述,还需要知道木块在房间里的位置以及它的朝向。

这就是运动学的基本问题:在不同参考系之间关联描述。在机器人学中,我们有“世界坐标系”(房间)和“本体坐标系”(机器人的底盘或其某个连杆)。为了在它们之间进行转换,我们需要两条信息:位置(平移)和姿态(旋转)。

虽然平移很简单——只是一个告诉我们“在x、y和z方向上移动这么远”的向量——但旋转则更为微妙和美妙。我们使用一个 3×33 \times 33×3 的​​旋转矩阵​​来表示姿态,记为 RRR。这个矩阵具有非常直观的物理意义。它不仅仅是九个数字的抽象集合。如果你看它的列,你会看到一些深刻的东西。第一列就是机器人自身的x轴,但是用世界坐标系的坐标来描述的。第二列是它的y轴,第三列是它的z-轴。

这三个列向量必须相互垂直且长度都为单位长度,这一事实正是刚性的定义。数学家称此性质为​​标准正交性​​,它是物体是“刚体”的直接结果。这种标准正交性是一个数学保证,确保机器人在旋转时不会拉伸、剪切或变形。它确保了矩阵变换保留了附着在机器人身体上的任何向量的真实长度,以及任何两个此类向量之间的真实角度。用数学术语来说,它保持了内积不变,这正是我们所说的刚性旋转的含义。

为了让我们的生活更轻松,我们可以将一个旋转 RRR 和一个平移向量 t\mathbf{t}t 组合成一个单一、优雅的包:一个 4×44 \times 44×4 的​​齐次变换矩阵​​ TTT。

T=(Rt0⊤1)T = \begin{pmatrix} R & \mathbf{t} \\ \mathbf{0}^{\top} & 1 \end{pmatrix}T=(R0⊤​t1​)

这个矩阵是运动学语言中的基本“词汇”。它包含了我们从一个坐标系移动到另一个坐标系所需知道的一切,只需一次矩阵乘法。

将词汇串成句子:正运动学

单个变换描述一个步骤。但对于一个复杂机器人,比如一个多关节臂,情况又如何呢?机械臂是一个由关节连接的连杆组成的​​串联链​​。每个连杆的位置和姿态都是相对于前一个连杆来描述的。要找到机器人手部,即​​末端执行器​​的位置,似乎是一个棘手的几何问题。

然而,齐次变换的魔力将这种复杂性变成了简单的算术。从机器人基座到其末端执行器的变换,仅仅是链中每个关节的单个变换的乘积。

Tend-effector=T1T2T3…TnT_{\text{end-effector}} = T_1 T_2 T_3 \dots T_nTend-effector​=T1​T2​T3​…Tn​

每个 TiT_iTi​ 表示从连杆 i−1i-1i−1 到连杆 iii 的变换,通常是绕关节角度 θi\theta_iθi​ 的旋转,然后是沿着新连杆长度 ℓi\ell_iℓi​ 的平移。通过将这些矩阵相乘,我们组合了这些运动,构建了一个“句子”,精确地描述了在给定所有关节角度的情况下末端执行器的最终位姿。对于一个平面三连杆臂,其末端的最终x坐标可能看起来像这样:

x=ℓ1cos⁡(θ1)+ℓ2cos⁡(θ1+θ2)+ℓ3cos⁡(θ1+θ2+θ3)x = \ell_1 \cos(\theta_1) + \ell_2 \cos(\theta_1 + \theta_2) + \ell_3 \cos(\theta_1 + \theta_2 + \theta_3)x=ℓ1​cos(θ1​)+ℓ2​cos(θ1​+θ2​)+ℓ3​cos(θ1​+θ2​+θ3​)

你可以看到每个连杆如何对最终位置做出贡献,其效果被所有在它之前的关节的角度所旋转。这种从关节角度计算末端执行器位姿的过程称为​​正运动学​​。这是问题中“简单”的方向。

并非所有机器人都是简单的链。有些,比如​​Stewart平台​​,是​​并联机械臂​​。移动平台不是通过单个链条,而是通过多个“腿”或执行器连接到基座。在这里,运动学不是简单的矩阵乘积。相反,平台的位姿决定了每条腿所需的长度。正运动学问题(从腿长求位姿)变得异常困难,但逆问题(为给定姿态求腿长)通常很简单,涉及向量几何的美妙应用。对于处于对称位姿的对称Stewart平台,腿长 LLL 可以用一个让人联想到余弦定理的公式来表示:

L=h2+rb2+rp2−2rbrpcos⁡(δ+ψ)L = \sqrt{h^{2}+r_b^{2}+r_p^{2}-2 r_b r_p \cos(\delta+\psi)}L=h2+rb2​+rp2​−2rb​rp​cos(δ+ψ)​

这个方程直接将机器人的几何参数与所需的执行器长度联系起来。

运动的微积分:雅可比矩阵

到目前为止,我们只描述了静态位姿。但机器人是用来移动的!下一个问题是,如果我以一定的速度转动关节,末端执行器会移动多快?这种关节空间速度和任务空间速度之间的关系被机器人学中最重要的工具之一所捕捉:​​雅可比矩阵​​, JJJ。

雅可比矩阵是正运动学方程的导数。它是一个矩阵,提供了从关节速度向量 θ˙\dot{\boldsymbol{\theta}}θ˙ 到末端执行器线速度和角速度向量 v\mathbf{v}v 的线性映射:

v=J(θ)θ˙\mathbf{v} = J(\boldsymbol{\theta}) \dot{\boldsymbol{\theta}}v=J(θ)θ˙

可以把它想象成一套随机械臂构型 θ\boldsymbol{\theta}θ 变化的齿轮比。雅可比矩阵的每一列都告诉你,如果你只转动相应的关节,末端执行器将如何移动。例如,在一个简单的平面臂中,雅可比矩阵让我们能够回答这个问题:“为了让我的工具以 0.10.10.1 米/秒的速度直线上升,我需要什么样的关节速度组合?”通过求解一个线性方程组,我们可以找到实现期望运动所需的确切关节指令。

雅可比矩阵的这种“灵敏度”解释对于理解误差如何在系统中传播也极其有用。如果你的一个关节传感器有一个微小的误差,比如说 0.10.10.1 度,这会对末端执行器的位置造成多大的偏差?雅可比矩阵直接给你答案。末端执行器位置误差的大小就是相应雅可比矩阵列的模乘以关节角度误差。一个完全伸展的臂对于其基座关节可能有一个非常大的雅可比矩阵项,这意味着“肩部”的一个小误差会在指尖产生一个大误差。

伟大的逆问题

在实践中,我们很少从“如果我这样移动我的关节,手会到哪里去?”这个问题开始。相反,我们心中有一个任务:“我需要将夹爪移动到空间中的这个特定点来拾取一个物体。”我们知道期望的末端执行器位姿 pd\mathbf{p}_dpd​ ,我们需要找到能够实现它的关节角度 θ\boldsymbol{\theta}θ 。这就是​​逆运动学问题​​。

与正运动学不同,逆运动学通常很困难。这些方程是非线性的,并且可以有多个解(想象一下你可以用不同方式触摸到你的鼻子),或者根本没有解(如果目标遥不可及)。很少有一个简单的闭式解公式。

那么,我们如何解决它呢?我们求助于雅可比矩阵和 Isaac Newton 的智慧。我们可以将问题构建为寻找一个误差函数的根,r(θ)=p(θ)−pd=0\mathbf{r}(\boldsymbol{\theta}) = \mathbf{p}(\boldsymbol{\theta}) - \mathbf{p}_d = \mathbf{0}r(θ)=p(θ)−pd​=0。我们可以用迭代方法来数值求解:

  1. 从关节角度的初始猜测 θk\boldsymbol{\theta}_kθk​ 开始。
  2. 使用正运动学查看末端执行器当前的位置 p(θk)\mathbf{p}(\boldsymbol{\theta}_k)p(θk​)。
  3. 计算误差向量:我们需要向哪个方向移动多远?Δp=pd−p(θk)\Delta\mathbf{p} = \mathbf{p}_d - \mathbf{p}(\boldsymbol{\theta}_k)Δp=pd​−p(θk​)。
  4. 使用雅可比矩阵的逆将这个期望的笛卡尔运动映射回所需的关节运动:Δθ≈J−1Δp\Delta\boldsymbol{\theta} \approx J^{-1}\Delta\mathbf{p}Δθ≈J−1Δp。
  5. 更新关节角度:θk+1=θk+Δθ\boldsymbol{\theta}_{k+1} = \boldsymbol{\theta}_k + \Delta\boldsymbol{\theta}θk+1​=θk​+Δθ。
  6. 重复此过程,直到误差足够小。

这个迭代过程正是著名的​​Newton-Raphson方法​​,用于求解非线性方程组。它的威力在于其速度。当接近解时,它表现出​​二次收敛​​,这意味着答案的正确小数位数在每一步中大约翻倍。这是一种极其高效地逼近所需构型的方法。

选择的艺术:掌握冗余性

如果一个机器人的关节比其任务严格需要的要多,会发生什么?例如,一个7关节臂(像人的手臂)试图指向3D空间中的一个位置(一个3维任务)。这被称为​​冗余机械臂​​。

在这种情况下,雅可比矩阵 JJJ 是一个“宽”矩阵(m×nm \times nm×n 且 n>mn \gt mn>m),线性系统 JΔθ=ΔpJ \Delta\boldsymbol{\theta} = \Delta\mathbf{p}JΔθ=Δp 有无限多个解。这不是问题,而是一个机遇!这种选择的自由度——雅可比矩阵的“零空间”——对应于机械臂不移动末端执行器的自运动。想象一下,保持你的指尖在空间中固定不动,同时移动你的肘部。

我们如何从这个无限集合中选择“最佳”解?一个常见且数学上优雅的选择是那个以最小关节运动量完成任务的解。这个解由​​Moore-Penrose伪逆​​ J+J^+J+ 给出。更新规则变为 Δθ=J+Δp\Delta\boldsymbol{\theta} = J^+\Delta\mathbf{p}Δθ=J+Δp。这种方法不仅优雅,而且稳健。它可以使用一种称为​​奇异值分解 (SVD)​​ 的技术可靠地计算,该技术能够优雅地处理接近奇异点(机械臂失去某些活动性的构型,比如完全伸直时)的构型,甚至可以找到朝向无法到达的目标的“尽力而为”的运动。

但我们可以更聪明。为什么只最小化关节运动?冗余性使我们能够追求次要目标。我们可以选择关节速度,在跟踪期望路径的同时,也最小化机器人的动能,使运动更高效。这导致了一种​​动态加权伪逆​​,它考虑了机器人的惯性矩阵 HHH。这种运动学(运动的几何学)和动力学(运动的力与能量)的美妙结合,使得机器人不仅能正确地执行任务,而且能优雅和优化地执行。这就是选择的艺术,由描述运动世界的强大而统一的数学语言所实现。

应用与跨学科联系

既然我们已经探讨了机器人运动学的基本原理——可以说是运动的“语法”——我们就可以开始欣赏这门语言让我们能够书写的美妙故事了。我们已经学会了如何用矩阵描述机器人的位置和姿态,以及如何将关节运动与末端执行器的运动联系起来。但真正的乐趣才刚刚开始。运动学不是一个孤立的数学游戏;它是连接抽象意图与物理行动的重要桥梁,是机器人感知世界的镜头,也是它建立理解的基础。让我们踏上一段旅程,看看这个美丽的框架如何在解决科学和工程领域真实且常常令人惊讶的问题中焕发生机。

控制与规划的力量

机器人学的核心在于让事情发生。运动学最直接的应用就是告诉机器人该做什么。想象你有一个简单的轮式机器人,那种有两个可以独立旋转的轮子。你不想用“左轮以每秒5弧度的速度旋转,右轮以3.5的速度旋转”这样的方式来思考。你的愿望要简单得多:“以每秒1米的速度前进,同时向右缓转。”机器人说的是轮速的语言,而你说的是速度和旋转的语言。我们如何翻译?运动学提供了字典。正运动学是一个矩阵方程,它将轮速转换成机器人的速度。为了得到控制律,我们只需将这本字典反过来用。通过找到运动学矩阵的逆,我们创建了一个控制器,它接收我们期望的运动,并计算出实现它所需的确切轮速。这是一个简单、优雅的想法,但它构成了无数移动机器人在我们世界中导航的基础。

但更复杂的任务呢?考虑一个工厂里的机械臂。我们不仅希望它停在某个点上;我们希望它遵循一条平滑、精确的路径——也许是描画一道胶水或焊接一条焊缝。我们可以费力地规划每个关节的运动,但这既复杂又不自然。我们的目标是让机器人的尖端遵循一条路径。有没有可能在简单、直观的末端执行器笛卡尔空间中规划轨迹,然后让机器人的关节就...跟着走?对于一类特殊的系统,答案是响亮的“是”,这个概念被称为​​微分平坦性​​。对于常见的双连杆平面机械臂,事实表明其末端执行器的位置是一个“平坦输出”。这是一个真正深刻的想法。它意味着,如果你能指定末端执行器的路径 y(t)y(t)y(t),你就可以通过代数方式确定关于机器人的一切——关节角度 q(t)q(t)q(t)、关节速度 q˙(t)\dot{q}(t)q˙​(t)、加速度 q¨(t)\ddot{q}(t)q¨​(t),甚至创造该运动所需的电机扭矩 τ(t)\tau(t)τ(t)——只需对你选择的路径进行几次时间求导。这一发现将规划关节空间中动态可行运动的极其复杂的问题,转化为了在任务空间中绘制平滑曲线的简单得多的问题。这是一个美丽的例子,说明了对系统运动学结构的深刻理解如何揭示出具有巨大实用价值的捷径。

我们所发展的数学语言是如此强大,以至于它的应用远远超出了由简单刚性连杆构成的机器人。自然界充满了柔性的、“黏糊糊的”生物,工程师们也越来越尝试制造模仿它们的机器。想象一个像章鱼触手或植物卷须一样移动的机器人——一个​​连续体机器人​​。它没有离散的关节,但可以沿着其整个长度弯曲和扭转。我们怎么可能描述它的构型呢?令人惊奇的是,我们用于刚性机器人的相同数学工具,特别是来自李代数的扭转理论和矩阵指数,可以被调整使用。对于一个以恒定曲率弯曲的机器人,它的整个形状可以通过沿机器人长度指数化一个单一的、恒定的扭转矩阵来描述。这显示了底层数学惊人的一致性;同样的核心思想可以描述钢臂的叮当作响和柔软如蛇的机器人的优雅弯曲。

在真实世界中导航:感知与估计

要控制一个机器人,你必须首先知道它在哪里。如果你不知道哪个方向是“前”,或者你从哪里开始,那么“向前移动一米”的命令是毫无意义的。这让我们来到了运动学与感知之间迷人的相互作用。机器人的运动学模型是其内部的运动感,一种“航位推算”的形式。但真实世界充满了不确定性;轮子会打滑,地面不平,模型也从不完美。为了真正导航,机器人必须将其内部模型与外部传感器数据——它在世界上的眼睛和耳朵——结合起来。

这是现代状态估计的核心思想,而​​扩展卡尔曼滤波器 (EKF)​​ 是其最著名的工具之一。让我们想象一个机器人在一个有已知地标的房间里移动。机器人有其运动学模型,该模型预测它在向电机发送命令后会到达哪里。这是预测步骤。当然,由于微小的误差,这种预测会随着时间的推移累积不确定性;机器人对其位置越来越不确定,就像一个闭着眼睛走路的人。然后,机器人睁开眼睛,看到了地标。它测量到地标的距离和角度。这个测量也有一些不确定性。EKF的更新步骤就是将不确定的预测与不确定的测量相结合,从而得出一个新的、更确定的状态估计的神奇秘诀。这个过程需要将非线性的运动学和测量模型线性化,而这正是使用我们已经研究过的雅可比矩阵来完成的。因此,运动学不仅用于控制;它还是机器人形成对其在世界中所处位置信念的能力核心的预测引擎。

现在是重大的挑战。如果机器人被放置在一个完全未知的环境中呢?它没有地标地图来帮助它。它必须在构建地图的同时确定自己在该地图上的位置。这就是著名的​​同步定位与建图 (SLAM)​​ 问题。这就像在一个黑暗、陌生的房间里醒来,试图在你四处走动的同时,既画出家具的地图,又在该地图上精确定位你的位置。使用EKF框架,这个看似不可能的任务变得可以处理。机器人的状态向量被扩充,不仅包括它自己的位姿 (x,y,θx, y, \thetax,y,θ),还包括它所见过的所有地标的估计位置。协方差矩阵现在代表了整个系统的不确定性——机器人的位姿和地图本身。至关重要的是,它还捕捉了相关性:如果机器人的位置不确定,那么它刚刚看到的地标的位置也以一种相关的方式不确定。随着机器人的移动,其运动学模型驱动预测,每次它重新观察到一个地标时,EKF的更新步骤都会收紧它对自己位姿和地标位置的信念,将地图和机器人的位置编织成一个单一、连贯的整体。

与计算和现实共舞

到目前为止,我们一直生活在一个相当完美的理想化模型世界里。但是,当我们优雅的数学遇到物理硬件的混乱现实和计算机的有限世界时,会发生什么呢?这正是一些最微妙和有趣的联系产生的地方。

首先,真实的机器人并非按照完美的规格制造。机械臂的连杆在长度上可能存在微小的制造误差。如果我们在运动学模型中使用“数据手册”上的长度,我们计算出的末端执行器位置总会略有偏差。这对于精密任务来说是个大问题。解决方案在于​​机器人标定​​。我们可以将真实的连杆长度视为未知参数。通过将机器人移动到一系列已知的关节构型,并精确测量其末端执行器的结果位置,我们可以建立一个逆问题。我们有一组观测值,我们想推断出能最好解释它们的模型参数。这通常涉及求解一个大型线性方程组。但如果我们的测量有噪声,或者我们选择的构型没有给我们足够的信息怎么办?问题可能会变得“病态的”,意味着测量中的小误差可能导致我们估计的长度出现巨大误差。在这里,来自数值优化和机器学习的技术,如​​Tikhonov正则化​​,就派上了用场。正则化增加了一个惩罚项,不鼓励“离谱”的解,使结果偏向于先验信念(例如,长度接近其数据手册值),从而产生对机器人真实物理参数的稳定而稳健的估计。

其次,即使有完美的模型,找到解也并非总是易事。对于一个简单的2连杆臂,我们可以找到一个漂亮的、闭式的逆运动学代数解。但对于一个有许多关节的复杂臂,这通常是不可能的。此外,真实的机器人有物理限制;它们的关节不能无限弯曲。我们必须转向​​数值优化​​。我们不是直接解方程,而是“搜索”一个解。我们定义一个误差函数——比如说,当前末端执行器位置与目标之间的距离——然后我们使用微积分(特别是雅可比矩阵)来确定关节空间中能最快减少这个误差的方向。然后我们朝那个方向迈出一小步。这个过程就像在有雾的山上迷路,总是朝下坡走以找到山谷。像投影线搜索这样的方法甚至可以巧妙地处理关节限制:如果一步会使关节超出其有效范围,我们只需在评估我们的进展之前将其投影回最近的合法位置。这将逆运动学从一个代数问题变成了一个数值算法问题,使其与计算科学领域紧密相连。

最后,让我们思考一个关于最小、最看似微不足道的误差所产生后果的美妙而深刻的思想实验。想象一个机器人在一条笔直、无限长的走廊里执行SLAM。它的传感器是完美的,它的电机是完美的。唯一的缺陷在于它的计算机大脑:当它更新其航向角时,它必须将结果存储为一个有限精度的数字。假设它总是将角度向下舍入到最接近的可表示值(一个称为截断或“chopping”的过程)。在每一步中,机器人都打算增加一个微小的旋转 Δθ\Delta\thetaΔθ,但由于这种截断,实际的变化总是稍微小一点。在每一步都引入了一个微小的、系统性的误差。结果是什么?经过数千步后,这种微小的旋转不足累积起来。机器人认为它在直走,但实际上它正在沿着一个巨大的、平缓的弧线轨迹行进。因为它的整个地图都是相对于它自己估计的位姿构建的,所以它将走廊笔直的墙壁也映射得好像它们也随之弯曲。这是一个惊人的演示,说明了计算的离散性如何在一个由连续定律支配的世界中创造出宏观的、看似物理的假象。这是关于我们的数学模型与执行它们的机器之间精妙舞蹈的深刻一课。

从控制轮式机器人的简单逻辑到用不完美的计算机记忆构建宇宙地图的深刻微妙之处,机器人运动学的原理是一条金线。它们是我们用来指挥机器的语言,是驱动它们感知的引擎,也是一个丰富的游乐场,在这里,深刻的数学思想、现实世界的混乱以及计算的有限性,共同谱写出一曲迷人而美丽的交响乐。