3. 标定原理概述:什么是标定?为什么标定能提升精度?标定的四个步骤。
好,我们正式开始进入标定的核心内容。这一章,我先带大家把标定的底层逻辑理清楚。
很多刚入行的朋友,一上来就急着跑算法、调参数。结果呢?机器人动起来歪歪扭扭,重复定位精度差得离谱。我见过不少项目,硬件设计没问题,电机也是新的,但就是精度上不去。为什么?说白了,就是没做标定。
那标定到底是什么?它为什么这么重要?我们一步步来看。
3.1 什么是标定?
标定,用大白话讲,就是给机器人“量体裁衣”。
你想想看,我们设计机器人时,图纸上写的连杆长度是 100mm,关节角度是 90 度。但实际加工出来的零件,长度可能是 100.05mm,装配完的关节零位也可能偏了 0.1 度。这些微小的误差,在运动学模型里会被放大,最终导致末端定位不准。
标定要做的,就是通过测量实际位姿,反过来算出这些真实的几何参数。然后把这些参数写回控制器,让机器人的“大脑”知道它身体的真实尺寸。
核心定义:运动学标定,是通过实验测量和参数辨识,修正机器人运动学模型中几何参数误差的过程。其目标是让理论模型无限逼近物理实体的真实行为。
我个人习惯把标定比作“配眼镜”。你眼睛近视了,验光师给你测出度数,然后配一副合适的眼镜。机器人也一样,出厂时是“近视”的,标定就是给它配上一副“精确的眼镜”。
3.2 为什么标定能提升精度?
这个问题很关键。我直接说结论:标定能消除系统性的几何误差。
机器人的误差来源很多,比如齿轮间隙、连杆变形、温度漂移。但占比最大、最顽固的,就是几何参数误差。这类误差是系统性的,不会随机变化。你每次让机器人走到同一个点,它都偏同样的距离。
标定就是针对这类误差。我们通过建立误差模型,把实际参数和名义参数之间的偏差找出来。然后修正控制器里的 DH 参数,让理论计算出的位置,和实际到达的位置一致。
我在项目中遇到过一台六轴机器人,标定前重复定位精度是 ±0.5mm,标定后直接干到了 ±0.05mm。提升了整整一个数量级。你想想看,如果不做标定,后面做轨迹规划、力控,全都是建立在错误模型上的,那结果能好吗?
| 误差类型 | 来源 | 标定能否消除 | 典型量级 |
|---|---|---|---|
| 几何参数误差 | 加工、装配、磨损 | 能(主要目标) | 0.1~1 mm |
| 关节柔性误差 | 减速器、连杆变形 | 部分能(需弹性模型) | 0.01~0.1 mm |
| 温度漂移 | 电机发热、环境变化 | 不能(需实时补偿) | 0.01~0.05 mm |
| 齿轮回差 | 减速器间隙 | 不能(需控制策略) | 0.01~0.1° |
我的经验:标定主要解决“硬”误差,也就是几何参数。对于“软”误差,比如柔性、摩擦,需要更复杂的模型。但先把几何参数标准了,能解决 80% 的精度问题。
3.3 标定的四个步骤
标定不是玄学,它有标准流程。业内公认的步骤分为四步:建模、测量、辨识、补偿。我一个个拆开讲。
步骤一:建模(Modeling)
第一步,你得先有个模型。这个模型描述了机器人的几何结构,以及哪些参数可能存在误差。
最常用的是 DH 参数模型。每个关节有四个参数:a(连杆长度)、α(连杆扭角)、d(关节偏距)、θ(关节转角)。名义参数是设计值,实际参数是真实值。我们定义误差为:Δa, Δα, Δd, Δθ。
建模阶段要做的,就是确定哪些参数是可辨识的。有些参数是冗余的,你测再多数据也辨识不出来。比如,如果两个关节轴线平行,它们的某些参数就会耦合。嗯,这里要注意,模型建得不好,后面全白干。
避坑指南:我曾经因为模型里多包含了一个冗余参数,导致辨识矩阵奇异,算法直接崩溃。后来花了三天才排查出来。记住:模型不是越复杂越好,可辨识性才是第一位的。
步骤二:测量(Measurement)
有了模型,就需要数据。测量就是让机器人运动到一系列位姿,然后用外部设备记录末端的实际位置。
常用的测量设备有:
- 激光跟踪仪:精度最高(0.01mm),但贵,适合实验室。
- 视觉测量系统:用相机拍靶标,精度适中(0.1mm),性价比高。
- 拉线传感器:便宜,但精度有限(0.5mm),适合粗标定。
测量时要注意:采样点要覆盖整个工作空间。别只在一个小区域里测,那样辨识出来的参数只对局部有效。我一般会在工作空间里均匀取 30~50 个点,关节构型尽量多样化。
步骤三:辨识(Identification)
这是最核心的一步。辨识,就是根据测量数据,反推出误差参数。
数学上,这是一个非线性最小二乘优化问题。我们建立误差方程:
ΔP = J * Δq
其中:
- ΔP 是末端位姿误差(测量值 - 理论值)
- J 是辨识雅可比矩阵(描述参数误差到位姿误差的映射)
- Δq 是待辨识的几何参数误差
然后通过迭代求解:
Δq = (J^T * J)^{-1} * J^T * ΔP
这就是最小二乘解。但实际中,J^T*J 可能病态,需要加正则化。我常用 Levenberg-Marquardt 算法,稳定且收敛快。
关键点:辨识的精度取决于两个因素:测量数据的噪声水平,以及辨识矩阵的条件数。条件数越小,辨识结果越鲁棒。
步骤四:补偿(Compensation)
最后一步,把辨识出的误差参数写回控制器。补偿方式有两种:
- 参数修正:直接修改控制器里的 DH 参数表。简单粗暴,但需要控制器支持在线修改。
- 误差补偿表:在关节空间或笛卡尔空间建立误差查找表,运行时实时插补。适合无法修改底层参数的控制器。
我个人更推荐第一种。直接修正模型,一劳永逸。但如果你用的是商业控制器,底层参数锁死了,那就只能用查表法。
补偿完成后,一定要做验证实验。让机器人走一组新的位姿(不是辨识用的那组),看末端精度是否达标。我一般要求验证误差在辨识误差的 1.5 倍以内,才算标定成功。
3.4 标定流程总览
为了让你更直观地理解这四个步骤的关系,我画了一张流程图。
这张图很清楚地展示了标定的闭环逻辑。从建模开始,到补偿结束。如果验证结果不理想,就需要回到建模或测量环节,重新迭代。我做过最复杂的一个项目,迭代了五轮才达到要求。
3.5 本章小结
标定不是什么高深莫测的东西。它就是一套“测量-建模-修正”的工程方法。核心思想是:承认理论模型有误差,然后用实验数据把它修正过来。
记住四个步骤:建模、测量、辨识、补偿。每一步都有坑,但每一步也都有成熟的解决方案。后面几章,我会带你手把手走完整个流程,从搭建测量平台到写辨识算法,再到把参数烧进 STM32 控制器。
嗯,先把原理吃透,后面动手才不会慌。