机器人位姿变换的坐标系相对性:左乘法则与右乘法则解析​

文章目录

设机器人当前位姿(位置和姿态)表示为齐次变换矩阵 Tcurrent\boldsymbol{T}_{current}Tcurrent,该矩阵将局部坐标系(机器人自身坐标系)的点坐标映射到世界坐标系:
Pworld=Tcurrent⋅Plocal\boldsymbol{P}_{world} = \boldsymbol{T}_{current} \cdot \boldsymbol{P}_{local} Pworld=TcurrentPlocal其中,Plocal\boldsymbol{P}_{local}Plocal 是点在局部坐标系中的坐标,Pworld\boldsymbol{P}_{world}Pworld 是其在世界坐标系中的坐标。

1. 全局坐标系下机器人位姿更新的左乘法则​

若变换基于全局坐标系(例如,沿世界坐标系X轴平移3米),则增量变换 ΔT\Delta \boldsymbol{T}ΔT 的定义需满足:ΔT\Delta \boldsymbol{T}ΔT 的旋转轴/平移方向由​​世界坐标系的轴向​​决定,与机器人当前姿态无关

因此,先将局部坐标 Plocal\boldsymbol{P}_{\text{local}}Plocal 通过 Tcurrent\boldsymbol{T}_{current}Tcurrent 映射到世界坐标系,得 Pworld\boldsymbol{P}_{world}Pworld。再在世界坐标系中应用全局变换 ΔT\Delta \boldsymbol{T}ΔT,得到新坐标 ΔT⋅Pworld\Delta \boldsymbol{T} \cdot \boldsymbol{P}_{world}ΔTPworld。即有:
ΔT⋅(Tcurrent⋅Plocal)=(ΔT⋅Tcurrent)⋅Plocal⇒Tnew=ΔT⋅Tcurrent\Delta \boldsymbol{T} \cdot (\boldsymbol{T}_{current} \cdot \boldsymbol{P}_{\text{local}}) = (\Delta \boldsymbol{T} \cdot \boldsymbol{T}_{current}) \cdot \boldsymbol{P}_{\text{local}} \Rightarrow \boldsymbol{T}_{new} = \Delta \boldsymbol{T} \cdot \boldsymbol{T}_{current} ΔT(TcurrentPlocal)=(ΔTTcurrent)PlocalTnew=ΔTTcurrent此即左乘公式​​,表明新位姿是全局变换与当前位姿的左乘组合

2. 局部坐标系下机器人位姿增量更新的右乘法则​

如果机器人需执行一个在当前局部坐标系(例如机器人自身坐标系)中描述的运动变换 ΔT\Delta \boldsymbol{T}ΔT。例如:

  • 沿自身 X 轴移动 3 米:ΔT=[1003010000100001]\Delta \boldsymbol{T} = \begin{bmatrix} 1 & 0 & 0 & 3 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}ΔT=1000010000103001
  • 绕自身 Z 轴旋转 90°:ΔT=[0−100100000100001]\Delta \boldsymbol{T} = \begin{bmatrix} 0 & -1 & 0 & 0 \\ 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}ΔT=0100100000100001

则执行该运动后的机器人新位姿 Tnew\boldsymbol{T}_{\text{new}}Tnew 为当前位姿 Tcurrent\boldsymbol{T}_{\text{current}}Tcurrent 右乘该增量变换:
Tnew=TcurrentΔT\boldsymbol{T}_{\text{new}} = \boldsymbol{T}_{\text{current}} \Delta \boldsymbol{T} Tnew=TcurrentΔT对于在运动前的局部坐标系中定义的任意点 Plocal\boldsymbol{P}_{\text{local}}Plocal,应用变换 Tnew\boldsymbol{T}_{\text{new}}Tnew 将其映射到世界坐标系的结果,等同于先在原局部坐标系中应用增量变换 ΔT\Delta \boldsymbol{T}ΔT 得到 ΔTPlocal\Delta \boldsymbol{T} \boldsymbol{P}_{\text{local}}ΔTPlocal,然后将该结果再通过原当前位姿 Tcurrent\boldsymbol{T}_{\text{current}}Tcurrent 映射到世界坐标系。即:
TnewPlocal=Tcurrent(ΔTPlocal)\boldsymbol{T}_{\text{new}} \boldsymbol{P}_{\text{local}} = \boldsymbol{T}_{\text{current}} (\Delta \boldsymbol{T} \boldsymbol{P}_{\text{local}}) TnewPlocal=Tcurrent(ΔTPlocal)

3. 相对位姿的计算

相对位姿描述了两个坐标系之间的变换关系,包括旋转和平移,是机器人导航、三维重建、多传感器融合等领域的核心问题。

T1\boldsymbol{T}_1T1T2\boldsymbol{T}_2T2 分别表示相机在时刻 t1t_1t1t2t_2t2 位姿变换矩阵。现从两个角度计算 T1\boldsymbol{T}_1T1T2\boldsymbol{T}_2T2 的相对位姿 ΔT\Delta \boldsymbol{T}ΔT

3.1. 基于世界坐标系(全局变换)

相对位姿 ΔTglobal\Delta \boldsymbol{T}_{\text{global}}ΔTglobal 在世界坐标系中定义,其数学表达为:
ΔTglobal=T2−1T1\Delta \boldsymbol{T}_{\text{global}} = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1 ΔTglobal=T21T1其中,ΔTglobal\Delta \boldsymbol{T}_{\text{global}}ΔTglobal 的平移和旋转方向由世界坐标系的轴向决定。
推导如下:
世界坐标系中的点 Pw\boldsymbol{P}_wPwt1t_1t1t2t_2t2 时刻相机坐标系中的位置分别为 p1\boldsymbol{p}_1p1p2\boldsymbol{p}_2p2,根据位姿定义:
Pw=T1p1=T2p2\boldsymbol{P}_w = \boldsymbol{T}_1 \boldsymbol{p}_1 = \boldsymbol{T}_2 \boldsymbol{p}_2 Pw=T1p1=T2p2则有:
p2=T2−1Pw=T2−1T1p1⇒ΔTglobal=T2−1T1\boldsymbol{p}_2 = \boldsymbol{T}_2^{-1} \boldsymbol{P}_w = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1 \boldsymbol{p}_1 \Rightarrow \Delta \boldsymbol{T}_{\text{global}} = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1 p2=T21Pw=T21T1p1ΔTglobal=T21T1T1=[R1t10T1]\boldsymbol{T}_1 = \begin{bmatrix} \boldsymbol{R}_1 & \boldsymbol{t}_1 \\ \boldsymbol{0}^T & 1 \end{bmatrix}T1=[R10Tt11]T2=[R2t20T1]\boldsymbol{T}_2 = \begin{bmatrix} \boldsymbol{R}_2 & \boldsymbol{t}_2 \\ \boldsymbol{0}^T & 1 \end{bmatrix}T2=[R20Tt21],则有:
ΔTglobal=T2−1T1=[R2T−R2Tt20T1][R1t10T1]=[R2TR1R2Tt1−R2Tt20T1]\Delta \boldsymbol{T}_{\text{global}} = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1 = \begin{bmatrix} \boldsymbol{R}_2^T & -\boldsymbol{R}_2^T \boldsymbol{t}_2 \\ \boldsymbol{0}^T & 1 \end{bmatrix} \begin{bmatrix} \boldsymbol{R}_1 & \boldsymbol{t}_1 \\ \boldsymbol{0}^T & 1 \end{bmatrix} = \begin{bmatrix} \boldsymbol{R}_2^T \boldsymbol{R}_1 & \boldsymbol{R}_2^T \boldsymbol{t}_1 -\boldsymbol{R}_2^T \boldsymbol{t}_2 \\ \boldsymbol{0}^T & 1 \end{bmatrix} ΔTglobal=T21T1=[R2T0TR2Tt21][R10Tt11]=[R2TR10TR2Tt1R2Tt21]

3.2. 基于 t1t_1t1 时刻相机的局部坐标系(局部变换)

相对位姿 ΔTlocal\Delta \boldsymbol{T}_{\text{local}}ΔTlocal t1t_1t1 时刻相机自身的坐标系中定义,其数学表达为:
ΔTlocal=T1−1⋅T2\Delta \boldsymbol{T}_{\text{local}} = \boldsymbol{T}_1^{-1} \cdot \boldsymbol{T}_2 ΔTlocal=T11T2其中,ΔTlocal\Delta \boldsymbol{T}_{\text{local}}ΔTlocal 的平移和旋转方向由 t1t_1t1 时刻相机的朝向决定。
上述公式根据局部坐标系下机器人位姿增量更新的右乘法则​易得,且有:
ΔTlocal=T1−1⋅T2=[R1T−R1Tt10T1][R2t20T1]=[R1TR2R1Tt2−R1Tt10T1]\Delta \boldsymbol{T}_{\text{local}} = \boldsymbol{T}_1^{-1} \cdot \boldsymbol{T}_2 = \begin{bmatrix} \boldsymbol{R}_1^T & -\boldsymbol{R}_1^T \boldsymbol{t}_1 \\ \boldsymbol{0}^T & 1 \end{bmatrix} \begin{bmatrix} \boldsymbol{R}_2 & \boldsymbol{t}_2 \\ \boldsymbol{0}^T & 1 \end{bmatrix} = \begin{bmatrix} \boldsymbol{R}_1^T \boldsymbol{R}_2 & \boldsymbol{R}_1^T \boldsymbol{t}_2 - \boldsymbol{R}_1^T \boldsymbol{t}_1 \\ \boldsymbol{0}^T & 1 \end{bmatrix} ΔTlocal=T11T2=[R1T0TR1Tt11][R20Tt21]=[R1TR20TR1Tt2R1Tt11]

3.3. 两者区别

角度数学公式坐标系依赖乘法顺序
世界坐标系(全局)ΔTglobal=T2−1T1\Delta \boldsymbol{T}_{\text{global}} = \boldsymbol{T}_2^{-1} \boldsymbol{T}_1ΔTglobal=T21T1世界坐标系轴向固定左乘
t1t_1t1 相机坐标系(局部)ΔTlocal=T1−1T2\Delta \boldsymbol{T}_{\text{local}} = \boldsymbol{T}_1^{-1} \boldsymbol{T}_2ΔTlocal=T11T2依赖 t1t_1t1 时刻相机自身朝向右乘

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

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

相关文章

【保姆级喂饭教程】Idea中配置类注释模板

目录一、配置类注释模板一、配置类注释模板 在idea中配置以下内容 打开路径 File - Settings - Editor - File and Code Templates - Includes - File Header ${USER}默认为系统账户名称,一般不是需要的,实际使用的时候换成自己的姓名缩写小写 /*** &l…

AntV G6 基础元素详解(React版)

一、初识 AntV G6 AntV G6 是蚂蚁集团推出的专业级图可视化引擎,适合构建关系图谱、拓扑图、流程图等场景。相比其他图形库,G6 提供完整的布局算法 和交互体系 ,开发者在 10 分钟内即可搭建可交互的图应用。 技术特点速览: 支持 C…

web安全入门 | 记新手小白初次尝试挖越权漏洞

目录 中华人民共和国网络安全法 文章内容仅用于以防御为目的的演示请勿用于其他用途,否则后果自负 前言 渗透思路 渗透过程 第一步:注册测试账号 分析请求与响应 取消预约测试 越权测试 参考 中华人民共和国网络安全法 第二十七条 任何个人和组…

【Redis 】看门狗:分布式锁的自动续期

在分布式系统的开发中,保证数据的一致性和避免并发冲突是至关重要的任务。Redis 作为一种广泛使用的内存数据库,提供了实现分布式锁的有效手段。然而,传统的 Redis 分布式锁在设置了过期时间后,如果任务执行时间超过了锁的有效期&…

SAP NWBC WELCOME_MESSAGE

背景: 系统升级完首页不显示 WELCOME_MESSAGE Table:NWBC_CFG 里面有配置 但是WELCOME_MESSAGE不显示后debug分析发现换表了: 使用T-code: /N /UI2/CUST去维护 然后NWBC首页就会显示

使用Node搭建一个直播服务器,实时直播当前桌面

初始条件 Node20 需要本机安装好ffmpeg,并且版本7.0,可以查看我写的这个文章来安装 初始化项目 mkdir node-live cd node-live npm init -y安装依赖 npm install node-media-serverNode-Media-Server 是一款基于 Nodejs 开发的高性能/低延迟/开源…

Springboot 文件下载(Excel) + Vue前端下载按钮

看了网上的一些文件下载博客讲的太多了,我只想要完成这个事情,所以写一篇简洁一点的教程 我这里的代码是针对 Excel表格的,如果你是其它类型的文件就要看详细一点,如果你也是Excel 直接复制去用即可 我是把文件直接放到项目的 …

STM32-I2C

数据协议层有效性规定:SCL高电平,SDA数据必须稳定;SCL低,SDA允许变化数据;以字节为单位;8bit起始信号-主机占用-终止信号(都是主机发)应答相应-检测位;接收端控制SDA来实…

下一代防火墙web防护

目录 概要 整体架构流程 技术细节 实验步骤 小结 概要 下一代防火墙(NGFW)的Web防护功能通过深度包检测(DPI)、行为分析和机器学习技术,识别并阻断Web应用层威胁。防护范围包括SQL注入、XSS跨站脚本、CSRF攻击等OWASP…

Selenium动态网页爬虫编写与解释

使用Selenium来抓取动态网页。动态网页通常是指那些通过JavaScript动态加载内容的网页,这些内容在初始HTML中并不存在,因此使用传统的requests库无法获取到这些动态生成的内容。Selenium可以模拟浏览器行为,等待JavaScript执行并渲染页面&…

Spring AI之Prompt开发

文章目录1 提示词工程1_核心策略2_减少模型“幻觉”的技巧2 提示词攻击防范1_提示注入(Prompt Injection)2_越狱攻击(Jailbreaking)3 数据泄露攻击(Data Extraction)4 模型欺骗(Model Manipulat…

Python密码学库之pycryptodome使用详解

概要 pycryptodome是一个功能强大的Python密码学库,是pycrypto库的现代化替代品。它提供了全面的密码学功能,包括对称加密、非对称加密、哈希算法、数字签名等。该库具有良好的性能、安全性和易用性,广泛应用于网络安全、数据保护、身份验证等领域。 安装 1、安装命令 pi…

分布式光伏发电系统中的“四可”指的是什么?

在分布式光伏电站规模爆发式增长的今天,“看不见、管不住、调不动”的难题却成为行业痛点。如何让散布各处的光伏电站真正成为稳定高效的“绿色能量站”?2025年《分布式光伏发电开发建设管理办法》大型工商业项目(≥6MW)明确要求具…

敏捷开发卡在需求分析?飞算 JavaAI 加速需求确认与功能迭代

在敏捷开发中,需求分析常成为团队推进的 “卡点”—— 模糊的需求描述、反复的需求变更、拆解落地难等问题,往往导致迭代周期延长。而飞算 JavaAI 作为专为 Java 开发设计的工具,正通过 “需求理解 - 接口设计 - 代码生成” 的全流程智能化&a…

MMYSQL刷题

SELECT DISTINCT university FROM user_profile;SELECT university FROM user_profile GROUP BY university;SELECT device_id user_infos_example from user_profile order by id limit 2; SELECT device_id user_infos_example from user_profile limit 2; //1.as 写不写都可…

Allure + JUnit5

Allure 介绍 什么是 Allure ? Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开发过程的每个人可以从日常执行的测试中,最大限度地提取有用信息。Allure …

深度解析:基于EasyX的C++黑白棋AI实现 | 算法核心+图形化实战

摘要 本文详解C黑白棋AI实现,使用EasyX图形库打造完整人机对战系统。涵盖: 递归搜索算法(动态规划优化) 棋盘状态评估函数设计 图形界面与音效集成 胜负判定与用户交互 附完整可运行代码资源文件,提供AI难度调节方案…

如何用正则表达式解决力扣算法题:3136有效单词

题目详情解题所需正则表达式 word.matches("(?i)(?.*[aeiou])(?.*[^aeiou0-9])[a-z0-9]{3,}");逐段解析:(?i) 不区分大小写标志,后续匹配忽略字母大小写(如 A 和 a 视为相同)。(?.*[aeiou]) 正向预查:确…

RAG优化秘籍:基于Tablestore的知识库答疑系统架构设计

目录一、技术架构设计二、双流程图解析横向架构对比纵向核心流程三、企业级代码实现Python检索核心TypeScript前端接入YAML部署配置四、性能对比验证五、生产级部署方案六、技术前瞻分析附录:完整技术图谱一、技术架构设计 原创架构图 #mermaid-svg-3Ktoc4oH4xlbD6…

OCR 赋能档案数字化:让沉睡的档案 “活” 起来

添加图片注释,不超过 140 字(可选)企业产品档案包含设计图纸、检测报告、生产记录等,传统数字化仅靠扫描存档,后续检索需人工逐份翻阅,效率极低。​OCR 产品档案解决方案直击痛点:通过智能识别技…