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

news2025/4/12 17:52:26

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

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 个)。
  • 记录每个测量点的关节角度和实际末端位置。
    TCP

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 irealp 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 ϕ =(BTB)1BTY


4. 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)
零位偏差 φ: [0.  0.5]

5. 注意事项

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

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

6. 问题

6.1 为什么需要20个点?

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

  • 减少测量误差的影响

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2333271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入 C++ 线程库:从创建到同步的探索之旅

目录 创建多线程 获取线程返回值 1.传指针 2.传引用 原子操作 互斥量 互斥量(Mutex)的基本概念 mutex类型介绍 锁的类型 互斥锁(Mutex) 自旋锁(Spin Lock) 读写锁(Read - Write Lo…

【2025年认证杯数学中国数学建模网络挑战赛】A题 解题建模过程与模型代码(基于matlab)

目录 【2025年认证杯数学建模挑战赛】A题解题建模过程与模型代码(基于matlab)A题 小行星轨迹预测解题思路第一问模型与求解第二问模型与求解 【2025年认证杯数学建模挑战赛】A题 解题建模过程与模型代码(基于matlab) A题 小行星轨…

Matlab 分数阶PID控制永磁同步电机

1、内容简介 Matlab 203-分数阶PID控制永磁同步电机 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

4185 费马小定理求逆元

4185 费马小定理求逆元 ⭐️难度:简单 🌟考点:费马小定理 📖 📚 import java.util.Scanner; import java.util.Arrays;public class Main {static int[][] a;public static void main(String[] args) {Scanner sc …

界面控件DevExpress WinForms v25.1新功能预览 - 聚焦用户体验升级

DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…

卷积神经网络(CNN)基础

目录 一、应用场景 二、卷积神经网络的结构 1. 输入层(Input Layer) 2. 卷积层(Convolutional Layer) 3. 池化层(Pooling Layer) 最大池化(max_pooling)或平均池化(…

Android Spotify-v9.0.36.443-arm64-Experimental Merged版

Android Spotify 链接:https://pan.xunlei.com/s/VONXTdIv9d4FnAiNMMliIAEJA1?pwdxt7q# Android Spotify-v9.0.36.443-arm64-Experimental Merged版 享受高达256kbps的AAC音频。

LLM之Agent(十六)| MCP已“过时”?Google近期推出Agent2Agent 协议 (A2A)

如今,企业越来越多地构建和部署自主代理,以帮助扩展、自动化和增强整个工作场所的流程 - 从订购新笔记本电脑到协助客户服务代表,再到协助供应链规划。 为了最大限度地发挥代理 AI 的优势,这些代理能够在一个动态的、多代理的生态…

Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification

Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification 目录 Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification`AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)`功能概述参数解释`AutoModelForSequen…

Java学习总结-端口-协议

端口号:一个16位的二进制,范围是0-65535 端口分类: 周知端口:0-1023,被预先定义的知名应用占用(如:HTTP占用80,FTP占用21) 注册端口:1024-49151&#xff0…

克魔助手(Kemob)安装与注册完整教程 - Windows/macOS双平台指南

iOS设备管理工具克魔助手便携版使用全指南 前言:为什么需要专业的iOS管理工具 在iOS开发和设备管理过程中,开发者经常需要突破系统限制,实现更深层次的控制和调试。本文将详细介绍一款实用的便携式工具的使用方法,帮助开发者快速…

qwen-vl 实现OCR的测试

OCR 技术是数字化时代必不可少的实用工具。以前都依赖专业的公司的专业软件才能完成。成本很高。也正因为如此,我国纸质资料的数字化并不普及。基于大模型的ORC 也许会改变这样的现状。 文本识别,也称为光学字符识别 (OCR),可以将印刷文本或…

算法训练之动态规划(五)——简单多状态问题

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

SVMSPro分布式综合安防管理平台-->以S3存储革新,开启智能安防新纪元

SVMSPro分布式综合安防管理平台–>以S3存储革新,开启智能安防新纪元 在数字化转型浪潮下,企业安防管理正面临海量数据存储、跨区域协同以及数据安全的严峻挑战。如何实现高效、弹性、低成本的存储扩容?如何确保关键录像数据万无一失&…

脑科学与人工智能的交叉:未来智能科技的前沿与机遇

引言 随着科技的迅猛发展,脑科学与人工智能(AI)这两个看似独立的领域正在发生深刻的交汇。脑机接口、神经网络模型、智能机器人等前沿技术,正带来一场跨学科的革命。这种结合不仅推动了科技进步,也在医疗、教育、娱乐等…

docker 运行自定义化的服务-后端

docker 运行自定义化的服务-前端-CSDN博客 运行自定义化的后端服务 具体如下: ①打包后端项目,形成jar包 ②编写dockerfile文件,文件内容如下: # 使用官方 OpenJDK 镜像 FROM jdk8:1.8LABEL maintainer"ATB" version&…

NO.82十六届蓝桥杯备战|动态规划-从记忆化搜索到动态规划|下楼梯|数字三角形(C++)

记忆化搜索 在搜索的过程中,如果搜索树中有很多重复的结点,此时可以通过⼀个"备忘录",记录第⼀次搜索到的结果。当下⼀次搜索到这个结点时,直接在"备忘录"⾥⾯找结果。其中,搜索树中的⼀个⼀个结点…

【时时三省】(C语言基础)用switch语句实现多分支选择结构 例题

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 例题: 用switch语句处理菜单命令。在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个 A 或 a 字符,就会执行A操作,输入一…

全域数字化:从“智慧城市”到“数字生命体”的进化之路

一、国家战略下的城市数字化浪潮 2024年5月,国家四部委联合发布《关于深化智慧城市发展 推进城市全域数字化转型的指导意见》,明确提出以数据为引擎,系统性重塑城市技术架构与管理流程,推动城市治理迈向“全域协同、数实融合”的…

基于SSM的线上花店鲜花销售商城网站系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…