机器人零位标定修正流程介绍

如果想看运动学标定可以看看 机器人运动学参数标定, 一次性把运动学参数和零位标定等一起标定求解.

1. 零位标定

零位标定是机器人运动学标定中的一个重要步骤,其目的是校正机器人关节的初始位置误差。以下是需要进行零位标定的主要原因:

  • 制造误差

    • 在机器人制造过程中,关节传感器(如编码器)和机械零件的安装可能存在微小的偏差。
    • 这些偏差会导致关节的零位(初始位置)与理论值不一致,从而影响运动学计算的准确性。
  • 装配误差

    • 机器人在组装过程中,关节和连杆之间的对齐可能存在误差。
    • 这些误差会导致正运动学和逆运动学计算的结果与实际位置不符。
  • 传感器误差

    • 编码器或其他位置传感器可能存在零点漂移或校准误差。
    • 零位标定可以校正这些传感器的初始偏差。
  • 提高运动精度

    • 零位偏差会累积到机器人运动的末端位置,导致末端执行器无法准确到达目标位置。
    • 通过零位标定,可以显著提高机器人末端的定位精度。
  • 确保一致性

    • 在多次启动或不同环境下,零位可能会发生轻微变化。
    • 零位标定可以确保机器人在不同时间和环境下的运动一致性。
  • 运动学模型的准确性

    • 机器人控制依赖于精确的运动学模型(正运动学和逆运动学)。
    • 零位标定是运动学模型校正的重要部分,确保理论模型与实际机器人一致。
  • 避免累积误差

    • 零位偏差会导致关节角度的计算误差,这些误差在多关节运动中会累积,影响整体运动精度。
    • 零位标定可以有效减少这种累积误差。

2. 零位标定思路

假设有一个针尖基准点,令机器人末端对准针尖基准点,则实际末端位置可以表示为:

p → r e a l = p → f k + J ⋅ ϕ → \overrightarrow{p}^{real} = \overrightarrow{p}^{fk} + J \cdot \overrightarrow{\phi} p real=p fk+J⋅ϕ

其中:

  • p → r e a l \overrightarrow{p}^{real} p real 是实际末端位置。
  • p → f k \overrightarrow{p}^{fk} p fk 是通过正运动学计算得到的理论末端位置。
  • J J J 是雅可比矩阵,表示关节角度对末端位置的偏导数。
  • ϕ → \overrightarrow{\phi} ϕ 是零位偏差向量。

通过改变机器人姿态,记录两组不同的末端位置和关节角度,得到以下关系:

p → 1 f k + J 1 ⋅ ϕ → = p → 2 f k + J 2 ⋅ ϕ → \overrightarrow{p}^{fk}_1 + J_1 \cdot \overrightarrow{\phi} = \overrightarrow{p}^{fk}_2 + J_2 \cdot \overrightarrow{\phi} p 1fk+J1⋅ϕ =p 2fk+J2⋅ϕ

目标是求解零位偏差 ϕ → \overrightarrow{\phi} ϕ,使上述等式成立。


3. 零位偏差计算方法及算法流程

3.1 数据采集

  • 选取多个测量点(例如 n n n 个)。
  • 记录每个测量点的关节角度和实际末端位置。

3.2 误差模型

对于每个测量点,误差可以表示为:

Δ p → i = p → i r e a l − p → i f k = J i ⋅ ϕ → \Delta \overrightarrow{p}_i = \overrightarrow{p}^{real}_i - \overrightarrow{p}^{fk}_i = J_i \cdot \overrightarrow{\phi} Δp i=p ireal−p ifk=Ji⋅ϕ

将所有测量点的误差组合成矩阵形式:

Y = B ⋅ ϕ → Y = B \cdot \overrightarrow{\phi} Y=B⋅ϕ

其中:

  • Y Y Y 是误差向量, Y = [ Δ p → 1 , Δ p → 2 , ... , Δ p → n ] T Y = [\Delta \overrightarrow{p}_1, \Delta \overrightarrow{p}_2, \dots, \Delta \overrightarrow{p}_n]^T Y=[Δp 1,Δp 2,...,Δp n]T。
  • B B B 是雅可比矩阵的组合, B = [ J 1 , J 2 , ... , J n ] T B = [J_1, J_2, \dots, J_n]^T B=[J1,J2,...,Jn]T。

3.3 最小二乘法求解

通过最小化误差的平方和,求解零位偏差 ϕ → \overrightarrow{\phi} ϕ

ϕ → = ( B T ⋅ B ) − 1 ⋅ B T ⋅ Y \overrightarrow{\phi} = (B^T \cdot B)^{-1} \cdot B^T \cdot Y ϕ =(BT⋅B)−1⋅BT⋅Y


4. Python 实现代码

以下是一个简单的 Python 实现:

python 复制代码
import numpy as np
np.set_printoptions(5, suppress=True)

# 示例数据:雅可比矩阵 B 和误差向量 Y
B = np.array([[1, 2], [3, 4], [5, 6]])  # 雅可比矩阵 (3x2)
Y = np.array([1, 2, 3])                 # 误差向量 (3x1)

# 计算零位偏差 φ
BT = B.T                                # B 的转置
phi = np.linalg.inv(BT @ B) @ BT @ Y    # 最小二乘法公式

print("零位偏差 φ:", phi)
python 复制代码
零位偏差 φ: [0.  0.5]

5. 注意事项

  1. 矩阵维度匹配 :确保矩阵 B B B 的行数与误差向量 Y Y Y 的长度一致。
  2. 矩阵可逆性 :矩阵 ( B T ⋅ B ) (B^T \cdot B) (BT⋅B) 必须是可逆的。如果不可逆,可以使用伪逆方法:
python 复制代码
   phi = np.linalg.pinv(B) @ Y
  1. 数据精度:测量数据应尽量精确,以减少误差。

通过上述公式和代码,可以使用最小二乘法计算零位偏差,完成机器人零位标定。

6. 问题

6.1 为什么需要20个点?

在机器人零位标定中,选择多个测量点(例如 20 个点)是为了提高标定的精度和鲁棒性。以下是原因:

  • 减少测量误差的影响

    • 单个点的测量可能存在误差(例如传感器噪声、环境干扰等)。
    • 使用多个点可以通过最小二乘法将误差分散,从而得到更准确的零位偏差。
  • 提高解的稳定性

    • 如果测量点过少,矩阵 B T ⋅ B B^T \cdot B BT⋅B 可能是奇异的(不可逆),导致无法求解。
    • 增加测量点数量可以确保矩阵 B T ⋅ B B^T \cdot B BT⋅B 的条件数更好,从而提高解的稳定性。
  • 覆盖更多的姿态空间

    • 通过选择不同的姿态(关节角度组合),可以覆盖更大的工作空间。
    • 这有助于捕捉零位偏差在不同姿态下的影响,避免局部解。
  • 减少过拟合风险

    • 如果测量点过少,可能会导致模型过拟合,无法准确反映实际的零位偏差。
    • 增加点数可以让模型更具泛化能力。
  • 满足最小二乘法的要求

    • 最小二乘法需要测量点的数量大于未知参数的数量(即 n > m n > m n>m,其中 n n n 是测量点数, m m m 是零位偏差的维度)。
    • 选择 20 个点通常是为了确保足够的数据冗余。

总结来说,选择 20 个点是为了在数据冗余、解的稳定性和精度之间取得平衡,同时确保标定结果的可靠性。

相关推荐
Trent19854 分钟前
影楼精修-AI追色算法解析
图像处理·人工智能·计算机视觉
小辣只因5 分钟前
CFAR 恒虚警率简介
人工智能·opencv
m0_634448898 分钟前
知识图谱增强的大型语言模型编辑
人工智能·语言模型·知识图谱
Leinwin12 分钟前
行业案例 | OPPO借助Azure AI Speech国际服务实现音频文件智能转录
人工智能
m0_6779048416 分钟前
BERT***
人工智能·深度学习·bert
梓羽玩Python23 分钟前
开源2天斩获3K标星!开源TTS新星Chatterbox盲测击败ElevenLabs!
人工智能·github
倔强的石头_24 分钟前
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
后端·算法
QZQ5418824 分钟前
MIT6.824(2024春)Raft-lab3B代码分析
算法
倔强的石头_28 分钟前
【数据结构与算法】深入理解 单链表
后端·算法
聚客AI1 小时前
企业知识库问答系统避坑指南:检索优化与生成一致性解决方案
人工智能·深度学习·机器学习·语言模型·自然语言处理·transformer·知识图谱