← 全部文章

总结:从数学模型到工程系统

  • 机器人学
  • 工程系统
  • 运动控制
  • 软件架构
  • 技术综述
目录

在前面的文章里,我们依次讨论了旋量、李群、雅可比、逆运动学、拉格朗日动力学、轨迹生成、接触约束与优化。每一种方法都能写成漂亮的公式,也都能在一个精心设计的例子里得到正确答案。

可一台真实机器人很少因为“缺少某一个公式”而失败。

它更可能因为工具坐标系偏了两毫米而插不进孔,因为负载参数仍是空载值而跟踪变差,因为规划器给出的轨迹超过了驱动器能力,因为传感器时间戳错位而把过时状态送进控制器,或者因为异常发生后没有明确的减速、保持与停机路径。

这揭示了数学模型在工程中的真正位置:它并不独自完成任务,而是把物理世界压缩成一组可计算的结构,再通过清楚的软件接口,把结构交给规划、优化和控制模块使用。

因此,这篇总结不再沿着公式逐章回顾。我们换一个视角,从一台机器人接到任务的那一刻出发,看目标如何经过模型、规划、轨迹、控制和硬件,最终变成真实运动;也看那些优雅的数学工具,分别在哪一层发挥作用,又会在哪些工程细节上失效。

机器人从任务、模型、规划到实时控制与硬件反馈的完整工程栈

1. 一次真实运动,要穿过哪些层

假设一台机械臂要从料箱中抓取零件,再把它装入工装。操作员看到的任务只有一句话:

找到零件,抓住它,避开周围障碍,把它稳定地装到目标位置。

软件系统接到的却不能只是一句话。它必须逐层回答一组更具体的问题:

  • 零件和工装位于哪个坐标系,测量在什么时刻有效?
  • 机器人当前构型是什么,工具与负载参数是否正确?
  • 哪些关节构型能完成抓取,哪些会碰撞或接近奇异位形?
  • 从当前状态到目标状态应走哪条路径?
  • 这条路径以多快的速度执行,才满足速度、加速度、加加速度和力矩限制?
  • 控制器应该输出位置、速度还是力矩?
  • 执行偏离计划时,是继续修正、降低速度、重新规划,还是立即停止?

这些问题构成了一条有方向的数据链:任务与环境模型给出“要去哪里”,运动学和动力学模型回答“机器人怎样运动”,规划器选择“未来准备怎么走”,轨迹生成器补上“每一时刻走到哪里”,控制器再根据反馈决定“此刻发出什么命令”。驱动器、电机和机构执行命令,编码器、力传感器与视觉系统把新的真实状态送回上层。

各层的运行节奏也不同。环境建图和全局规划可以花费较长时间寻找可行解;轨迹控制必须按照稳定周期更新;电流环通常位于驱动器内部,以更快的周期调节电机。工程实现并不要求所有模块运行在同一个线程或同一种频率,真正重要的是每个接口都明确数据含义、时间戳、单位、坐标系、有效期限和异常语义。

一套常见开源实现恰好体现了这种分层:MoveIt 维护规划场景并组织运动规划,Pinocchio 一类刚体动力学库提供位姿、雅可比、质量矩阵与逆动力学计算,ros2_control 把控制器连接到标准化的状态和命令接口。它们可以互相配合,却不会替彼此完成全部工作。

这条边界非常重要:算法给出结果,系统还要负责让结果在正确的时间、坐标系和硬件能力范围内生效。

2. 模型首先是一份工程数据

在纸面推导中,我们常从一个已知的 M(q)M(q)J(q)J(q) 或齐次变换矩阵开始。工程现场里的第一项工作,通常是确认这些量究竟来自哪里。

机器人描述文件记录连杆拓扑、关节轴、名义尺寸、惯量和碰撞几何;标定结果修正真实设备与名义模型之间的偏差;编码器给出当前关节状态;工具配置补充 TCP;负载配置补充末端质量、质心与惯量;视觉和力传感器又以各自的坐标系与时间戳描述外部世界。

它们共同决定控制系统此刻所使用的模型:

M(t)={结构参数, 标定参数, q(t),q˙(t), 工具与负载, 环境状态}\mathcal M(t) =\{\text{结构参数},\ \text{标定参数},\ q(t),\dot q(t),\ \text{工具与负载},\ \text{环境状态}\}

于是,李群、旋量与对偶四元数这些空间表示不再悬在抽象层面。

  • SE(3)SE(3) 及其指数、对数映射常用于位姿组合、误差定义、状态估计和插值;
  • 旋量把关节轴写成统一的几何对象,可用于正运动学、雅可比和刚体速度计算;
  • 对偶四元数适合紧凑地组合刚体变换,也能用于螺旋插值与手眼标定;
  • 齐次矩阵虽然冗余,却拥有直观、通用、库支持广泛的优势,仍是大量接口中的通用表示。

工程上没有必要强迫整个系统只使用一种表示。更可靠的做法,是让模块内部选择合适的数学结构,同时在边界上明确转换规则。例如,规划接口传递齐次位姿,优化器内部使用李代数扰动,动画或插值模块使用四元数,最终都可以成立;前提是旋转和平移的顺序、左右乘约定、四元数分量顺序与坐标系方向完全一致。

这也是许多“算法看起来对、机器人却走错”的根源。一个 4×44\times4 矩阵本身不会告诉接收者它表示 TworldtoolT_{world}^{tool} 还是 TtoolworldT_{tool}^{world};一个六维向量也不会自动说明前三项是线速度还是角速度。类型、命名和测试必须补足公式没有表达的语义。

模型进入系统后,首先应通过几个简单但有力的测试:零位姿是否符合机械图纸,单关节正向运动是否符合右手定则,正逆变换能否相消,数值雅可比是否与解析雅可比一致,静止时重力补偿是否与实测力矩同量级。越早暴露坐标和单位错误,越不容易让它们藏进复杂的规划或控制问题中。

3. 运动学怎样服务规划与在线控制

当模型能够可靠地回答“机器人现在在哪里”,系统才有资格讨论“它应该去哪里”。运动学层通常提供四类服务:正运动学、逆运动学、雅可比以及几何约束计算。

正运动学把关节状态变成末端与各连杆位姿,规划场景用它更新碰撞几何,控制器用它计算任务空间误差,视觉伺服用它连接相机、工具和基座坐标系。逆运动学则从目标位姿产生一个或多个关节构型候选。候选仍需经过关节限位、碰撞、自碰撞、奇异性与连续性检查,才能成为可执行目标。

这解释了为什么“IK 求解成功”只代表局部问题得到一个数值解。一个解可能碰到货架,可能与当前姿态相隔很远,也可能落在腕部奇异附近。工程系统通常会结合当前关节状态、多个种子、冗余自由度偏好和碰撞检测,为规划器提供更合适的候选。

雅可比连接了关节空间和任务空间:

V=J(q)q˙,τ=JT(q)W\mathcal V=J(q)\dot q, \qquad \tau=J^T(q)\mathcal W

第一条关系让差分 IK、视觉伺服和任务空间控制器把末端速度目标转换为关节运动;第二条关系把末端 Wrench 映射成关节力矩。奇异值还能揭示机器人在哪些方向容易运动、哪些方向逐渐失去能力。

在实现中,雅可比往往同时出现在规划、控制和监测里。规划器可以惩罚接近奇异的构型,控制器可以使用阻尼最小二乘避免数值爆炸,监测模块则可以根据最小奇异值提前降低速度。它们使用同一个数学对象,却采取不同策略:规划层尝试绕开问题,控制层保证短时间内仍然稳定,监测层负责在能力边界前给出保护。

Pinocchio 这类库能够从 URDF 模型计算位姿、雅可比、质心和动力学量;Drake 的 MultibodyPlant 则把多刚体模型与约束、仿真和数学规划连接起来。选择哪一个库通常取决于系统生态、实时要求、自动微分需求和已有接口,而非某个库在所有维度都占优。

4. 动力学模型什么时候真正值得使用

低速、轻载、位置控制的机械臂可以在很少显式动力学计算的情况下完成许多任务。随着速度、负载和接触要求提高,动力学模型的价值会迅速显现。

对刚性机器人,一种常用接口形式是:

M(q)q¨+h(q,q˙)=τ+JT(q)WextM(q)\ddot q+h(q,\dot q) =\tau+J^T(q)\mathcal W_{ext}

其中 hh 汇总科里奥利、离心和重力项。这个方程在系统中可以承担多种角色:

  • 给定 q,q˙,q¨q,\dot q,\ddot q 计算逆动力学力矩,用作轨迹跟踪前馈;
  • 单独计算重力项,让机器人在不同姿态下保持平衡;
  • 由状态和力矩预测下一时刻运动,用于仿真、轨迹优化和 MPC;
  • 用测得力矩减去模型力矩,估计碰撞或外部接触;
  • 在全身控制中,把任务加速度、接触力和关节力矩放进同一个约束问题。

Pinocchio 的算法接口 包含 RNEA 逆动力学、CRBA 质量矩阵和雅可比等计算,这类实现让动力学模型可以直接成为规划器或控制器的数值服务。模型预测控制与轨迹优化框架则进一步调用状态转移和导数,在一段时间内共同选择状态与控制。

模型越深入控制回路,对参数和时序的要求越高。减速器摩擦、回差、柔性、线缆拖曳、负载变化、驱动器滤波和通信延迟,都会让真实机器偏离理想刚体方程。工程设计需要把“可建模部分”和“必须靠反馈吸收的误差”分开:前馈负责抵消已知结构,反馈修正残差,饱和与保护处理超出模型能力的情况。

因此,模型精度并非越高越好。实时控制中的模型还要满足计算预算、数值稳定性与参数可维护性。一个参数可靠、执行稳定的刚体模型,常常比包含大量难以辨识参数的复杂模型更有价值。

5. 从路径到可执行轨迹,中间还有一条管线

现在回到抓取装配任务。IK 已经给出目标构型,动力学模型也能预测运动,但机器人仍不能直接从起点跳到终点。它需要先在高维构型空间找到无碰路径,再为路径配置时间,最后交给控制器执行。

从规划场景、几何路径、时间参数化到轨迹控制器和硬件执行的管线

MoveIt 的规划场景监视器 汇集机器人状态、变换关系和世界几何,形成碰撞检查与规划所需的当前场景。运动规划管线 可以通过插件调用 OMPL、Pilz 或 CHOMP 等规划方法,并在规划前后使用适配器完成约束处理与时间参数化。

这里要区分三个经常被混用的对象:

  1. 路径描述机器人按什么几何顺序经过构型或位姿,与快慢无关;
  2. 轨迹在路径上加入时间,给出位置、速度,必要时还包括加速度;
  3. 控制命令是控制器结合当前反馈后,在某个周期内发给硬件的目标位置、速度或力矩。

碰撞规划器找到一条路径,不代表驱动器能够跟上。时间参数化还要根据关节速度和加速度上限决定每段运动要用多久,必要时再做平滑与加加速度限制。MoveIt 的轨迹处理接口提供时间最优轨迹生成和 Ruckig 平滑等能力;在更高动态或更强约束的任务中,也可以直接使用轨迹优化,把几何、动力学和执行器边界共同写入问题。

得到关节轨迹后,MoveIt 通常通过 FollowJointTrajectory 接口交给控制层。ros2_control 的 Joint Trajectory Controller 按时间插值轨迹点,结合硬件提供的状态和命令接口执行,并能监测路径与目标容差。规划器负责提出未来方案,轨迹控制器负责按周期跟踪;两者之间的消息字段、关节顺序、时间基准与容差设置,就是一条真实的工程契约。

执行过程中,场景可能变化,负载可能滑动,控制器也可能报告轨迹容差超限。系统需要预先定义响应:保持、平滑减速、重新规划、切换备用控制器或进入安全停机。ros2_control 的 Controller Manager 管理控制器生命周期与硬件接口,其周期性 read-update-write 结构也直观展示了实时控制链的边界。

6. 一旦接触环境,系统架构也会改变

自由空间运动主要关心“有没有到达”;装配、打磨、擦拭和人机协作还要关心“以什么力接触”。此时,位置误差不再只是跟踪误差,它可能直接变成过大的接触力。

接触任务会引入新的状态与接口:力/力矩传感器、接触模式、表面法向、摩擦边界、期望刚度与阻尼,以及接触建立和释放的状态机。约束雅可比描述允许运动与约束方向,拉格朗日乘子对应维持约束所需的广义反力,互补条件则表达“有间隙便没有法向接触力,有接触力时不能穿透”。这些概念在仿真和优化中决定接触是否物理一致,在控制中决定机器人怎样顺着表面运动。

硬件命令接口会影响控制方案的落点。能够稳定接收关节力矩命令的机器人,常在内环上实现阻抗控制:位置误差经过期望刚度和阻尼变成力或力矩,再叠加重力、科里奥利等补偿。以位置接口为主的刚性工业机械臂,更常见的方式是导纳控制:测得外力先经过虚拟质量—阻尼—刚度模型产生位置或速度修正,再交给底层位置控制器。

这是一种典型倾向,并非绝对分类。工程选择还取决于厂商接口、控制周期、传感器带宽、结构柔性和安全认证。ros2_control 的 Admittance Controller 就展示了力传感器、运动学插件以及位置/速度参考如何在控制器链中组合;libfranka 的阻抗控制示例 则展示了力矩接口、模型补偿和弹簧—阻尼控制的另一种落点。

接触控制最容易被忽略的部分,是进入接触前后的离散逻辑。自由空间接近、首次碰触、稳定压紧、沿面运动、异常脱离和撤回,需要不同的速度、力限与控制参数。滤波器会引入相位延迟,刚度过高会放大噪声和时延,积分项会在饱和时累积,错误的表面法向甚至会把柔顺方向旋转到危险位置。于是,一条接触控制律必须和状态机、限幅、速率限制、碰撞监测与独立安全层一起设计。

7. 三类机器人任务,怎样组合这些工具

同一套数学工具到了不同机器人上,会形成不同的软件重心。下面选三个典型任务,把它们放回完整系统中观察。

工业搬运、柔顺装配和动态机器人三类工程任务的软件链比较

工业搬运:几何可行性与可靠执行优先。

相机或固定工位提供目标位姿,TF 与标定链把目标转换到机器人基座坐标系;IK 生成抓取构型,规划场景负责货架、夹具和自碰撞检查;规划器得到无碰路径,时间参数化使其满足关节限制;Joint Trajectory Controller 将轨迹交给位置或速度接口执行。系统通常还会在抓取前后切换碰撞物体的归属,让“桌上的零件”变成“附着在夹具上的负载”。

这里最常见的故障并非规划算法失效,而是场景和真实世界不一致:目标定位漂移、碰撞模型过于乐观、夹具尺寸没有更新、轨迹关节顺序错误,或者机器人已经移动而规划场景仍使用旧状态。工程上的保护包括目标新鲜度检查、碰撞余量、执行前起点一致性检查、轨迹容差监测,以及失败后的撤退和重新规划。

柔顺装配:坐标、力觉与状态机成为主角。

机械臂先用普通轨迹到达孔口上方,再切换到低速接近。建立接触后,控制器沿插入方向维持有限推力,在横向保留柔顺性;视觉、力觉或小幅搜索运动用于修正孔轴偏差。雅可比负责在任务空间和关节空间之间映射运动与力,阻抗或导纳模型决定接触后的动态响应,摩擦与接触约束解释卡滞、滑动和楔紧。

这个任务的关键接口是“当前处于哪个接触阶段”。首次接触不能仅靠某个瞬时力阈值判断,还要考虑传感器偏置、滤波、持续时间和机器人速度。插入过程中若侧向力持续增大,系统应减小推进、回撤或重新搜索;到位确认也需要位置、力和工艺信号相互印证。柔顺控制提供局部行为,状态机把这些行为组织成可交付工艺。

动态机器人:预测、接触和高频反馈紧密耦合。

四足机器人需要先融合 IMU、编码器和接触信息估计机身状态,再根据步态与地形决定未来接触序列。MPC 可以在有限预测窗口内选择地面反力或简化模型上的状态轨迹,全身控制再把机身、足端和接触约束转成关节加速度与力矩,底层驱动器完成电流或力矩跟踪。

MIT Cheetah 3 的凸 MPC 工作说明了一个重要工程思想:为了在线求解,可以选用保留关键三维动力学的简化模型预测接触力,再依靠更快的反馈环处理模型误差。像 Crocoddyl 这样的最优控制库,则把接触序列、刚体动力学、轨迹和反馈增益放进统一的数值框架。

动态系统对延迟和状态误差尤其敏感。接触判断晚一个周期、地面法向估计错误或优化器超时,都可能让计划失效。因此工程实现会设置固定计算预算、保留上一次可用解、监测求解质量,并准备站立、降低机身或受控停机等降级策略。优化器给出的“成功”只是数值状态,能否安全执行仍要由系统层判断。

8. 从算法演示到可交付系统

把算法装进真实机器人,最后一段路往往由验证、可观测性和故障处理构成。

首先要验证模型。关节方向、零位、限位、TCP、负载和碰撞几何应有独立测试;动力学量可以通过静态姿态、已知负载和低速轨迹与实测结果比较。仿真适合验证坐标链、状态机和大范围边界,硬件在环测试适合检查通信与控制周期,低速真机测试再逐步放开速度、加速度和力矩限制。

其次要验证时序。每份状态都应带有时间含义,系统需要监控传感器延迟、控制周期抖动、规划耗时、轨迹年龄与命令超时。只记录“当前位置”和“目标位置”通常不足以定位问题;还应记录控制模式、规划请求、约束余量、求解器状态、饱和标志和安全事件,让一次失败能够通过日志重放。

然后是能力边界。软件中的速度、加速度、加加速度、力矩和接触力限制必须与驱动器、减速器、结构和工艺要求一致。限幅不能只放在最上层,因为上层进程可能阻塞或崩溃;驱动器和独立安全系统仍需承担最终边界保护。控制器切换也要定义连续性,避免位置、速度或力矩命令在切换瞬间跳变。

最后是失败路径。传感器失效、规划超时、IK 无解、碰撞距离不足、轨迹超差、外力过大和通信中断,都应对应清楚的系统状态。可靠系统并不承诺永远成功,而是保证失败能够被识别、限制并恢复。

可以用下面这张表检查数学方法是否已经真正落到工程接口:

工程问题常用数学工具软件中的位置主要输出需要额外防范的风险
表达与组合空间位姿SE(3)SE(3)、旋量、四元数、对偶四元数TF、标定、状态估计、插值位姿与位姿误差坐标系方向、乘法约定、时间戳
从目标位姿寻找构型解析 IK、数值 IK、阻尼最小二乘规划请求、伺服、冗余解析关节构型或速度多解、无解、碰撞、奇异性
计算运动与受力关系雅可比、互易关系、可操作度任务空间控制、监测、约束速度、Wrench、能力指标条件数恶化、单位与参考系不一致
预测力矩与加速度拉格朗日法、递归刚体动力学前馈、仿真、轨迹优化、MPCM,h,g,τ,q¨M,h,g,\tau,\ddot q参数误差、摩擦、柔性、延迟
生成无碰运动采样规划、优化、碰撞检测运动规划管线几何路径场景过期、窄通道、规划超时
让路径可执行多项式、梯形/S 曲线、时间参数化轨迹处理与平滑带时间的轨迹动力学不可达、限制配置错误
与环境稳定接触约束雅可比、互补条件、阻抗/导纳接触控制、仿真、工艺状态机力或运动修正噪声、时延、刚度、接触模式误判
在约束中在线决策QP、轨迹优化、MPC局部规划、全身控制最优轨迹或控制量不可行、超时、模型失配

这张表也说明了一个朴素事实:同一种数学工具很少只属于一个章节。雅可比既服务 IK,也服务力控制与奇异性监测;动力学既用于仿真,也用于前馈和优化;李群既用于运动学,也用于状态估计与误差定义。工程系统按照数据依赖组织它们,比按照教材章节划分它们更自然。

9. 回到这个系列:公式最终变成了什么

现在可以重新看待这个系列中的每篇文章。

空间表示与建模为系统建立共同语言:坐标系与机械域建模明确了变量属于哪个物理域,旋量与 PoE用关节轴组织刚体运动,李群与李代数为位姿、扰动和插值提供了几何结构,对偶四元数则给出了另一种紧凑的刚体运动代数。

运动学把这些表示连接到机器人能力:雅可比矩阵描述局部速度与力的映射,逆运动学从任务目标寻找构型,同时暴露多解、无解和奇异性。

动力学与交互把“怎样运动”推进到“需要什么力”:拉格朗日法从能量建立刚体动力学,约束与接触解释闭环、接触力和摩擦,计算力矩控制让模型进入轨迹跟踪,阻抗控制则为机器人与环境之间设计动态关系。

规划与优化负责组织未来:轨迹生成把几何路径变成满足运动约束的时间函数,机器人中的优化进一步把目标、动力学、接触与边界写入同一个决策问题。

这些文章覆盖了从模型到运动控制的一条主干,却没有穷尽机器人系统。感知、状态估计、SLAM、任务规划、实时通信、功能安全、驱动器与电机控制,以及学习方法,都值得单独展开。它们会继续接入本文的系统图,提供新的状态、目标和约束。

结语

机器人学的美感,既存在于一个简洁的指数映射、一条能量方程或一个受约束优化问题中,也存在于这些方法被正确地放进系统之后。

模型给系统提供可计算的结构;规划在约束中组织未来;控制把计划变成实时命令;传感器让系统不断修正对真实世界的理解。坐标、时间、接口、限制与故障处理把它们连接起来,最终决定机器人能否可靠完成任务。

当公式能够回答“由谁计算、读取什么、输出什么、何时有效、失败后怎么办”,它才真正完成了从数学模型到工程系统的跨越。

参考资料