panda机械臂的正逆运动学分析与仿真
文章目录
- 前言
- Panda机械臂的DH参数法建模
- 正运动学
- 逆运动学
- 误差函数
- 雅可比矩阵
- 高斯-牛顿法(Gauss-Newton)
- 参考
- 代码获取
前言
机械臂的位置运动学分析是机器人控制与轨迹规划的核心基础,其研究内容主要分为正运动学(Forward Kinematics)和逆运动学(Inverse Kinematics)两大部分,二者构成运动学分析的完整闭环。
正运动学研究的是在已知机械臂各关节角度的条件下,通过数学模型计算末端执行器在三维空间中的位置(x, y, z坐标)和姿态(如欧拉角或四元数表示)。其本质是通过关节空间到笛卡尔空间的映射关系,建立末端位姿与关节变量的函数表达式。常用的建模方法包括几何分析法(适用于简单构型)、Denavit-Hartenberg(DH)参数法(标准DH法、改进DH方法)。改进DH法通过调整坐标系分配规则,更适用于具有平行关节或特殊拓扑结构的机械臂,本文即采用该方法构建运动学模型,其优势在于能减少奇异点并提高参数定义的规范性。
逆运动学则解决相反的问题:在给定末端执行器目标位姿的约束下,反推出机械臂各关节所需达到的角度值。这一过程具有更强的工程挑战性,主要体现在解的存在性(可达工作空间判断)、多解性(关节构型选择)以及求解算法的实时性等方面。常用的求解算法可分为两大类:
-
解析法(封闭解):通过代数变换或几何分解直接推导关节角表达式。
-
数值法(迭代解):采用雅可比矩阵迭代或优化算法逼近解,适用于通用构型但需处理收敛性问题。
正逆运动学的协同求解构成了机械臂轨迹生成与实时控制的理论基础,其中正运动学用于实际位姿反馈验证,逆运动学则服务于关节空间的目标规划,二者的精度与效率直接影响机械臂的整体性能。
Panda机械臂的DH参数法建模
坐标系定义和DH参数确定
- α i \alpha_{i} αi:沿着 X ^ i − 1 \hat{X}_{i-1} X^i−1方向看,从 Z ^ i − 1 \hat{Z}_{i-1} Z^i−1转到 Z ^ i \hat{Z}_i Z^i的旋转角度
- a i − 1 a_{i-1} ai−1:沿着 X ^ i − 1 \hat{X}_{i-1} X^i−1方向, Z ^ i − 1 \hat{Z}_{i-1} Z^i−1和 Z ^ i \hat{Z}_i Z^i间的距离( a i a_{i} ai>0)
- θ i \theta_{i} θi:沿着 Z ^ i \hat{Z}_{i} Z^i方向看,从 X ^ i − 1 \hat{X}_{i-1} X^i−1转到 X ^ i \hat{X}_i X^i的旋转角度
- d i d_{i} di:沿着 Z ^ i \hat{Z}_{i} Z^i方向, X ^ i − 1 \hat{X}_{i-1} X^i−1和 X ^ i \hat{X}_i X^i间的距离( d i d_i di>0)
几何参数
DH参数
正运动学
转换公式:
i i − 1 T = T X ^ i − 1 ( α i − 1 ) T X ^ R ( a i − 1 ) T Z ^ Q ( θ i ) T Z ^ P ( 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 ] \begin{aligned} { }_{i}^{i-1} T & =T_{\hat{X}_{i-1}}\left(\alpha_{i-1}\right) T_{\hat{X}_{R}}\left(a_{i-1}\right) T_{\hat{Z}_{Q}}\left(\theta_{i}\right) T_{\hat{Z}_{P}}\left(d_{i}\right) \\ & =\left[\begin{array}{cccc} c \theta_{i} & -s \theta_{i} & 0 & a_{i-1} \\ s \theta_{i} c \alpha_{i-1} & c \theta_{i} c \alpha_{i-1} & -s \alpha_{i-1} & -s \alpha_{i-1} d_{i} \\ s \theta_{i} s \alpha_{i-1} & c \theta_{i} s \alpha_{i-1} & c \alpha_{i-1} & c \alpha_{i-1} d_{i} \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned} ii−1T=TX^i−1(αi−1)TX^R(ai−1)TZ^Q(θi)TZ^P(di)= cθisθicαi−1sθisαi−10−sθicθicαi−1cθisαi−100−sαi−1cαi−10ai−1−sαi−1dicαi−1di1
注意: c θ i c\theta_{i} cθi表示 c o s ( θ i ) cos(\theta_{i}) cos(θi), s θ i s\theta_{i} sθi表示 s i n ( θ i ) sin(\theta_{i}) sin(θi),其他同理。
则:
1 0 T = [ c θ 1 − s θ 1 0 0 s θ 1 c θ 1 0 0 0 0 1 0.333 0 0 0 1 ] \begin{aligned} { }_{1}^{0} T & =\left[\begin{array}{cccc} c \theta_{1} & -s \theta_{1} & 0 & 0 \\ s \theta_{1} & c \theta_{1} & 0 & 0 \\ 0 & 0 & 1 & 0.333 \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned} 10T= cθ1sθ100−sθ1cθ1000010000.3331
其中, a 0 = 0 a_{0}=0 a0=0, d 1 = 0.333 d_{1}=0.333 d1=0.333, α 0 = 0 \alpha_{0}=0 α0=0
2 1 T = [ c θ 2 − s θ 2 0 0 0 0 1 0 − s θ 2 − c θ 2 0 0 0 0 0 1 ] \begin{aligned} { }_{2}^{1} T & =\left[\begin{array}{cccc} c \theta_{2} & -s \theta_{2} & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -s \theta_{2} & -c \theta_{2} & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned} 21T= cθ20−sθ20−sθ20−cθ2001000001
其中, a 1 = 0 a_{1}=0 a1=0, d 2 = 0 d_{2}=0 d2=0, α 1 = − π / 2 \alpha_{1}=-\pi/2 α1=−π/2
⋮ \vdots ⋮
7 6 T = [ c θ 7 − s θ 7 0 0.088 0 0 − 1 0 s θ 7 c θ 7 0 0 0 0 0 1 ] \begin{aligned} { }_{7}^{6} T & =\left[\begin{array}{cccc} c \theta_{7} & -s \theta_{7} & 0 & 0.088 \\ 0 & 0 & -1 & 0 \\ s \theta_{7} & c \theta_{7} & 0 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right] \end{aligned} 76T= cθ70sθ70−sθ70cθ700−1000.088001
其中, a 6 = 0.088 a_{6}=0.088 a6=0.088, d 7 = 0 d_{7}=0 d7=0, α 6 = π / 2 \alpha_{6}=\pi/2 α6=π/2
最终末端执行器相对于基座坐标系的变换矩阵为:
7 0 T = 0 1 T 1 2 T 2 3 T 3 4 T 4 5 T 5 6 T 6 7 T \begin{aligned} { }_{7}^{0} T & ={ }_{0}^{1} T { }_{1}^{2} T { }_{2}^{3} T { }_{3}^{4} T { }_{4}^{5} T { }_{5}^{6} T { }_{6}^{7} T \end{aligned} 70T=01T12T23T34T45T56T67T
仿真分析
逆运动学
这里介绍一下通过数值法来逆向求解机械臂的关节角度。
误差函数
首先定义一个误差函数 E E E ,它衡量末端执行器的实际位置和姿态与目标位置的差异:
E = ∥ 7 0 T − 7 0 T ∗ ∥ E = \left\| { }_{7}^{0} T - { }_{7}^{0} T^* \right\| E= 70T−70T∗
其中 7 0 T ∗ { }_{7}^{0} T^* 70T∗ 是目标的位置和姿态的变换矩阵, ∥ ∥ \| \| ∥∥ 表示的是范数(norm)。
雅可比矩阵
雅可比矩阵(Jacobian matrix)是求解逆运动学问题的关键工具。它是一个偏导数矩阵,表示末端执行器在基座坐标系下的位移分量对每个关节变量的变化率。
高斯-牛顿法(Gauss-Newton)
高斯-牛顿法是一种常用的数值优化方法,用于求解非线性最小二乘问题。在逆运动学中,我们可以将误差函数 E E E 视为关于关节变量的非线性函数,并使用高斯-牛顿法来迭代地更新关节变量,以减小误差函数的值。
具体步骤如下:
- 初始化:选择一组初始的关节角度作为起点。
- 计算雅可比矩阵和误差向量:根据当前的关节角度,计算出末端执行器的位置和姿态(即变换矩阵),然后计算雅可比矩阵和误差向量。
- 构建增广正规方程:构造一个增广的正则化方程组,其中包括了雅可比矩阵的转置乘以雅可比矩阵加上一个正则项 λ I \lambda I λI (其中 I I I 是单位矩阵, λ > 0 \lambda > 0 λ>0)。这个正则项是为了防止奇异性的出现,特别是在某些关节接近极限时。
- 解算增量:通过解上述增广正规方程组,得到关节角度的增量。
- 更新关节角度:用得到的增量更新关节角度。
- 重复以上步骤:直到满足一定的收敛条件(例如,误差函数的值小于某个阈值,或者增量的大小足够小)。
- 返回最终的关节角度。
其中的关键步骤为:
❇️创建一个6x6的单位矩阵W,用于在求解增广正规方程时乘以雅可比矩阵的转置和雅可比矩阵。
W = [ 1 0 ⋯ 0 0 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 1 ] 6 × 6 \begin{aligned} W = \begin{bmatrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{bmatrix}_{6 \times 6} \end{aligned} W= 10⋮001⋮0⋯⋯⋱⋯00⋮1 6×6
❇️迭代求解
- 计算误差
通过正运动学求解当前的机械臂末端位姿矩阵: T current = fkine ( q ) \mathbf{T}_{\text{current}}=\operatorname{fkine}(\mathbf{q}) Tcurrent=fkine(q)
E = tr2delta ( T current , T target ) \mathbf{E}=\operatorname{tr2delta}\left(\mathbf{T}_{\text{current}}, \mathbf{T}_{\text {target }}\right) E=tr2delta(Tcurrent,Ttarget )
当误差小于容差时终止循环: ∥ W ∗ E ∥ < t o l \text{当误差小于容差时终止循环:} \left \| W*E \right \| < tol 当误差小于容差时终止循环:∥W∗E∥<tol
- 计算雅可比矩阵
J = jocobi ( q ) \mathbf{J} = \text{jocobi} (\mathbf{q}) J=jocobi(q)
- 更新关节角
Δ q = ( J ⊤ W J + ( λ + λ min ) I ) − 1 J ⊤ W E \Delta\mathbf{q}=\left(\mathbf{J}^\top\mathbf{W}\mathbf{J}+(\lambda+\lambda_{\min})\mathbf{I}\right)^{-1}\mathbf{J}^\top\mathbf{W}\mathbf{E} Δq=(J⊤WJ+(λ+λmin)I)−1J⊤WE
q n e w = q + Δ q ⊤ \mathbf{q}_{\mathrm{new}}=\mathbf{q}+\Delta\mathbf{q}^\top qnew=q+Δq⊤
参考
- 台大机器人学之运动学——林沛群(含课件+书籍)
- Panda机械臂参数
- MATLAB机器人工具箱中机器人逆解是如何求出来的?
- robotics-toolbox-matlab/@SerialLink
/ikine.m- 【教学-机器人工具箱】机械臂雅可比矩阵 Jacobian Matrix
- Whether or not is J T J + λ diag ( J T J ) J^TJ+\lambda \operatorname{diag}(J^TJ) JTJ+λdiag(JTJ) guaranteed to be invertible?
代码获取
关注👇👇,发送:DockerRos2UnityArm
,获取仿真代码。
相关文章:

panda机械臂的正逆运动学分析与仿真
文章目录 前言Panda机械臂的DH参数法建模正运动学逆运动学误差函数雅可比矩阵高斯-牛顿法(Gauss-Newton) 参考代码获取 前言 机械臂的位置运动学分析是机器人控制与轨迹规划的核心基础,其研究内容主要分为正运动学(Forward Kinem…...

QT使用QXlsx读取excel表格中的图片
前言 读取excel表格中的图片的需求比较小众,QXlsx可以操作excel文档,进行图片读取、插入操作,本文主要分享单独提取图片和遍历表格提取文字和图片。 源码下载 github 开发环境准备 把下载的代码中的QXlsx目录,整个拷贝到所创建…...
VulnHub | Breach - 1
🌟 关注这个靶场的其它相关笔记:[网安靶场] 红队综合渗透靶场 —— VulnHub 靶场笔记合集 Breach: 1 ~ VulnHubBreach: 1, made by mrb3n. Download & walkthrough links are available.https://vulnhub.com/entry/breach-1,152/ 0x01:…...
CMake基础及操作笔记
CMake 基础与操作:从入门到精通 前言 CMake 是一个功能强大、跨平台的构建工具,广泛用于 C 项目管理。它通过简洁的配置文件(CMakeLists.txt)描述编译过程,生成适用于不同平台的构建脚本(如 Makefile 或 …...

在Oracle到GreatSQL迁移中排序规则改变引发的乱码问题分析及解决
在Oracle到GreatSQL迁移中排序规则改变引发的乱码问题分析及解决 一、引言 某老系统数据库从 Oracle 迁移至 GreatSQL 过程中,首批迁移(存储过程、表结构、基础数据)顺利完成。然而,第二批数据迁移时出现主键冲突问题࿱…...

开源物联网平台(OpenRemote)
在物联网技术蓬勃发展的当下,OpenRemote作为一款强大的开源物联网平台,正逐渐在多个领域崭露头角。尤其是在智能能源管理领域,它为微电网和分布式能源网络提供了全面且灵活的数据集成与管理方案,展现出独特的优势。 OpenRemote提供…...

JavaScript入门【3】面向对象
1.对象: 1.概述: 在js中除了5中基本类型之外,剩下得都是对象Object类型(引用类型),他们的顶级父类是Object;2.形式: 在js中,对象类型的格式为key-value形式,key表示属性,value表示属性的值3.创建对象的方式: 方式1:通过new关键字创建(不常用) let person new Object();// 添…...

软件安全检测报告:如何全面评估企业级办公软件安全性?
软件安全检测报告对软件的整体安全性进行了全面而细致的评估与呈现,既揭露了软件防范非法入侵的能力,同时也为软件的开发与优化提供了关键性的参考依据。 引言情况 撰写报告旨在明确呈现软件的安全性状态,并为后续的改进工作提供依据。在阐…...
区间dp(竞赛)
一、介绍 区间 dp 其实就是左右端点固定之后,用已经得出的小区间来更新大区间答案的 dp 方式。 非常重要的要素:小区间得到大区间,衍生出来的问题就是对于大区间如何划分成若干小区间,这直接决定了方程的书写。之后的例题中慢慢…...

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类颜色常量QColorConstants)
文章目录 一、概述二、颜色常量表标准 Qt 颜色SVG 颜色(部分) 三、Python 代码示例四、代码说明五、版本兼容性六、延伸阅读 一、概述 QColorConstants 是 Qt for Python 提供的一个预定义颜色常量集合,包含标准Qt颜色和SVG规范颜色。这些常…...

大模型技术演进与应用场景深度解析
摘要 本文系统梳理了当前主流大模型的技术架构演进路径,通过对比分析GPT、BERT等典型模型的创新突破,揭示大模型在参数规模、训练范式、应用适配等方面的核心差异。结合医疗、金融、教育等八大行业的实践案例,深入探讨大模型落地的技术挑战与解决方案,为从业者提供体系化的…...

鸿蒙5.0项目开发——鸿蒙天气项目的实现(主页1)
【高心星出品】 文章目录 页面效果:页面功能:页面执行流程:1. 页面初始化阶段2. 定位获取阶段3. 天气数据加载阶段 这个页面是整个天气应用的核心,集成了天气查询、定位、搜索等主要功能,提供了完整的天气信息服务。 …...
python项目参考文献
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

【ESP32】ESP-IDF开发 | 低功耗蓝牙开发 | GATT规范和ATT属性协议 + 电池电量服务例程
1. 简介 低功耗蓝牙中最为核心的部分当属 GATT(Generic Attribute Profile),全称通用属性配置文件。而 GATT 又是建立在 ATT 协议(属性协议)的基础之上,为 ATT 协议传输和存储的数据建立了通用操作和框架。…...

2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题
2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题 (二)A 模块基础设施设置/安全加固(200 分)A-1 任务一登录安全加固(Windows,Linux)A-2 任务二 Nginx 安全策略&…...

【记录】Windows|竖屏怎么调整分辨率使横竖双屏互动鼠标丝滑
本文版本:Windows11,记录一下,我最后调整的比较舒适的分辨率是800*1280。 文章目录 第一步 回到桌面第二步 右键桌面第三步 设置横屏为主显示器第四步 调整分辨率使之符合你的需求第五步 勾选轻松在显示器之间移动光标第六步 拖动屏幕符合物理…...

开源项目实战学习之YOLO11:12.2 ultralytics-models-sam-decoders.py源码分析
👉 点击关注不迷路 👉 点击关注不迷路 👉 另外,前些天发现了一个巨牛的AI人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。感兴趣的可以点击相关跳转链接。 点击跳转到网站。 ultralytics-models-sam 1.sam-modules-decoders.pyblocks.py: 定义模型中的各…...

数据结构*优先级队列(堆)
什么是优先级队列(堆) 优先级队列一般通过堆(Heap)这种数据结构来实现,堆是一种特殊的完全二叉树,其每个节点都满足堆的性质。如下图所示就是一个堆: 堆的存储方式 由于堆是一棵完全二叉树,所以也满足二…...

汽车Wafer连接器:工业设备神经网络的隐形革命者
汽车Wafer连接器正在突破传统车载场景的边界,以毫米级精密结构重构工业设备的连接范式。这款厚度不足3毫米的超薄连接器,在新能源电池模组中承载200A持续电流的同时,仍能保持85℃温升的稳定表现,其每平方厘米高达120针的触点密度&…...

微信小程序:封装表格组件并引用
一、效果 封装表格组件,在父页面中展示表格组件并显示数据 二、表格组件 1、创建页面 创建一个components文件夹,专门用于存储组件的文件夹 创建Table表格组件 2、视图层 (1)表头数据 这里会从父组件中传递表头数据,这里为columns,后续会讲解数据由来 循环表头数组,…...
湖北理元理律师事务所:债务优化中的双维支持实践解析
在债务压力与生活质量失衡的社会议题下,法律服务机构的功能边界正在从单一的法律咨询向复合型支持延伸。湖北理元理律师事务所通过“法律心理”双维服务模式,探索债务优化与生活保障的平衡路径,其方法论或为行业提供实践参考。 法律框架&…...
uniapp在APP上如何使用websocket--详解
UniApp 在 APP 端如何使用 WebSocket以及常见问题 一、WebSocket 基础概念 WebSocket 是一种在单个TCP连接上进行全双工通信的协议,适用于实时数据传输场景(如聊天室、实时游戏、股票行情等)。 与传统HTTP对比 特性WebSocketHTTP连接方式…...
计网| 网际控制报文协议(ICMP)
目录 网际控制报文协议(ICMP) 一、ICMP 基础特性 二、ICMP 报文分类及作用 差错报告报文 询问报文 网际控制报文协议(ICMP) ICMP(Internet Control Message Protocol,网际控制报文协议)是 …...

Conda 完全指南:从环境管理到工具集成
Conda 完全指南:从环境管理到工具集成 在数据科学、机器学习和 Python 开发领域,环境管理一直是令人头疼的问题。不同项目依赖的库版本冲突、Python 解释器版本不兼容等问题频繁出现,而 Conda 的出现彻底解决了这些痛点。作为目前最流行的跨…...

安卓中0dp和match_parent区别
安卓中的 0dp 和 match_parent 的区别? 第一章 前言 有段时间,看到同事在编写代码的时候,写到的是 0dp 有时候自己写代码的时候,编写的是 match_parent 发现有时候效果很类似。 后来通过一个需求案例,才发现两者有着…...
蓝桥杯-不完整的算式
问题描述 小蓝在黑板上写了一个形如 AopBCAopBC 的算式,其中 AA、BB、CC 都是非负整数,opop 是 、-、*、/、-、*、/(整除)四种运算之一。不过 AA、opop、BB、CC 这四部分有一部分被不小心的同学擦掉了。 给出这个不完整的算式&a…...

信贷风控笔记4——贷前策略之额度、定价(面试准备12)
1.贷前模型的策略应用 分类:审批准入(对头尾部区分度要求高):单一规则(找lift>3的分数做规则);二维交叉;拒绝回捞 额度定价(对排序性要求高)&am…...

A级、B级弱电机房数据中心建设运营汇报方案
该方案围绕A 级、B 级弱电机房数据中心建设与运营展开,依据《数据中心设计规范》等标准,施工范围涵盖 10 类机房及配套设施,采用专业化施工团队与物资调配体系,强调标签规范、线缆隐藏等细节管理。运营阶段建立三方协同运维模式,针对三级故障制定30 分钟至 1 小时响应机制…...

Linux中的域名解析服务器
一、DNS(域名系统)详解 1. 核心功能与特点 特性说明核心作用将域名(如 www.example.com)转换为 IP 地址(如 192.168.1.1),实现人类可读地址与机器可读地址的映射。端口与协议- 默认端口&#…...
如何优化Java中十进制字符串转十六进制的性能
在 Java 中优化十进制字符串转十六进制的性能,可以从减少对象创建、避免正则表达式、使用高效数据结构等方面入手。以下是具体的优化方案: 1. 避免字符串分割,直接遍历字符数组 原始方法(频繁创建子字符串)࿱…...