机器人运动学参数辨识(DH参数误差标定)

文章目录

  • 0. 前言
  • 1. 全微分几何参数误差模型
    • 1.1 末端位置全微分
    • 1.2 末端姿态全微分
    • 1.3 末端位姿全微分
  • 2 机器人运动学参数辨识算法
    • 2.1 偏差辨识流程
    • 2.2 最小二乘法
    • 2.3 机器人定位误差补偿
  • 3 参考文献

0. 前言

用于辨识几何参数误差的方法众多,其中较为常用的是最小二乘法和智能搜索算法。本文基于MDH参数建立两岸坐标系,不清楚的可以参考机器人修正DH参数(MDH)和标准DH(SDH)参数这篇文章

1. 全微分几何参数误差模型

根据建立的机器人MDH模型,机器人相邻关节坐标系之间的齐次变换矩阵表示为:
i i − 1 T = R X ( α i − 1 ) D X ( a i − 1 ) R Z ( θ i ) D Z ( d i ) = [ c θ i − s θ i 0 a i − 1 s θ i c α i − 1 c θ i c α i − 1 − s α i − 1 − s α i − 1 d i s θ i s α i − 1 c θ i s α i − 1 c α i − 1 c α i − 1 d i 0 0 0 1 ] (1) \begin{aligned} _i^{i-1}T&=R_X(\alpha_{i-1})D_X(a_{i-1})R_Z(\theta_i)D_Z(d_i)\\&=\begin{bmatrix}c\theta_i&-s\theta_i&0&a_{i-1}\\s\theta_ic\alpha_{i-1}&c\theta_ic\alpha_{i-1}&-s\alpha_{i-1}&-s\alpha_{i-1}d_i\\s\theta_is\alpha_{i-1}&c\theta_is\alpha_{i-1}&c\alpha_{i-1}&c\alpha_{i-1}d_i\\0&0&0&1\end{bmatrix}\end{aligned}\tag{1} ii1T=RX(αi1)DX(ai1)RZ(θi)DZ(di)= cθisθicαi1sθisαi10sθicθicαi1cθisαi100sαi1cαi10ai1sαi1dicαi1di1 (1)
如果按照上述方法将连杆坐标系固定于连杆上时,连杆的几何参数可以定义为

  1. a i − 1 a_{i-1} ai1:沿 X ˆ i − 1 \^X_{i-1} Xˆi1轴,从 Z ˆ i − 1 \^Z_{i-1} Zˆi1移动到 Z ˆ i \^Z_{i} Zˆi的距离,通常取正值;
  2. α i − 1 \alpha_{i-1} αi1:绕 X ˆ i − 1 \^X_{i-1} Xˆi1轴,从 Z ˆ i − 1 \^Z_{i-1} Zˆi1旋转到 Z ˆ i \^Z_{i} Zˆi的角度,采用右手法则判断正负;
  3. d i d_i di:沿 Z ˆ i \^Z_{i} Zˆi轴,从 X ˆ i − 1 \^X_{i-1} Xˆi1移动到 X ˆ i \^X_{i} Xˆi的距离;
  4. θ i \theta_i θi:绕 Z ˆ i \^Z_{i} Zˆi轴,从 X ˆ i − 1 \^X_{i-1} Xˆi1旋转到 X ˆ i \^X_{i} Xˆi的角度,采用右手法则判断正负;

几何参数的微小误差影响各关节的齐次变换矩阵,设四个运动学参数的微小误差值为 δ θ i \delta\theta_i δθi, δ d i \delta d_i δdi, δ α i − 1 \delta \alpha_{i-1} δαi1, δ a i − 1 \delta a_{i-1} δai1
对旋转变换矩阵进行全微分,由于几何参数误差本身就属于微小误差,忽略高阶误差得:
d ( i i − 1 T ) = ∂ i i − 1 T ∂ a i − 1 Δ a i − 1 + ∂ i i − 1 T ∂ α i − 1 Δ α i − 1 + ∂ i i − 1 T ∂ d i Δ d i + ∂ i i − 1 T ∂ θ i Δ θ i d(^{i-1}_iT)=\frac{\partial^{i-1}_iT}{\partial a_{i-1}}\Delta a_{i-1}+\frac{\partial^{i-1}_iT}{\partial\alpha_{i-1}}\Delta\alpha_{i-1}+\frac{\partial^{i-1}_iT}{\partial d_i}\Delta d_{i}+\frac{\partial^{i-1}_iT}{\partial\theta_i}\Delta\theta_{i} d(ii1T)=ai1ii1TΔai1+αi1ii1TΔαi1+diii1TΔdi+θiii1TΔθi
机器人第i关节位置误差和几何参数的关系:
d ( P i ) = ∂ P i ∂ a i − 1 Δ a i − 1 + ∂ P i ∂ α i − 1 Δ α i − 1 + ∂ P i ∂ d i Δ d i + ∂ P i ∂ θ i Δ θ i d(P_i)=\frac{\partial P_i}{\partial a_{i-1}}\Delta a_{i-1}+\frac{\partial P_i}{\partial\alpha_{i-1}}\Delta\alpha_{i-1}+\frac{\partial P_i}{\partial d_i}\Delta d_{i}+\frac{\partial P_i}{\partial\theta_i}\Delta\theta_{i} d(Pi)=ai1PiΔai1+αi1PiΔαi1+diPiΔdi+θiPiΔθi
机器人第i关节姿态误差和几何参数的关系:
δ i = ∂ O i ∂ a i − 1 Δ a i − 1 + ∂ O i ∂ α i − 1 Δ α i − 1 + ∂ O i ∂ d i Δ d i + ∂ O i ∂ θ i Δ θ i \delta_i=\frac{\partial O_i}{\partial a_{i-1}}\Delta a_{i-1}+\frac{\partial O_i}{\partial\alpha_{i-1}}\Delta\alpha_{i-1}+\frac{\partial O_i}{\partial d_i}\Delta d_{i}+\frac{\partial O_i}{\partial\theta_i}\Delta\theta_{i} δi=ai1OiΔai1+αi1OiΔαi1+diOiΔdi+θiOiΔθi
把两者组合起来可写作雅可比行列式形式:
Δ X i = [ d P i δ i ] = Ψ i Δ ξ i \left.\Delta X_i=\left[\begin{array}{c}dP_{i}\\\delta_{i}\end{array}\right.\right]=\Psi_i\Delta\xi_i ΔXi=[dPiδi]=ΨiΔξi
式中, d P i = [ d x i , d y i , d z i ] T dP_i=[dx_i ,dy_i ,dz_i]^T dPi=[dxi,dyi,dzi]T Δ ξ i = [ Δ a i − 1 , Δ α i − 1 , Δ d i , Δ θ i ] T \Delta\xi_i=[\Delta a_{i-1} ,\Delta\alpha_{i-1},\Delta d_i, \Delta\theta_i]^T Δξi=[Δai1,Δαi1,Δdi,Δθi]T δ i = [ δ x i , δ y i , δ z i ] T \delta_i=\begin{bmatrix}\delta x_i,\delta y_i,\delta z_i\end{bmatrix}^T δi=[δxi,δyi,δzi]T Ψ i \Psi_i Ψi是一个6*4的矩阵

1.1 末端位置全微分

由于位置变换是平移变换,所以总的位置误差可以由各关节误差累加得到:
d P n = [ d x d y d z ] = [ M a M α M d M θ ] [ Δ a Δ α Δ d Δ θ ] (2) dP_n=\begin{bmatrix}dx\\dy\\dz\end{bmatrix}=\begin{bmatrix}M_a&M_\alpha&M_d&M_\theta\end{bmatrix}\begin{bmatrix}\Delta a\\\Delta\alpha\\\Delta d\\\Delta\theta\end{bmatrix} \tag{2} dPn= dxdydz =[MaMαMdMθ] ΔaΔαΔdΔθ (2)
d P n dP_n dPn表示机器人末端位置的偏差值, M a , M α , M d , M θ M_a,M_\alpha,M_d,M_\theta Ma,Mα,Md,Mθ为3*n矩阵,是机器人的运动学参数偏差的系数矩阵,对应着上述对应下标为i时雅可比矩阵的前三行 Δ a , Δ α , Δ d , Δ θ \Delta a,\Delta\alpha,\Delta d,\Delta\theta Δa,Δα,Δd,Δθ时机器人运动学的参数偏差,其中 Δ a = [ Δ a 1 , Δ a 2 , . . . , Δ a n ] T \Delta a=[\Delta a_1,\Delta a_2,...,\Delta a_n]^T Δa=[Δa1,Δa2,...,Δan]T,其他三个参数同理。

1.2 末端姿态全微分

δ n = [ δ x δ y δ z ] = [ M a M α M d M θ ] [ Δ a Δ α Δ d Δ θ ] (3) \delta_n=\begin{bmatrix}\delta x\\\delta y\\\delta z\end{bmatrix}=\begin{bmatrix}M_a&M_\alpha&M_d&M_\theta\end{bmatrix}\begin{bmatrix}\Delta a\\\Delta\alpha\\\Delta d\\\Delta\theta\end{bmatrix} \tag{3} δn= δxδyδz =[MaMαMdMθ] ΔaΔαΔdΔθ (3)
δ n \delta_n δn表示机器人末端姿态的偏差值, M a , M α , M d , M θ M_a,M_\alpha,M_d,M_\theta Ma,Mα,Md,Mθ为3*n矩阵,是机器人的运动学参数偏差的系数矩阵,对应着上述对应下标为i时雅可比矩阵的后三行 Δ a , Δ α , Δ d , Δ θ \Delta a,\Delta\alpha,\Delta d,\Delta\theta Δa,Δα,Δd,Δθ时机器人运动学的参数偏差,其中 Δ a = [ Δ a 1 , Δ a 2 , . . . , Δ a n ] T \Delta a=[\Delta a_1,\Delta a_2,...,\Delta a_n]^T Δa=[Δa1,Δa2,...,Δan]T,其他三个参数同理。

1.3 末端位姿全微分

结合前面所述,位姿全微分可写为:
Δ X n = [ d P n δ n ] = Ψ Δ ξ (4) \left.\Delta X_n=\left[\begin{array}{c}dP_{n}\\\delta_{n}\end{array}\right.\right]=\Psi \Delta\xi \tag{4} ΔXn=[dPnδn]=ΨΔξ(4)
其中
- d P n dP_n dPn:(3x1)来自 T n T_n Tn第四列的位置偏差
- δ n \delta_n δn:(3x1)来自旋转矩阵 R n R_n Rn的姿态偏差
- Ψ \Psi Ψ:(6x(nx4))广义雅可比矩阵
- Δ ξ \Delta \xi Δξ:(nx4)n个关节的几何参数偏差

2 机器人运动学参数辨识算法

2.1 偏差辨识流程

流程如下:
在这里插入图片描述

2.2 最小二乘法

以位置误差为例:多组位置误差数据构建的几何参数误差模型是超定方程,公式(4)的微分几何参数误差模型实际上是一个线性方程组,包含3个线性方程,方程中的位置误差 Δ P n \Delta P_n ΔPn可以通过测量直接得到,nx4个几何误差是未知数,需要对多个位置进行测量构建超定方程组,从而求几何参数误差的近似解,以六轴机器人为例,共有24个几何误差未知数,而一个点的位置误差可以增加三个求解条件(即x,y,z),所以至少需要8组位置误差数据才能求解,而实际中应采集的点数应该大于这个数。
公式(4)可以写成 A x = b Ax=b Ax=b的形式,辨识机器人运动学参数的具体误差就是求出 x x x的值。如果矩阵 A 是可逆的,可以直接计算出 x 的值: x = A − 1 ⋅ b x=A^{-1}\cdot b x=A1b。但是为了辨识机器人的运动学参数偏差,矩阵 A 的行数(采集点的数量*3)总是会大于列数(需要辨识的参数),也就是待求解参数的数量小于方程的数量,不能通过矩阵的逆运算求取机器人的运动学参数偏差,则需要通过最小二乘法来求取。

最小二乘法的具体过程如下:
在这里插入图片描述
在这里插入图片描述
结合(4)式,这里用最小二乘法求得的运动学参数偏差可以写为如下形式:
Δ ξ = ( Ψ T Ψ ) − 1 Ψ T Δ P ^ \Delta\xi=(\Psi^T\Psi)^{-1}\Psi^T \Delta \hat{P} Δξ=(ΨTΨ)1ΨTΔP^
由于最小二乘法只进行一次计算,所以使用该方法进行参数辨识时可以和迭代 方法结合,从而减少位置误差,提高参数辨识效果
在这里插入图片描述

2.3 机器人定位误差补偿

根据辨识得 到的机器人运动学参数偏差值和机器人运动到期望位姿的各个关节的理论关节角,可以 计算出机器人在该目标位置的位姿偏差 Δ T \Delta T ΔT ,使用期望位姿减去该位姿偏差就可以得到 补偿后的位姿,将 补偿后的位姿赋予机器人控制器可使机器人运动到期望位置,笛卡尔空间补偿法,如图所示:
在这里插入图片描述

3 参考文献

[1] 闻了然和张方, 《机器人运动学模型参数修正》, 数字技术与应用, 卷 41, 期 4, 页 1-4+29, 2023.
[2] 潘钊, 《基于机器学习的工业机器人位置误差标定研究》, 华中科技大学, 2022.
[3] 郭哲, 《垂直六关节工业机器人运动学参数标定》, 东南大学, 2019.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言笔记:函数与程序结构

目录 ACM金牌带你零基础直达C语言精通-课程资料 一.作用域的基本概念 二.函数 1. 函数的定义和使用 2.为什么一定要有函数结构 3.形参与实参 4.函数的声明和定义 5.递归函数 此代码中递归函数执行流程: 练习:求斐波那契数列第n项的值: 欧几里…

Python-GEE绘制DEM精美图片

目录 上传矢量和DEM获取添加颜色条参考文章 先连接上GEE的自己的项目 import ee import geemap geemap.set_proxy(port33210) ee.Authenticate() ee.Initialize(projecta-flyllf0313)上传矢量和DEM获取 使用Google Earth Engine(GEE)和Google Earth Eng…

人外周血单核细胞来源树突状细胞(MoDC)的制备(二)

MoDC的制备 1.外周血单个核细胞的采集 1.1用血细胞分离机采集患者自身的外周血单个核细胞80-100ml; 1.2淋巴细胞分离液密度梯度离心法进一步纯化单个核细胞(PBMC) 。 1.3无血清培养液洗涤2次, 获得纯度在90%以上的PBMC, 细胞数量需达到1-…

HTML学习:图片格式——超链接

一、图片格式 1.jpg格式 概述:扩展名为.jpg 或.jpeg ,是一种有损的压缩格式(把肉眼不容易观察出来的细节丢弃了)。 主要特点:支持的颜色丰富、占用空间较小、不支持透明背景、不支持动态图。 使用场景:对图片细节没有极高要求的场景,例如:网站的产品…

使用Windows远程访问Kali Linux桌面

安装xrdp、xfce4 apt-get install -y xrdp xfce4修改 xrdp 配置文件启用 xfce 桌面 vim /etc/xrdp/startwm.sh修改后文件如下: #!/bin/sh # xrdp X session start script (c) 2015, 2017, 2021 mirabilos # published under The MirOS Licence# Rely on /etc/pam…

Web API 持续集成:PostMan+Newman+Jenkins(图文讲解)

1. Web Api 测试工具选型 目前市场有很多的用于API 测试的工具,如Postman, SoapUI, YApi, HttpRunner等等。 2. 用Postman创建项目 选型做好了,第二步当然是Postman用起来了,创建自己的项目。参照Postman官网的文档。https://learning.get…

【YOLOv5改进系列(2)】高效涨点----Wise-IoU详细解读及使用Wise-IoU(WIOU)替换CIOU

WIOU损失函数替换 🚀🚀🚀前言一、1️⃣ Wise-IoU解读---基于动态非单调聚焦机制的边界框损失1.1 🎓 介绍1.2 ✨WIOU解决的问题1.3 ⭐️论文实验结果1.4 🎯论文方法1.4.1☀️Wise-IoU v11.4.2☀️Wise-IoU v21.4.3☀️…

高性能 MySQL 第四版(GPT 重译)(一)

前言 由 Oracle 维护的官方文档为您提供了安装、配置和与 MySQL 交互所需的知识。本书作为该文档的伴侣,帮助您了解如何最好地利用 MySQL 作为强大的数据平台来满足您的用例需求。 本版还扩展了合规性和安全性在操作数据库足迹中的日益重要作用。隐私法律和数据主…

小小导出,我大前端足矣!

前言 常网IT戳我呀!常网IT源码上线啦!本篇录入技术选型专栏,希望能祝君拿下Offer一臂之力,各位看官感兴趣可移步🚶。有人说面试造火箭,进去拧螺丝;其实个人觉得问的问题是项目中涉及的点 || 热…

BUU [MRCTF2020]套娃

BUU [MRCTF2020]套娃 开题&#xff0c;啥也没有。 查看网页源代码发现后端源代码&#xff1a; <?php //1st $query $_SERVER[QUERY_STRING];if( substr_count($query, _) ! 0 || substr_count($query, %5f) ! 0 ){die(Y0u are So cutE!); }if($_GET[b_u_p_t] ! 23333 &am…

面试算法-61-二叉树的右视图

题目 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4] 解 class Solution {public List<Integer> rightSideView(T…

单目测距那些事儿(上) _ 从MobileEye谈起

单目测距那些事儿(上) | 从MobileEye谈起 全面专业的自动驾驶学习资料:链接 前言 在ADAS领域&#xff0c;有个功能叫自适应巡航控制(Adaptive Cruise Control, ACC)。 ACC是一种纵向距离控制&#xff0c;具体包括发现目标车辆、判断目标车辆所在路径、测量相对本车的距离和速…

B007-springcloud alibaba 消息驱动 Rocketmq

目录 MQ简介什么是MQMQ的应用场景异步解耦流量削峰 常见的MQ产品 RocketMQ入门RocketMQ环境搭建环境准备安装RocketMQ启动RocketMQ测试RocketMQ关闭RocketMQ RocketMQ的架构及概念RocketMQ控制台安装 消息发送和接收演示发送消息接收消息 案例订单微服务发送消息用户微服务订阅…

盲盒一番赏小程序开发:神秘惊喜,等你来揭晓

在当下潮流文化中&#xff0c;盲盒以其独特的魅力&#xff0c;正逐渐成为一种流行的娱乐方式。为了满足广大盲盒爱好者的需求&#xff0c;我们决定开发一款盲盒一番赏小程序&#xff0c;为用户带来更加便捷、丰富的盲盒体验。 一、小程序简介 盲盒一番赏小程序是一个集盲盒购…

应用测评要求解读-三级

身份鉴别&#xff1a; a)应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别信息具有复杂度要求并定期更换&#xff1b; 1. 在未登录状态下尝试直接访问任意操作页面或功能&#xff0c;查看是否具有登陆界面。 2&#xff0e;询问或者测试…

【算法刷题】Day32

文章目录 1. 单词拆分题干&#xff1a;算法原理&#xff1a;1. 状态表示&#xff1a;2. 状态转移方程3. 初始化4. 填表顺序5. 返回值 代码&#xff1a; 2. 环绕字符串中唯一的子字符串题干&#xff1a;算法原理&#xff1a;1. 状态表示&#xff1a;2. 状态转移方程3. 初始化4. …

关于Ansible的模块 ①

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 什么是Ansible模块 在Linux中&#xff0c;bash无论是在命令行上执行&#xff0c;还是在bash脚本中&#xff0c;都需要调用cd、l…

MySQL最实用面试题(2024-3-14持续更新中)

MySQL篇面试题 一、介绍 ​ 这是由小龙同学自己总结领悟的mysql面试题的解析&#xff0c;也是面试宝典 二、题目 1.数据库三大范式&#xff1a; –作用&#xff1a; ​ 使表结构清晰&#xff0c;减少数据冗余&#xff08;简单讲就是重复&#xff09;&#xff0c;提高查询…

Stable Diffusion + Segment Anything试用

安装 从continue-revolution/sd-webui-segment-anything安装插件分割模型下载后放到这个位置&#xff1a;${sd-webui}/extension/sd-webui-segment-anything/models/sam下&#xff0c;可以下载3个不同大小的模型&#xff0c;从大到小如下&#xff1a;vit_h is 2.56GB, vit_l i…