当前位置: 首页 > news >正文

坐标系下的运动旋量转换

坐标系下的运动旋量转换


文章目录

  • 坐标系下的运动旋量转换
  • 前言
  • 一、运动旋量
    • 物体运动旋量
    • 空间运动旋量
  • 二、伴随变换矩阵
  • 三、坐标系下运动旋量的转换
  • 四、力旋量
  • 五、总结
  • 参考资料


前言

对于刚体而言,其角速度可以写为 ω ^ θ ˙ \hat {\omega} \dot \theta ω^θ˙,其中, ω ^ \hat\omega ω^为单位转轴, θ ˙ \dot \theta θ˙为绕着转轴转动的角速度大小。运动旋量则用来描述物体角速度与线速度的组合。由于在机器人学中,运动旋量可能需要描述在不同坐标系之下,本文参考凯文·M.林奇的《现代机器人学》,对运动旋量概念坐标系下的运动旋量转换进行梳理与总结,便于自己后续回忆。


一、运动旋量

首先,定义有单位螺旋轴 S = ( ω , v x , v y , v z ) ( ω = 1 ) S=(\omega,v_x,v_y,v_z)(\omega=1) S=(ω,vx,vy,vz)ω=1,利用旋转速度 θ ˙ \dot\theta θ˙与之相乘,由此可得运动旋量 V = S θ ˙ V=S\dot\theta V=Sθ˙。这里注意:通过绕螺旋轴 S S S转动 θ \theta θ角的位移与以速度 θ ˙ = θ \dot\theta=\theta θ˙=θ绕螺旋轴 S S S转动单位时间完全相等,因此, V = S θ ˙ V=S\dot\theta V=Sθ˙可同样看作为指数坐标(刚体转动的指数坐标,可以等效为单位转轴 ω ^ ( ω ^ ∈ R 3 , ∣ ∣ ω ^ ∣ ∣ = 1 ) \hat\omega(\hat\omega\in R^3,||\hat\omega||=1) ω^(ω^R3,∣∣ω^∣∣=1))与绕该轴线的转角 θ ∈ R \theta\in R θR
在这里插入图片描述

在对运动旋量有了大致了解以后,正式进入正题,即何为物体运动旋量、何为空间运动旋量。

物体运动旋量

首先,用 { s } \{s\} {s} { b } \{b\} {b}分别描述固定(空间)坐标系和移动(物体)坐标系。则有
T s b ( t ) = [ R ( t ) p ( t ) 0 1 ] T_{sb}(t)=\begin{bmatrix} R(t) & p(t) \\ \pmb0 & 1 \end{bmatrix} Tsb(t)=[R(t)0p(t)1]
其中, T s b T_{sb} Tsb表示从空间坐标系到物体坐标系的转换集合矩阵,后续可用 T T T代替。令 T − 1 T ˙ T^{-1}\dot T T1T˙,则有
T − 1 T ˙ = [ R T − R T p 0 1 ] [ R ˙ p ˙ 0 0 ] = [ R T R ˙ R T p ˙ 0 1 ] T^{-1}\dot T=\begin{bmatrix} R^T & -R^Tp \\ \pmb0 & 1 \end{bmatrix}\begin{bmatrix} \dot R & \dot p \\ \pmb0 & 0 \end{bmatrix}=\begin{bmatrix} R^T\dot R & R^T\dot p \\ \pmb0 & 1 \end{bmatrix} T1T˙=[RT0RTp1][R˙0p˙0]=[RTR˙0RTp˙1]
其中, R T R ˙ = R − 1 R ˙ = [ ω b ] R^T\dot R=R^{-1}\dot R=[\omega_b] RTR˙=R1R˙=[ωb],这里的 [ ω b ] [\omega_b] [ωb]即为物体坐标系 { b } \{b\} {b}下的刚体角速度的反对称矩阵, [ ∗ ] [*] []符号代表 ∗ * 的反对称矩阵。具体证明过程可参考书籍,这里不再展开。同理, p ˙ \dot p p˙代表坐标系 { s } \{s\} {s}中描述的 { b } \{b\} {b}的原点的线速度,因此, R T p ˙ = R − 1 p ˙ = v b R^T\dot p=R^{-1}\dot p=v_b RTp˙=R1p˙=vb则为在物体坐标系 { b } \{b\} {b}中描述 { s } \{s\} {s}的原点的线速度。可进一步阐述为: T − 1 T ˙ T^{-1}\dot T T1T˙表示动坐标系相对于当前与其瞬时重合的静坐标系 { b } \{b\} {b}的线速度与角速度。
构造六维向量 V b = [ ω b v b ] V_b=\begin{bmatrix} \omega_b \\ v_b \end{bmatrix} Vb=[ωbvb],定义其为物体坐标系中的速度,简称为物体运动旋量。写为矩阵形式为
T − 1 T ˙ = [ V b ] = [ [ ω b ] v b 0 1 ] ∈ s e ( 3 ) T^{-1}\dot T=[V_b]=\begin{bmatrix} [\omega_b] & v_b \\ \pmb0 & 1 \end{bmatrix} \in se(3) T1T˙=[Vb]=[[ωb]0vb1]se(3)
这里可以注意,六维向量 V b V_b Vb的反对称矩阵的撰写形式,即原部矢量 w b w_b wb取反对称形式,偶部矢量不改变形式

空间运动旋量

同理,可以推导 T ˙ T − 1 \dot TT^{-1} T˙T1
V s = [ ω s v s ] ∈ R 6 , T ˙ T − 1 = [ V s ] = [ [ w s ] v s 0 1 ] ∈ s e ( 3 ) V_s=\begin{bmatrix} \omega_s \\ v_s \end{bmatrix} \in R^6, \dot TT^{-1}=[V_s]=\begin{bmatrix} [w_s] & v_s \\ \pmb0 & 1 \end{bmatrix} \in se(3) Vs=[ωsvs]R6,T˙T1=[Vs]=[[ws]0vs1]se(3)
此时, V s V_s Vs描述空间固定坐标系中的速度,因此被称为空间运动旋量。

二、伴随变换矩阵

在第一节中,描绘了分别在两个坐标系下的运动旋量,即 V b V_b Vb V s V_s Vs,那么,如果我们已知这两个坐标系的转换矩阵 T s b = ( R s b , p s b ) ∈ S E ( 3 ) T_{sb}=(R_{sb},p_{sb})\in SE(3) Tsb=(Rsb,psb)SE(3),我们是否可以对这两个运动旋量建立联系呢?答案就是伴随变换矩阵。即有
V s = [ ω s v s ] = [ A d T s b ] V b = [ R s b 0 [ p s b ] R s b R s b ] [ ω b v b ] V_s=\begin{bmatrix} \omega_s \\ v_s \end{bmatrix}=[Ad_{T_{sb}}]V_b=\begin{bmatrix} R_{sb} & \pmb 0\\ [p_{sb}]R_{sb} & R_{sb} \end{bmatrix} \begin{bmatrix} \omega_b \\ v_b \end{bmatrix} Vs=[ωsvs]=[AdTsb]Vb=[Rsb[psb]Rsb0Rsb][ωbvb]
其中, [ A d T s b ] = [ R s b 0 [ p s b ] R s b R s b ] ∈ R 6 × 6 [Ad_{T_{sb}}]=\begin{bmatrix} R_{sb} & \pmb 0\\ [p_{sb}]R_{sb} & R_{sb} \end{bmatrix} \in R^{6\times6} [AdTsb]=[Rsb[psb]Rsb0Rsb]R6×6即为该伴随变换矩阵。
将其化为矩阵形式,则有
[ V s ] = T s b [ V b ] T − 1 [V_s]=T_{sb}[V_b]T^{-1} [Vs]=Tsb[Vb]T1

三、坐标系下运动旋量的转换

结合第二、三节内容,即可总结空间、物体坐标系下运动旋量的转换关系: T s b ( t ) = T ( t ) = [ R ( t ) p ( t ) 0 1 ] ∈ S E ( 3 ) T_{sb}(t)=T(t)=\begin{bmatrix} R(t) & p(t)\\ \pmb0 & 1 \end{bmatrix}\in SE(3) Tsb(t)=T(t)=[R(t)0p(t)1]SE(3)仍表示固定坐标系 { s } \{s\} {s}到物体坐标系 { b } \{b\} {b}的位姿转换矩阵(这里的 S E ( 3 ) SE(3) SE(3)即为一种特殊李群)。则有
物体运动旋量(body twist)
T − 1 T ˙ = [ V b ] = [ [ ω b ] v b 0 1 ] ∈ s e ( 3 ) T^{-1}\dot T=[V_b]=\begin{bmatrix} [\omega_b] & v_b \\ \pmb0 & 1 \end{bmatrix} \in se(3) T1T˙=[Vb]=[[ωb]0vb1]se(3)
空间运动旋量(spatial twist)
T ˙ T − 1 = [ V s ] = [ [ ω s ] v s 0 1 ] ∈ s e ( 3 ) \dot TT^{-1}=[V_s]=\begin{bmatrix} [\omega_s] & v_s \\ \pmb0 & 1 \end{bmatrix} \in se(3) T˙T1=[Vs]=[[ωs]0vs1]se(3)
运动旋量 V b V_b Vb V s V_s Vs存在关系为
V s = [ ω s v s ] = [ R s b 0 [ p s b ] R s b R s b ] [ ω b v b ] = [ A d T s b ] V b V_s=\begin{bmatrix} \omega_s \\ v_s \end{bmatrix}=\begin{bmatrix} R_{sb} & \pmb 0\\ [p_{sb}]R_{sb} & R_{sb} \end{bmatrix} \begin{bmatrix} \omega_b \\ v_b \end{bmatrix}=[Ad_{T_{sb}}]V_b Vs=[ωsvs]=[Rsb[psb]Rsb0Rsb][ωbvb]=[AdTsb]Vb
V b = [ ω b v b ] = [ R s b T 0 − R s b T [ p s b ] R s b T ] [ ω s v s ] = [ A d T s b ] V s V_b=\begin{bmatrix} \omega_b \\ v_b \end{bmatrix}=\begin{bmatrix} R_{sb}^T & \pmb 0\\ -R_{sb}^T[p_{sb}] & R_{sb}^T \end{bmatrix} \begin{bmatrix} \omega_s \\ v_s \end{bmatrix}=[Ad_{T_{sb}}]V_s Vb=[ωbvb]=[RsbTRsbT[psb]0RsbT][ωsvs]=[AdTsb]Vs
这里友情提示下,在《现代机器人学》第三次印刷本中,对于 V s V_s Vs V b V_b Vb的转换似乎存在小错误,不过问题不大,一般都能看出来,自行矫正即可。

四、力旋量

与运动旋量对应的,也存在着力旋量的定义。对作用于空间物体上的力矩 m a m_a ma f a f_a fa,同样可将其合成为六维的空间力的形式,其称为力旋量(wrench),在坐标系 { a } \{a\} {a}中可描述为
F a = [ m a f a ] ∈ R 6 F_a=\begin{bmatrix} m_a \\ f_a \end{bmatrix} \in R^6 Fa=[mafa]R6
如若作用于刚体的力旋量不唯一,即将其通过力旋量的六维形式直接相加即可。无力元素的力旋量则被称为纯力偶(pure moment)
关于力旋量的转换关系,基于系统功率一定原则,最终可推导出:
F b = [ A d T a b T ] F a F_b=[Ad_{T_{ab}}^T]F_a Fb=[AdTabT]Fa
其中, F a F_a Fa F b F_b Fb分别为坐标系 { a } \{a\} {a}与坐标系 { b } \{b\} {b}中的力旋量, T a b T_{ab} Tab为坐标系 { a } \{a\} {a}到坐标系 { b } \{b\} {b}的转换矩阵。

五、总结

在学习运动旋量与李群李代数时,一开始感觉确实有些晦涩且难以理解,但是在反复学习时,又感觉其形式简洁且非常实用,因此在这里学习记录,供后续参考。

参考资料

【1】https://www.bilibili.com/video/BV1KV411Z7sC/?p=17&vd_source=029a7426f7a6cecb96f1969e1ce8aff7。
【2】现代机器人学:机构、规划与控制。

相关文章:

坐标系下的运动旋量转换

坐标系下的运动旋量转换 文章目录 坐标系下的运动旋量转换前言一、运动旋量物体运动旋量空间运动旋量 二、伴随变换矩阵三、坐标系下运动旋量的转换四、力旋量五、总结参考资料 前言 对于刚体而言,其角速度可以写为 ω ^ θ ˙ \hat {\omega} \dot \theta ω^θ˙&…...

Android Termux安装MySQL,通过内网穿透实现公网远程访问

🔥博客主页: 小羊失眠啦. 🔖系列专栏: C语言、Linux、Cpolar ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前…...

Python in Visual Studio Code 2023年11月发布

排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 11 月发布! 此版本包括以下公告: 改进了使用 Shift Enter 在终端中运行当前行弃用内置 linting 和格式设置功能对 Python linting 扩展的改进重…...

算法通关村——数字中的统计、溢出、进制转换处理模板

数字与数学基础问题 1、数字统计 1.1、符号统计 LeetCode1822. 给定一个数组,求所有元素的乘积的符号,如果最终答案是负的返回-1,如果最终答案是正的返回1,如果答案是0返回0. 这题其实只用看数组中0和负数的个数就好了&#x…...

ESP01S通过心知天气获取天气和时间信息

ESP01S通过心知天气获取天气和时间信息 设置STA模式 ATCWMODE1 连接wifi ATCWJAP"wifi名称","wifi密码"3.设置时间地域 ATCIPSNTPCFG1,8获取时间 ATCIPSNTPTIME?返回: CIPSNTPTIME:Fri Nov 17 17:09:22 2023 OK连接心知服务器 ATCIPSTAR…...

docker容器内core dumped却找不到core文件

1. 检查ulimit, 使用命令: ulimit -a rootb7c19f6da1e3:/usr# ulimit -a core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks…...

ubuntu提高 github下载速度

Github一般用于Git的远程仓库,由于服务器位于国外,国内访问速度比较慢,为了提高访问速度,决定绕过DNS域名解析。 获取Github的IP地址 按下ctrl+alt+T打开命令终端,输入: nslookup gi…...

Node.js之path路径模块

让我为大家介绍一下path路径模块吧! 什么是path路径模块? path 模块是 Node.s 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。 介绍三个关于path模块的方法: path.join() 方法&…...

TCP与UDP协议

TCP与UDP协议 1、TCP协议: 1、TCP特性: TCP 提供一种面向连接的、可靠的字节流服务。在一个 TCP 连接中,仅有两方进行彼此通信。广播和多播不能用于 TCP。TCP 使用校验和,确认和重传机制来保证可靠传输。TCP 给数据分节进行排序…...

“ /^A-Z:\\{1,2}^/:\*\?<>\|+\.(jpg|gif|png|bmp)$/i ”这个正则表达式的理解

这个正则表达式可以分解为以下几个部分: ^:这是一个开始符号,表示匹配必须从字符串的开始部分开始。/:这是一个斜杠符号,通常在正则表达式中用来表示特殊字符的转义。A-Z::这部分表示匹配一个大写字母后跟…...

批量下载Sentinel数据脚本2023

批量下载Sentinel数据脚本2023 那些最好的程序员不是为了得到更高的薪水或者得到公众的仰慕而编程,他们只是觉得这是一件有趣的事情! 批量下载Sentinel数据脚本2023 批量下载Sentinel数据脚本2023🌿前言🌿脚本地址📧Su…...

lv11 嵌入式开发 ARM指令集中(伪操作与混合编程) 7

目录 1 伪指令 2 伪操作 3 C和汇编的混合编程 4 ATPCS协议 1 伪指令 本身不是指令,编译器可以将其替换成若干条等效指令 空指令NOP 指令LDR R1, [R2] 将R2指向的内存空间中的数据读取到R1寄存器 伪指令LDR R1, 0x12345678 R1 0x12345678 LDR伪指令可以将任…...

北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 二.管脚分配 三.实现过程讲解及效…...

麒麟系统安装找不到安装源!!!!设置基础软件仓库时出错

记录--华为RH2288 V3服务器安装麒麟系统遇到的问题 1.遇到的问题--“设置基础软件仓库时出错”报错导致无法继续安装 没办法下一步 先说结论:系统bug 该问题在CentOS、Rocky Linux最新版中均存在 解决: (一)、如果是外网直接配…...

代码随想录算法训练营第三十九天【动态规划part02】 | 62.不同路径、63. 不同路径 II

62.不同路径 题目链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 求解思路: 动规五部曲 确定dp数组及其下标含义:dp[i][j] 表示从(0,0)出发,到(i,j&#x…...

鸿蒙4.0开发笔记之DevEco Studio如何使用Previewer窗口预览器(一)

一、预览器作用 DevEco Studio预览器概况在HarmonyOS应用开发过程中,通过使用预览器,可以查看应用的UI效果,方便开发者实时查看应用的运行效果,随时调整代码。 二、打开Previewer预览器 1、正常启动 打开预览器的位置在DevEco…...

音视频转换软件Permute mac中文板特点介绍

Permute mac是一款Mac平台上的媒体格式转换软件,由Chaotic Software开发。它可以帮助用户快速地将各种音频、视频和图像文件转换成所需格式,并提供了一些常用工具以便于用户进行编辑和处理。 Permute mac软件特点 - 支持大量格式:支持几乎所…...

前端uniapp列表下拉到底部加载下一页列表【下拉加载页面/带源码/实战】

目录 一. 图片1.2. 二.list.vue三.uni-load-more.vue最后 一. 图片 1. 2. 二.list.vue <template><view><!--列表--><scroll-view scroll-y"true" class"scroll-Y" :style"height: scrollviewHigh px;" lower-threshol…...

超聚变服务器关闭超线程CPU的步骤(完整版)

前言: 笨鸟先飞&#xff0c;好记性不如烂笔头。 我们项目都用不到超线程CPU&#xff0c;所以调测设备的时候都需要关掉&#xff0c;最近新设备换成了超聚变的服务器&#xff0c;这篇记录我关闭&#xff08;超聚变&#xff09;服务器超线程CPU的方法步骤。 关闭超线程CPU的步骤…...

智能驾驶汽车虚拟仿真视频数据理解(一)

赛题官网 datawhale 赛题介绍 跑通demo paddle 跑通demo torch 提交的障碍物取最主要的那个&#xff1f;不考虑多物体提交。障碍物&#xff0c;尽可能选择状态发生变化的物体。如果没有明显变化的&#xff0c;则考虑周边的物体。车的状态最后趋于减速、停止&#xff0c;时序…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...