机械臂的雅克比矩阵推导

1. 线速度和角速度的递推通式推导

在这里插入图片描述
p i = p i − 1 + R i − 1 r i − 1 , i i − 1 \mathbf{p}_{i}=\mathbf{p}_{i-1}+\mathbf{R}_{i-1} \mathbf{r}_{i-1, i}^{i-1} pi=pi1+Ri1ri1,ii1

p i − 1 \mathbf{p}_{i-1} pi1 { i − 1 } \{i-1\} {i1}坐标系的原点的向量, p i \mathbf{p}_{i} pi { i } \{i\} {i}坐标系的原点的向量,对于向量如果没有上标默认在 { 0 } \{0\} {0}坐标系下表示(往后向量不说在哪个坐标系下表示默认是在 { 0 } \{0\} {0}坐标系下表示) r i − 1 , i i − 1 \mathbf{r}_{i-1, i}^{i-1} ri1,ii1 { i } \{i\} {i}坐标系的原点相对于 { i − 1 } \{i-1\} {i1}坐标系的原点构成的位置向量,这个向量在 { i − 1 } \{i-1\} {i1}坐标系下表示。对上式求导:

p ˙ i = p ˙ i − 1 + R i − 1 r ˙ i − 1 , i i − 1 + ω i − 1 × R i − 1 r i − 1 , i i − 1 = p ˙ i − 1 + v i − 1 , i + ω i − 1 × r i − 1 , i \dot{\mathbf{p}}_{i}=\dot{\mathbf{p}}_{i-1}+\mathbf{R}_{i-1} \dot{\mathbf{r}}_{i-1, i}^{i-1}+\mathbf{\omega}_{i-1} \times \mathbf{R}_{i-1} \mathbf{r}_{i-1, i}^{i-1}=\dot{\mathbf{p}}_{i-1}+\mathbf{v}_{i-1, i}+\mathbf{\omega}_{i-1} \times \mathbf{r}_{i-1, i} p˙i=p˙i1+Ri1r˙i1,ii1+ωi1×Ri1ri1,ii1=p˙i1+vi1,i+ωi1×ri1,i

上式中, v i − 1 , i \mathbf{v}_{i-1, i} vi1,i { i } \{i\} {i}坐标系的原点相对于 { i − 1 } \{i-1\} {i1}坐标系的原点构成的线速度向量。

对于旋转矩阵,我们有:

R i = R i − 1 R i i − 1 \mathbf{R}_{i}=\mathbf{R}_{i-1} \mathbf{R}_{i}^{i-1} Ri=Ri1Rii1

对旋转矩阵求导我们有: R ˙ ( t ) = S ( t ) R ( t ) \dot{\mathbf{R}}(t)=\mathbf{S}(t) \mathbf{R}(t) R˙(t)=S(t)R(t),其中 S ( t ) \mathbf{S}(t) S(t)是一个反对称矩阵,带入上式我们有:

S ( ω i ) R i = S ( ω i − 1 ) R i + R i − 1 S ( ω i − 1 , i i − 1 ) R i i − 1 \mathbf{S}(\boldsymbol{\omega}_{i}) \mathbf{R}_{i}=\mathbf{S}(\boldsymbol{\omega}_{i-1}) \mathbf{R}_{i}+\mathbf{R}_{i-1} \mathbf{S}(\boldsymbol{\omega}_{i-1, i}^{i-1}) \mathbf{R}_{i}^{i-1} S(ωi)Ri=S(ωi1)Ri+Ri1S(ωi1,ii1)Rii1

上式中, ω i − 1 , i i − 1 \omega_{i-1, i}^{i-1} ωi1,ii1 { i } \{i\} {i}坐标系的原点相对于 { i − 1 } \{i-1\} {i1}坐标系的原点构成的角速度向量,这个向量在 { i − 1 } \{i-1\} {i1}坐标系下表示。

由于旋转矩阵是正交矩阵:

R i − 1 S ( ω i − 1 , i i − 1 ) R i i − 1 = R i − 1 S ( ω i − 1 , i i − 1 ) R i − 1 T R i − 1 R i i − 1 \mathbf{R}_{i-1} \mathbf{S}\left(\boldsymbol{\omega}_{i-1, i}^{i-1}\right) \mathbf{R}_{i}^{i-1}=\mathbf{R}_{i-1} \mathbf{S}(\boldsymbol{\omega}_{i-1, i}^{i-1}) \mathbf{R}_{i-1}^{T} \mathbf{R}_{i-1} \mathbf{R}_{i}^{i-1} Ri1S(ωi1,ii1)Rii1=Ri1S(ωi1,ii1)Ri1TRi1Rii1

这里使用公式 R S ( ω ) R T = S ( R ω ) \mathbf{R} \mathbf{S}(\mathbf{\omega}) \mathbf{R}^{T}=\mathbf{S}(\mathbf{R} \mathbf{\omega}) RS(ω)RT=S(Rω),我们有:

R i − 1 S ( ω i − 1 , i i − 1 ) R i i − 1 = S ( R i − 1 ω i − 1 , i i − 1 ) R i \mathbf{R}_{i-1} \mathbf{S}(\boldsymbol{\omega}_{i-1, i}^{i-1}) \mathbf{R}_{i}^{i-1}=\mathbf{S}(\mathbf{R}_{i-1} \boldsymbol{\omega}_{i-1, i}^{i-1}) \mathbf{R}_{i} Ri1S(ωi1,ii1)Rii1=S(Ri1ωi1,ii1)Ri

于是前面的式子变成:

S ( ω i ) R i = S ( ω i − 1 ) R i + S ( R i − 1 ω i − 1 , i i − 1 ) R i \mathbf{S}(\boldsymbol{\omega}_{i}) \mathbf{R}_{i}=\mathbf{S}(\boldsymbol{\omega}_{i-1}) \mathbf{R}_{i}+\mathbf{S}(\mathbf{R}_{i-1} \boldsymbol{\omega}_{i-1, i}^{i-1}) \mathbf{R}_{i} S(ωi)Ri=S(ωi1)Ri+S(Ri1ωi1,ii1)Ri

于是我们有:

ω i = ω i − 1 + R i − 1 ω i − 1 , i i − 1 = ω i − 1 + ω i − 1 , i = \boldsymbol{\omega}_{i}=\boldsymbol{\omega}_{i-1}+\mathbf{R}_{i-1} \boldsymbol{\omega}_{i-1, i}^{i-1}=\boldsymbol{\omega}_{i-1}+\boldsymbol{\omega}_{i-1, i}= ωi=ωi1+Ri1ωi1,ii1=ωi1+ωi1,i=

总结我们得到的线速度和角速度的递推通式为:

在这里插入图片描述

1.1 平移副情况

对于平移副,我们有角速度:

ω i − 1 , i = 0 \boldsymbol{\omega}_{i-1, i}=\mathbf{0} ωi1,i=0

线速度:

v i − 1 , i = d ˙ i z i − 1 \mathbf{v}_{i-1, i}=\dot{d}_{i} \mathbf{z}_{i-1} vi1,i=d˙izi1

z i − 1 \mathbf{z}_{i-1} zi1 { i − 1 } \{i-1\} {i1}坐标系沿着 z \mathbf{z} z轴的单位向量。

带入前面的公式我们有:

ω i = ω i − 1 p ˙ i = p ˙ i − 1 + d ˙ i z i − 1 + ω i × r i − 1 , i \begin{aligned} \boldsymbol{\omega}_{i} & =\boldsymbol{\omega}_{i-1} \\ \dot{\mathbf{p}}_{i} & =\dot{\mathbf{p}}_{i-1}+\dot{d}_{i} \mathbf{z}_{i-1}+\boldsymbol{\omega}_{i} \times \mathbf{r}_{i-1, i} \end{aligned} ωip˙i=ωi1=p˙i1+d˙izi1+ωi×ri1,i

1.2 旋转副情况

对于旋转副,我们有角速度:

ω i − 1 , i = ϑ ˙ i z i − 1 \boldsymbol{\omega}_{i-1, i}=\dot{\vartheta}_{i} \mathbf{z}_{i-1} ωi1,i=ϑ˙izi1

v i − 1 , i = ω i − 1 , i × r i − 1 , i \boldsymbol{v}_{i-1, i}=\boldsymbol{\omega}_{i-1, i} \times \boldsymbol{r}_{i-1, i} vi1,i=ωi1,i×ri1,i

于是我们有:

ω i = ω i − 1 + ϑ ˙ i z i − 1 p ˙ i = p ˙ i − 1 + ω i × r i − 1 , i \begin{aligned} \boldsymbol{\omega}_{i} & =\boldsymbol{\omega}_{i-1}+\dot{\vartheta}_{i} \mathbf{z}_{i-1} \\ \dot{\mathbf{p}}_{i} & =\dot{\mathbf{p}}_{i-1}+\boldsymbol{\omega}_{i} \times \mathbf{r}_{i-1, i} \end{aligned} ωip˙i=ωi1+ϑ˙izi1=p˙i1+ωi×ri1,i

2. 雅克比矩阵计算

2.1 线速度雅克比分量

p ˙ e = ∑ i = 1 n ∂ p e ∂ q i q ˙ i = ∑ i = 1 n J P i q ˙ i \dot{\mathbf{p}}_{e}=\sum_{i=1}^{n} \frac{\partial \mathbf{p}_{e}}{\partial q_{i}} \dot{q}_{i}=\sum_{i=1}^{n} \boldsymbol{J}_{P i} \dot{q}_{i} p˙e=i=1nqipeq˙i=i=1nJPiq˙i

上式可以看到,末端的线速度都是由每个关节的线速度贡献的,其中 q ˙ i \dot{q}_i q˙i是关节速度。

2.1.1 平移副情况

对于平移副我们有 q i = d i q_{i}=d_{i} qi=di

根据:

v i − 1 , i = d ˙ i z i − 1 \mathbf{v}_{i-1, i}=\dot{d}_{i} \mathbf{z}_{i-1} vi1,i=d˙izi1

q ˙ i J P i = d ˙ i z i − 1 \dot{q}_{i} \boldsymbol{J}_{P i}=\dot{d}_{i} \mathbf{z}_{i-1} q˙iJPi=d˙izi1

于是我们有:

J P i = z i − 1 \boldsymbol{J}_{P i}=\mathbf{z}_{i-1} JPi=zi1

2.1.2 旋转副情况

对于旋转副我们有 q i = θ i q_{i}=\theta_{i} qi=θi:
在这里插入图片描述
q ˙ i J P i = ω i − 1 , i × r i − 1 , e = ϑ ˙ i z i − 1 × ( p e − p i − 1 ) \dot{q}_{i} \boldsymbol{J}_{P i}=\boldsymbol{\omega}_{i-1, i} \times \mathbf{r}_{i-1, e}=\dot{\vartheta}_{i} \mathbf{z}_{i-1} \times\left(\mathbf{p}_{e}-\mathbf{p}_{i-1}\right) q˙iJPi=ωi1,i×ri1,e=ϑ˙izi1×(pepi1)

于是:

J P i = z i − 1 × ( p e − p i − 1 ) \boldsymbol{J}_{P i}=\mathbf{z}_{i-1} \times\left(\mathbf{p}_{e}-\mathbf{p}_{i-1}\right) JPi=zi1×(pepi1)

2.2 角速度雅克比分量

对于角速度我们有:

ω e = ω n = ∑ i = 1 n ω i − 1 , i = ∑ i = 1 n J O i q ˙ i \boldsymbol{\omega}_{e}=\boldsymbol{\omega}_{n}=\sum_{i=1}^{n} \boldsymbol{\omega}_{i-1, i}=\sum_{i=1}^{n} \boldsymbol{J}_{O i} \dot{q}_{i} ωe=ωn=i=1nωi1,i=i=1nJOiq˙i

2.2.1 平移副情况

对于平移副我们有 q i = d i q_{i}=d_{i} qi=di

q ˙ i J O i = 0 \dot{q}_{i} \boldsymbol{J}_{O i}=\mathbf{0} q˙iJOi=0

于是有:

ȷ O i = 0 \boldsymbol{\jmath}_{O i}=\mathbf{0} Oi=0

2.2.2 旋转副情况

对于旋转副我们有 q i = θ i q_{i}=\theta_{i} qi=θi:

q ˙ i J O i = ϑ ˙ i z i − 1 \dot{q}_{i} \boldsymbol{J}_{O i}=\dot{\vartheta}_{i} \mathbf z_{i-1} q˙iJOi=ϑ˙izi1

于是有:

J O i = z i − 1 \boldsymbol{J}_{O i}=\mathbf{z}_{i-1} JOi=zi1

2.3 雅可比矩阵综合

我们可以把线速度和角速度的雅克比矩阵的分量合成,于是我们有:

J = [ J P 1 J P n … J O 1 J O n ] \mathbf{J}=\left[\begin{array}{lll} \boldsymbol{J}_{P 1} & & \boldsymbol{J}_{P n} \\ & \ldots & \\ \boldsymbol{J}_{O 1} & & \boldsymbol{J}_{O n} \end{array}\right] J= JP1JO1JPnJOn

可以分成平移副和旋转副来讨论雅克比矩阵中的分量:

[ J P i J O i ] = { [ z i − 1 0 ] 平移副  [ z i − 1 × ( p e − p i − 1 ) z i − 1 ] 旋转副  \left[\begin{array}{l} \boldsymbol{J}_{P i} \\ \boldsymbol{J}_{O i} \end{array}\right]=\left\{\begin{array}{ll} {\left[\begin{array}{c} \boldsymbol{z}_{i-1} \\ \mathbf{0} \end{array}\right]} & \text { 平移副 } \\ {\left[\begin{array}{c} \boldsymbol{z}_{i-1} \times\left(\boldsymbol{p}_{e}-\boldsymbol{p}_{i-1}\right) \\ \boldsymbol{z}_{i-1} \end{array}\right]} & \text { 旋转副 } \end{array}\right. [JPiJOi]= [zi10][zi1×(pepi1)zi1] 平移副  旋转副 

关于上式的 z i − 1 \mathbf{z}_{i-1} zi1 p e \mathbf{p}_e pe p i − 1 \mathbf{p}_{i-1} pi1计算如下:

在这里插入图片描述

3. 不同坐标系下雅克比矩阵的转换

不同坐标系下线速度和加速度的转换如下:

[ p ˙ e u ω e u ] = [ R u 0 0 R u ] [ p ˙ e ω e ] , \left[\begin{array}{c} \dot{\mathbf{p}}_{e}^{u} \\ \boldsymbol{\omega}_{e}^{u} \end{array}\right]=\left[\begin{array}{cc} \mathbf{R}^{u} & \mathbf{0} \\ \mathbf{0} & \mathbf{R}^{u} \end{array}\right]\left[\begin{array}{c} \dot{\mathbf{p}}_{e} \\ \boldsymbol{\omega}_{e} \end{array}\right], [p˙euωeu]=[Ru00Ru][p˙eωe],

于是有:

[ p ˙ e u ω e u ] = [ R u 0 0 R u ] J q ˙ \left[\begin{array}{c} \dot{\mathbf{p}}_{e}^{u} \\ \boldsymbol{\omega}_{e}^{u} \end{array}\right]=\left[\begin{array}{cc} \mathbf{R}^{u} & \mathbf{0} \\ \mathbf{0} & \mathbf{R}^{u} \end{array}\right] \mathbf{J} \dot{\mathbf{q}} [p˙euωeu]=[Ru00Ru]Jq˙

则有:

J u = [ R u 0 0 R u ] J \mathbf{J}^{u}=\left[\begin{array}{cc} \mathbf{R}^{u} & \mathbf{0} \\ \mathbf{0} & \mathbf{R}^{u} \end{array}\right] \mathbf{J} Ju=[Ru00Ru]J

这里的 J u \mathbf{J}^{u} Ju就是在 { u } \{u\} {u}坐标系下表示的雅克比矩阵。

参考资料

[1]Siciliano B, Sciavicco L, Villani L, et al. . Robotics: Modelling, Planning and Control, 106-113

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

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

相关文章

记一次ruoyi中使用Quartz实现定时任务

一、首先了解一下Quartz Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标…

PostgreSQL学习总结(13)—— PostgreSQL 目录结构与配置文件 postgresql.conf 详解

环境搭建完成后,从环境变量里看它涉及的目录 export PGHOME/usr/local/pgsql/ export PGUSERpostgres export PGPORT5432 export PGDATA/app/pgsql/data export PGLOG/app/pgsql/log/postgres.log export PATH$PGHOME/bin:$PATH:$HOME/bin export LD_LIBRARY_PATH$…

UE4/5AI制作基础AI跳跃(适合新手)

目录 制作 添加逻辑 添加导航链接代理 结果 在上一章中,我们讲解了简单的AI跟随玩家,制作了一个基础的ai。 UE4/5AI制作基础AI(适合新手入门,运用黑板,行为树,ai控制器,角色类,任…

C++ 程序设计:四大模式(工厂+装饰+策略+观察者)

1.前言 "工厂装饰策略观察者"是常见且常用的设计模式之一,但并不是指称"四大模式"的官方术语。 "四大模式"通常是指指令式面向对象编程中的四个基本概念:封装、继承、多态和抽象。这四个概念是面向对象编程的基石。 2.工…

Ubuntu 命令行编辑文件后如何保存退出

在 Ubuntu 命令行中编辑文件后,可以使用以下步骤保存并退出: 按下键盘上的 Ctrl 键和 X 键组合,以退出编辑模式。如果文件已更改,你将看到提示,询问是否保存更改。按下 Y 键来确认保存更改,或按下 N 键取消…

4、深入理解ribbon

一、负载均衡的两种方式 服务器端负载均衡 传统的方式前端发送请求会到我们的的nginx上去,nginx作为反向代理,然后路由给后端的服务器,由于负载均衡算法是nginx提供的,而nginx是部署到服务器端的,所以这种方式又被称为…

linux之Ubuntu系列(-)常见指令 重定向

Ubuntu 中文 版本 注意点 通过修改语言改成英文 在终端录入:export LANGen_US 在终端录入:xdg-user-dirs-gtk-update 单用户和多用户 命令格式 command [-选项] [参数] –查看命令的帮助 命令 --help man 命令 |操作键| 功能| |空格键|-显示手册的下…

合并修改缺陷分支的commit到master分支

合并修改缺陷分支的commit到master分支 当我们在修改缺陷的时候,我们会开辟一个分支,专门用来修改缺陷例如hotfix 当我们在hotfix上commit的代码,想要合并到master分支,这时我们要怎么处理呢 我们使用 git cherry-pick&#xff1…

OSS对象存储后端实现+Vue实现图片上传【基于若依管理系统开发】

文章目录 基本介绍术语介绍图片上传方式介绍普通上传用户直传应用服务器签名后直传 OSS对象存储后端实现maven配置文件配置类ServiceController 图片上传前端图片上传组件api页面使用组件组件效果 基本介绍 术语介绍 Bucket(存储空间):用于…

【论文】基于GANs的图像文字擦除 ——2010.EraseNet: End-to-End Text Removal in the Wild(已开源)

pytorch官方代码:https://github.com/lcy0604/EraseNet 论文:2010.EraseNet: End-to-End Text Removal in the Wild 网盘提取码:0719 一、图片文字去除效果 图10 SCUT-EnsText 真实数据集的去除 第一列原图带文字、第二列为去除后的标签&a…

爆肝整理,Postman接口测试-全局变量/接口关联/加密/解密(超细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 全局变量和环境变…

[华为OD] 污染水域(多源BFS)

救命,因为实在找不到工作。。。 所以已经开始准备华为OD的笔试题了。。。 但是内心深处不是很想去OD呜呜呜 文章目录 BFS与多源BFS污染水域leetcode 1162::地图分析leetcode 542:01矩阵leetcode 1020:飞地的数量 BFS与多源BFS BF…

AJAX:宏任务与微任务

异步任务划分为了 宏任务:由浏览器环境执行的异步代码 微任务:由 JS 引擎环境执行的异步代码 宏任务和微任务具体划分: 左边表格是宏任务,右边是微任务 事件循环模型 /*** 目标:阅读并回答打印的执行顺序 */ console…

Spark编程-键值对RDD(K,V)创建及常用操作

简述 SparkRDD中可以包含任何类型的对象,在实际应用中,“键值对”是一种比较常见的RDD元素类型,分组和聚合操作中经常会用到,尤其是groupByKey和reduceByKey。 Spark操作中经常会用到“键值对RDD”(Pair RDD&a…

CSS样式

1.高度和宽度 .c1{height:300px;width:500px;}注意事项: 宽度支持百分比,高度不支持。行内标签:默认无效会计标签:默认有效(霸道,右侧区域空白,也不给你用) 2.块级和行内标签 块…

【Django学习】(十四)自定义action_router

之前我们的视图类可以继承GenericViewSet或者ModelViewSet,我们不用再自定义通用的action方法,但是有时候我们需要自定义action,我们该如何设计呢? 自定义action 1、手写视图逻辑 1.1、先在视图集里自定义action方法&#xff0…

HCIP第十二天(笔记)

企业网的三层架构 园区 --- 工厂、政府机关、商城、校园、公园等公共场所,为了实现数据的互通,所搭建的网络都可以称为是园区网 接入层 使用二层交换机 --- 依靠MAC地址表进行转发的设备 WLAN --- 无线局域网 --- 广义上指以无线电波、激光…

GO语言泛型

set一般没什么不方便的 但是使用GET 需要使用类型断言,将取出来的数据转为预期数据, 空接口本身是一个装箱,会产生内存逃逸和多一部分空间. 于是1.17GO使用泛型. 泛型实现: 分析可执行文件后:发现 也就是泛型会为每个数据类型都生产一套代码,导致可执行文件大小增加,并且使用…

uni-app中a标签下载文件跳转后左上角默认返回键无法继续返回

1.首先使用的是onBackPress //跟onShow同级别 onBackPress(option){ uni.switchTab({ url:/pages/....... return true }) }发现其在uni默认头部中使用是可以的 但是h5使用了"navigationStyle":"custom"后手机默认的返回并不可以, 2.经过查询…

LCD-STM32液晶显示中英文-(5.字符编码)

目录 字符编码 字符编码说明参考网站 字符编码 ASCII编码 ASCII编码介绍 ASCII编码表 中文编码 1. GB2312标准 区位码 2. GBK编码 3. GB18030 各个标准的对比说明 4. Big5编码 字符编码 字符编码说明参考网站 字符编码及转换测试:导航菜单 - 千千秀字 …