type
status
date
slug
summary
tags
category
icon
password
文本

title: Fundamentals of Robotics
number headings: auto, first-level 1, max 6, 1.1
layout: page

1 坐标系与位姿变换

1.1 目标

理解机器人运动的空间表示,掌握齐次变换矩阵的使用。

1.2 内容

1.2.1 笛卡尔坐标系:

“机器人的空间视角”
这是人类最直观的理解方式。它基于我们熟悉的直角坐标系,描述的是机器人末端工具中心点 (TCP) 在空间中的位置和方向。
  • 定义: 描述机器人末端相对于基座(Base)或世界(World)的位置和姿态。
  • 数据表示: 通常包含 6 个值:3 个位置值 + 3 个方向值。
    - 位置 (Location): (前后、左右、上下)。
    - 姿态 (Orientation): (或 / ),表示绕轴的旋转(如翻滚、俯仰、偏航)。

1.2.2 关节坐标系:

“机器人的内部视角”
这是机器人最原始的控制方式。在这个坐标系下,机器人的每一个位置都是由每个关节的旋转角度(或移动距离)来定义的。
  • 定义: 通过直接控制机器人各个轴(电机)的旋转角度来确定机器人的姿态。
  • 数据表示: 如果是一个六轴机器人,其坐标数据通常表示为一组角度,例如:
    - 例如:

1.2.3 齐次矩阵(4×4)表示位姿

齐次变换矩阵(Homogeneous Transformation Matrix) 是描述物体在空间中 **“位置”和“姿态”**最重要的数学工具。
A. 左上角 :旋转矩阵 (Rotation)
  • 这一块描述了姿态(Orientation)。
  • 它定义了物体的坐标轴相对于参考系是如何偏转的。
  • 这些数字通常是由欧拉角(Rx, Ry, Rz)计算出来的余弦和正弦值。
B. 右上角 :位置向量 (Position / Translation)
  • 这一块描述了位置(Location)。
  • 它非常直观,就是坐标系原点相对于参考系的 距离。
C. 最后一行:比例与透视 (Scale & Perspective)
  • 在工业机器人这种“刚体运动”中,物体不会变大变小,也不会发生透视变形。
  • 所以这一行永远是固定的 。它存在的意义主要是为了凑成 的方阵,以便进行矩阵运算。

1.2.4 平移、旋转(欧拉角、四元数)

平移: 主要就是坐标原点的运动
notion image
旋转:
  1. 右乘:
    物理意义:绕“自身”(当前)的坐标轴旋转 (Intrinsic Rotation)
    这是机器人学中最常用的逻辑。
    想象你就是那个坐标系(或者机器人末端):
    - 当你已经在空间中处于某个姿态 了。
    - 指令是:“绕你自己的 Z 轴(你的头顶方向)转 90 度”。
    - 这时候,旋转矩阵 必须乘在右边
    应用场景:
    - 工具操作: 机器人末端已经伸出去了,现在要让电钻转动,或者让夹具旋转一下。这是相对于工具本身的旋转。
    - 连杆推导: 在推导机械臂正运动学(如 DH 参数)时,我们通常是一个关节接一个关节地往后推,这本质上是一连串的右乘(相对于上一关节移动/旋转)。
    ---
  1. 左乘:
    物理意义:绕“固定”(世界/基座)的坐标轴旋转 (Extrinsic Rotation)
    想象你在玩操纵木偶:
    - 木偶在舞台的某个位置
    - 指令是:“绕**舞台中心(世界原点)**的 Z 轴转 90 度”。
    - 这时候,旋转矩阵 必须乘在左边
    - 结果: 整个物体会绕着世界原点画圆弧,发生巨大的位置位移。
    应用场景:
    - 基座调整: 如果你把整个机器人搬起来,把底座旋转了 30 度。那么机器人末端相对于世界的位置,就是左乘了这个 30 度的变换。
    - 坐标系校正: 比如传感器安装歪了,需要在最外层套一个修正矩阵。
欧拉角:
notion image
四元数:
比欧拉角多一个自由度。优点是可以避免万向节死锁。

1.2.5 坐标系之间的转换与链式计算

坐标计算可用链式计算进行转换
链式计算举例:
  1. World (W): 世界大地(固定不动)。
  1. Base (B): 机器人底座(安装在地面上,可能有个偏移)。
  1. Flange (F): 机器人末端法兰盘(随关节转动)。
  1. Tool (T): 安装在法兰上的夹具(TCP)。
问题: 我控制了关节运动,夹具尖端 (Tool) 在世界 (World) 的哪里?
链式计算公式:
  • (Base Frame): 机械臂装在哪里?(通常是固定的安装误差矩阵)。
  • (Kinematics): 这一项是动态变化的。它是通过 6 个关节角度 算出来的(正运动学)。
  • (Tool Frame): 夹具有多长?(这是你标定出来的,通常固定不变)。
只要把这三个 矩阵按顺序乘起来,得到的结果 的最后一列 就是夹具尖端的世界坐标。

1.3 问题:

1.3.1 为什么需要用一个整体的“齐次矩阵”来表示位姿,而不是分开用旋转和位移?

齐次矩阵包含了旋转与位移,同时使用齐次矩阵可以更方便的进行坐标变换。
例如需要进行位移或者旋转,只需要将齐次矩阵乘上对应的变换矩阵即可实现变换,
引入矩阵乘法,实现相对坐标到实际三位坐标的转换,这有利于运动学正逆解的求解

1.3.2 如果一个点在 A 坐标系下有坐标,我们如何把它转换到 B 坐标系?

求解出A到B的坐标系变换矩阵,求解方法为:
然后A坐标系的坐标乘上这个变换矩阵

1.3.3 多个关节坐标系之间的变换,最后是如何得到末端相对基座的位姿的?

通过矩阵链式法则 (Chain Rule) 计算。 既然每个关节相对于上一级关节的变换矩阵是已知的(由 DH 参数或关节角度决定),我们只需将这些局部变换矩阵按顺序连乘。 公式为:。 最终得到的矩阵,其平移部分和旋转部分即代表末端相对于基座的位姿。

2 轨迹规划

2.1 目标

理解机器人从起点到终点的运动方式和路径生成。

2.2 内容

2.2.1 插值方法(直线插值、多项式插值)

插值就是将路径点变得更加密集,如何选择添加原本没有的路径点,需要定义新点坐标与老坐标的关系式。
  1. 直线插值 (Linear Interpolation with Parabolic Blends, LSPB) 这是最简单、最直观的插值方法,也称为“线性插值”。
基本原理
  • 用 PRM:如果你是一个仓库里的搬运机器人,仓库里的货架(障碍物)永远不动,你需要一天跑几百趟不同的路线。
通常在机械臂规划中,RRT(及其改进版 RRT-Connect, RRT)用得更多,因为机械臂的状态空间太大了,建一张完美的 PRM 图往往太耗内存。* 具身智能基础——机器人轨迹规划.docx

2.3 问题:

2.3.1 为什么在关节空间直线运动和在笛卡尔空间直线运动会产生不同的轨迹?

这是一个非常经典且深刻的问题,它触及了机器人学的核心数学本质:非线性映射 (Non-linear Mapping)
根本原因在于:关节空间(角度)与笛卡尔空间(位置)之间的映射关系通常是包含三角函数(sin, cos)的非线性关系,而不是简单的比例关系。
下面为您详细拆解其中的数学原理和物理表现。
  1. 核心数学原因:非线性运动学
机器人的正运动学(Forward Kinematics)方程描述了关节角度 如何决定末端位置 。对于旋转关节的机械臂,这个方程通常长这样:
请注意其中的
情况 A:在关节空间做直线运动 (Joint Interpolation)
这意味着让角度 随时间 线性变化(匀速转动):
如果你把这个线性的 代入上面的公式,你会发现末端位置 变成了:
结论: 随时间的变化是余弦波形,而不是线性的。在几何上,这意味着末端画出的是圆弧或复杂的曲线,而不是直线。
情况 B:在笛卡尔空间做直线运动 (Cartesian Interpolation)
这意味着强行规定末端位置 随时间 线性变化:
为了实现这一点,控制器必须反推关节角度 应该怎么变(逆运动学):
结论:为了让末端走直线,关节必须以一种非线性的、忽快忽慢的节奏去转动(因为反余弦函数 是非线性的),以此来抵消旋转带来的弧度。 假设你要在面前的白板上画一条水平横线。
  1. 关节空间直线插值
      • 如果你只让肩膀关节匀速转动,手肘不动,你的手会在空中画出一个以肩膀为圆心的扇形弧线。这就是关节空间的“直线”(在角度图上是直线,在空间中是圆弧)。
  1. 笛卡尔空间直线插值
      • 为了画出直的横线,当你肩膀转动时,你的手肘必须配合着伸缩/弯曲
      • 当手伸到最远端时,手肘要伸直;当手划过身体正前方(最近点)时,手肘要弯曲得最厉害。
      • 这种“肩膀转一点,手肘就要精密计算着弯一点”的过程,就是笛卡尔空间插值。

2.3.2 轨迹规划时,为什么要限制速度和加速度?

这不仅仅是为了“平滑”,而是受限于物理定律和硬件极限。
  1. 动力学限制 (Dynamics & Torque Saturation)
    请看拉格朗日动力学方程:
    $$
    \tau = \mathbf{M}(q)\ddot{q} + \mathbf{C}(q, \dot{q})\dot{q} + \mathbf{G}(q)
    $$
    - 限制加速度 ():由第一项 可知,力矩 与加速度成正比。如果 过大,所需的 会超过电机的额定峰值力矩 。一旦超过,电机无法提供足够的力,机器人就会偏离轨道(Tracking Error)。
    - 限制速度 ():由第二项 可知,科里奥利力和离心力与速度的平方成正比。速度翻倍,非线性干扰力变为 4 倍,这会极大地破坏控制系统的稳定性。
  1. 电机物理限制
    - 反电动势 (Back-EMF):直流电机的电压方程 。当 过高时,反电动势 可能会接近电源电压,导致没有电压差来驱动电流 ,电机输出力矩骤降为 0。
  1. 机械共振 (Resonance)
    - 过大的加速度突变(即加加速度 Jerk)会激发机械臂连杆的低频模态,导致末端剧烈抖动。

2.3.3 如果规定两秒钟必须完成一次动作,应该如何安排轨迹?

这通常通过多项式插值(Polynomial Interpolation)或速度曲线缩放来实现。以下是具体的实施步骤和数学逻辑:

方法一:五次多项式插值 (Quintic Polynomial) —— 最推荐
这是工业机器人和服务机器人中最常用的方法,因为它能保证在起点和终点时,速度加速度都为 0(平滑启动,平滑停止)。
  1. 设定边界条件
假设这一动作是从位置 移动到 ,总时间 秒。我们需要满足 6 个条件:
  • (起点): 位置=,速度=0,加速度=0
  • (终点): 位置=,速度=0,加速度=0
    • 建立方程
我们使用一个关于时间 的五次多项式:
求解系数
直接将 和边界条件代入,可以解出这 6 个系数(这是一个标准的线性方程组求解):
生成指令
现在你有了具体的函数 。在控制周期(比如 1ms)内,不断代入 ,算出每一个时刻应该在的位置发送给电机即可。

方法二:梯形速度曲线倒推 (Trapezoidal Profile Scaling) —— 工程常用
如果你习惯用“加速-匀速-减速”的逻辑,可以通过时间反推速度。 逻辑分析
要在 2秒 内走完距离
  • 如果全程匀速(不可能),速度
  • 因为有加减速过程,峰值速度 (Peak Velocity) 必须大于平均速度。
设定比例
通常设定加速时间 和减速时间 。为了简单,常设
假设加速段占总时间的 20%(即 0.4秒),减速段占 20%。
  • 匀速段时间 = 秒。
计算峰值速度
根据面积法(速度-时间图像的面积 = 距离):
这意味着,你只需将机器人的最大速度设定为 ,并设定加速度 ,就能精确在 2秒 跑完。

关键步骤:可行性校验 (Feasibility Check)
这是最重要的一步。你规定了 2秒,但机器人不一定做得到
在生成轨迹后,你必须立刻检查:
  1. 最大速度检查:计算出的 是否超过了电机铭牌上的最大转速?
  1. 最大加速度检查:五次多项式的最大加速度发生在 的中间段附近,计算它是否超过了电机的最大扭矩限制?
  • 如果没超过:恭喜,轨迹有效。
  • 如果超过了:物理上不可能完成。你必须报错:“Target time 2.0s is unreachable (Requires velocity X > Limit)”。

3 机器人运动学

3.1 目标

建立关节运动与末端位姿的数学关系,理解 IK/FK。

3.2 内容

3.2.1 FK(正运动学):

已知关节角 → 计算末端位姿

3.2.2 IK(逆运动学):

已知末端位姿 → 计算关节角

3.2.3 奇异性与冗余度问题

奇异性 (Singularity)
奇异性是指机械臂处于某种特定构型(Configuration)时,其运动学性质发生退化的现象。 数学定义:雅可比矩阵秩亏 (Rank Deficiency)
在微分运动学中,末端速度 与关节速度 的关系由雅可比矩阵描述:
当求解逆运动学速度(已知末端速度求关节速度)时,我们需要 的逆:
奇异位形即指使得雅可比矩阵 行列式为零()或秩(Rank)减少的构型。此时, 不可逆(或是奇异矩阵)。
物理/工程表现
  1. 自由度丧失:在奇异点,机械臂在笛卡尔空间的某个特定方向上完全失去移动能力。无论关节如何运动,末端都无法沿该方向产生瞬时速度。
  1. 无限关节速度:根据 ,当 趋近于奇异(行列式趋近于0)时,为了维持一个有限的末端笛卡尔速度 ,计算出的关节速度 会趋向于无穷大
      • 后果:导致控制系统输出饱和、电机过载、机械臂剧烈震动甚至失控。
分类
  • 边界奇异性 (Boundary Singularity):发生在工作空间边缘(机械臂完全伸直或折叠)。此时机械臂无法进一步向外延伸。
  • 内部奇异性 (Internal Singularity):发生在工作空间内部。通常是由于两个或多个关节轴线共线(Collinear)或对齐造成的。例如,6轴机械臂的腕部关节轴线重合(Wrist Singularity),导致无法唯一确定末端姿态
  1. 冗余度 (Redundancy)
冗余度是指机械臂拥有的自由度(DOF)数量多于执行特定任务所需的最少自由度数量。
数学定义:维数差异 ()
设关节空间的维数为 (关节数),任务空间(笛卡尔空间)的维数为 (通常为位置3 + 姿态3 = 6)。
  • 时,称该机器人为冗余机器人(Redundant Robot)
  • 例如:一个 7自由度(7-DOF)的机械臂去执行一个 6自由度(6-DOF)的抓取任务,它就拥有 1 度的运动学冗余。
核心特性:零空间运动 (Null Space Motion)
对于冗余机器人,逆运动学问题从“求唯一解”变成了“求无限多解”。
数学上,这对应于雅可比矩阵拥有非空的零空间(Null Space)。
我们可以将关节速度分解为两部分:
  • 第一项 :完成特定任务所需的最小范数解(其中 是伪逆矩阵)。
  • 第二项 零空间投影项
物理意义:这就意味着存在一种运动,即机械臂的关节在动,但末端执行器保持完全静止(这种运动被称为“自运动”或 Self-motion)。
一句话解释:机器人的关节比任务需要的多,所以它干活时特别灵活,可以“花式”干活。
通俗比喻:你的手肘
做一个实验:
  1. 把你的右手掌按在桌面上,按死不动(这代表任务:保持末端位置不变)。
  1. 现在,试着摇晃你的手肘
  1. 你会发现,虽然手掌没动,但你的手肘可以向上抬、向外拐、甚至画圈。
这就是冗余度。 因为你的任务只是“按住桌子”(只需要 6 个自由度),但你的人体手臂系统其实很复杂(超过 6 个自由度),多出来的自由度就让你可以在不耽误干活的前提下,随意调整胳膊的姿势。
概念
为什么产生 (Why)
什么时候出现 (When)
形象理解
冗余度
资源过剩。机器人的本事(自由度)比任务要求的更多。
1. 使用 7轴机器人时。 2. 任务有对称性(如激光)忽略某个方向时。 3. 车载机械臂联动时。
手按在桌上不动,胳膊肘还能随便晃。
奇异性
几何重合。关节轴线对齐,导致多个关节功能重复,少了一个控制维度。
1. 腕部关节伸直 ()。 2. 手臂完全伸直到极限。 3. 手伸到了头顶正上方。
两个轮子的车,轮子都横过来了,你非要让它直着走。

3.3 问题:

3.3.1 正运动学和逆运动学的输入和输出是什么?

  • 正运动学 (Forward Kinematics):
    - 已知所有关节的角度 算出末端在空间的坐标
    - 这是为了让系统知道“我现在在哪”。
  • 逆运动学 (Inverse Kinematics):
    - 已知想要去的空间坐标 反推出每个关节应该转多少度
    - 这是为了执行命令,例如“去抓那个工件”。

3.3.2 一个平面两关节机械臂去到同一个目标点,可能会有几种解?为什么?

为什么通常是 2 种?(多解性)
这可以用 “手肘朝向” 来直观理解。
想象你的手臂平放在桌面上(平面二连杆):
  • 你的肩膀是基座(Base)。
  • 你的指尖按在桌上的一个点(目标点)。
  • 保持指尖和肩膀不动,你的手肘可以往凸出去,也可以往凸出去。
这两个姿态:
  1. 肘部向上/左 (Elbow Up/Left)
  1. 肘部向下/右 (Elbow Down/Right)
尽管关节角度 完全不同,但末端都到达了同一个坐标 。在数学上,这是因为两个圆(以基座为圆心半径 的圆,和以目标点为圆心半径 的圆)通常有两个交点
 1. 特殊情况(奇异点 Singularity)
  • 1 种解: 当目标点处于最远边界(手臂完全伸直,)或最近边界(手臂完全折叠,)时。此时两个解重合了。
  • 无数种解: 如果 且目标点刚好在基座原点 。此时第一关节转到任何角度,第二关节只要折叠回来都能回到原点。

3.3.3 如果目标点超出了机械臂的最大工作范围,会怎样?

4 高阶数学工具:旋量代数

4.1 目标

理解现代机器人学中的数学工具(李群、李代数)。

4.2 内容

4.2.1 Twist(螺旋向量)的定义

4.2.2 旋量表示:位姿 = Exponential of a Twist

4.2.3 指数映射与对数映射

4.2.4 应用:利用旋量计算刚体运动、轨迹

4.3 问题:

4.3.1 什么是“斜对称矩阵”?

4.3.2 Twist(螺旋向量)由哪两部分组成?

4.3.3 “刚体位姿等于一个螺旋的指数映射”是什么意思?

5 附录:运动学正逆解应用

notion image