齐次变换矩阵与运动旋量的指数映射

article/2025/7/5 15:54:54

在三维空间中,刚体的位姿(位置和姿态)可以通过齐次变换矩阵进行描述。齐次变换矩阵是一种 4×4 的矩阵,其一般形式为:

T = [ R p 0 1 ] T=\begin{bmatrix}R&p\\0&1\end{bmatrix} T=[R0p1]

其中, R R R是一个 3×3 的旋转矩阵,用于描述刚体的姿态变化; p p p 是一个 3×1 的位置矢量,用于描述刚体的位置变化;0 是一个 1×3 的零行矢量;1 是一个标量,用于齐次坐标变换。

为了更深入地理解和操作刚体的运动,我们引入了运动旋量和指数映射的概念。运动旋量 ξ ^ \hat{\xi} ξ^ 是一个 6 维矢量,包含线速度 v v v 和角速度 ω \omega ω,表示为:

ξ ^ = [ v ω ] ∧ = [ ω ^ v 0 0 ] \hat{\xi}=\begin{bmatrix}v\\\omega\end{bmatrix}^\wedge=\begin{bmatrix}\hat{\omega}&v\\0&0\end{bmatrix} ξ^=[vω]=[ω^0v0]

其中, ω ^ \hat{\omega} ω^ 是角速度矢量对应的反对称矩阵。

指数映射 e ξ ^ θ e^{\hat{\xi}\theta} eξ^θ 将李代数(运动旋量)映射到李群(齐次变换矩阵),即从运动旋量生成对应的齐次变换矩阵:

T = e ξ ^ θ T=e^{\hat{\xi}\theta} T=eξ^θ

为了推导这个公式,我们需要利用泰勒级数展开和矩阵幂运算的性质。指数映射的展开形式如下:

T = e ξ ^ θ = [ e ω ^ θ ( I − e ω ^ θ ) ( ω × v ) + ω ω T v θ 0 1 ] T=e^{\hat{\xi}\theta}=\begin{bmatrix}e^{\hat{\omega}\theta}&(I-e^{\hat{\omega}\theta})(\omega\times v)+\omega\omega^T v\theta\\0&1\end{bmatrix} T=eξ^θ=[eω^θ0(Ieω^θ)(ω×v)+ωωTvθ1]

其中,旋转部分 e ω ^ θ e^{\hat{\omega}\theta} eω^θ 可以通过罗德里格斯公式展开得到旋转矩阵;平移部分则结合了旋转和平移的效果,通过展开指数映射并整理得到。

为了验证和理解这个公式,我们可以使用 Sympy 来构造和计算这个过程。以下是完整的代码示例:

from sympy import symbols, Matrix, eye, sin, cos, sqrt# 定义符号变量
theta = symbols('theta')
omega_x, omega_y, omega_z = symbols('omega_x omega_y omega_z')
v_x, v_y, v_z = symbols('v_x v_y v_z')omega = Matrix([omega_x, omega_y, omega_z])
v = Matrix([v_x, v_y, v_z])# 构造角速度矢量对应的反对称矩阵
omega_hat = Matrix([[0, -omega_z, omega_y],[omega_z, 0, -omega_x],[-omega_y, omega_x, 0]])# 构造旋转矩阵(罗德里格斯公式)
omega_norm = sqrt(omega_x**2 + omega_y**2 + omega_z**2)
R = eye(3) + sin(omega_norm * theta) * (omega_hat / omega_norm) + (1 - cos(omega_norm * theta)) * (omega_hat**2 / omega_norm**2)# 构造平移部分
I = eye(3)
term1 = (I - R) * (omega.cross(v))
term2 = omega * omega.dot(v) * theta
p = term1 + term2# 构造齐次变换矩阵
T = Matrix([[R[0,0], R[0,1], R[0,2], p[0]],[R[1,0], R[1,1], R[1,2], p[1]],[R[2,0], R[2,1], R[2,2], p[2]],[0, 0, 0, 1]])print("齐次变换矩阵 T:")
print(T)

这段代码首先定义了必要的符号变量,包括角度参数 θ \theta θ、角速度矢量 ω \omega ω 和线速度矢量 v v v。然后,构造了角速度矢量的反对称矩阵 ω ^ \hat{\omega} ω^。接着,利用罗德里格斯公式构造了旋转矩阵 e ω ^ θ e^{\hat{\omega}\theta} eω^θ。平移部分通过结合旋转矩阵和平移矢量 (v) 计算得到。最后,将旋转和平移部分组合成齐次变换矩阵 T T T 并打印输出。

通过这个代码示例,我们可以看到如何利用 Sympy 来构造和计算齐次变换矩阵的指数映射。这种计算方法为我们理解和操作刚体在三维空间中的运动提供了一个强有力的工具。
在这里插入图片描述

在实际应用中,齐次变换矩阵和指数映射的概念在机器人学、计算机视觉和三维计算机图形学等领域有着广泛的应用。例如,机器人学中通过齐次变换矩阵来描述机器人关节的运动,以及通过指数映射来规划和控制机器人的运动轨迹。这些数学工具为我们提供了一种精确和高效的方式来表示和操作刚体的运动,推动了相关领域的发展和创新。


http://www.hkcw.cn/article/EVhYxXKFmN.shtml

相关文章

MySQL DDL操作全解析:从入门到精通,包含索引视图分区表等全操作解析

目录 一、DDL 基础概述 1.1 DDL 定义与作用 1.2 DDL 语句分类 1.3 数据类型与存储引擎 1.3.1 数据类型 1.3.2 存储引擎差异 二、基础 DDL 语句详解 2.1 创建数据库与表 2.1.1 创建数据库 2.1.2 创建表 2.2 修改表结构 2.2.1 添加列 2.2.2 修改列属性 2.2.3 删除列…

torch.randn vs torch.rand

1 分布类型: randn:生成标准正态分布(均值 0,标准差 1) rand:生成 [0, 1) 区间的均匀分布 2 数值范围: randn:可能产生负数(范围 (-∞, ∞)) rand&#xff…

NLP学习路线图(十九):GloVe

自然语言处理(NLP)的核心挑战在于让机器理解人类语言的丰富含义。词向量(Word Embeddings)技术通过将词语映射到高维实数空间,将离散的符号转化为连续的向量,为NLP任务奠定了坚实基础。在众多词向量模型中&…

极客时间:用 FAISS、LangChain 和 Google Colab 模拟 LLM 的短期与长期记忆

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

dify应用探索

一个典型的 Agent Multi-Agent 系统 智能导购会根据用户意图分类并传递给相应商品导购Agent,返回商品信息。采用Multi-Agent架构,其中Router Agent负责对用户问题进行意图 分析,并路由到其它商品导购Agent,商品导购Agent负责向厥客收 集商品…

py爬虫的话,selenium是不是能完全取代requests?

selenium适合动态网页抓取,因为它可以控制浏览器去点击、加载网页,requests则比较适合静态网页采集,它非常轻量化速度快,没有浏览器开销,占用资源少。当然如果不考虑资源占用和速度,selenium是可以替代requ…

c++类和对象-继承

参考链接:46 类和对象-继承-继承方式_哔哩哔哩_bilibili 1.概述 作用:提高代码复用率,多个子类和父类有相同之处,又有自己各自的特点。例如基类人有四肢、会走路、说话,不同子类中国人是黑头发,说汉语&am…

MySQL中的锁

MySQL中有哪些锁? 全局锁(FTWRL) 含义:Flush Table with Read Lock的缩写,它会锁定整个数据库实例,让所有表都处于只读状态。 使用全局锁,要执行的命令: flush tables with read lock 之后,整个数据库就处于只读…

探索 Dify 的工作流:构建智能应用的新范式

目录 前言1. 什么是 Dify 的工作流2. 工作流的核心组成2.1 节点(Node)2.2 连接线(Edge)2.3 上下文与变量系统 3. 工作流的典型使用场景3.1 多轮对话与智能客服3.2 文档问答系统3.3 多语言营销文案生成3.4 多模型对比与评估&#x…

分词算法BBPE详解和Qwen的应用

一、TL;DR BPE有什么问题:依旧会遇到OOV问题,并且中文、日文这些大词汇表模型容易出现训练中未出现过的字符Byte-level BPE怎么解决:与BPE一样是高频字节进行合并,但BBPE是以UTF-8编码UTF-8编码字节序列而非字符序列B…

小云天气APP:精准预报,贴心服务

在快节奏的现代生活中,天气变化对我们的日常生活、出行安排以及健康状况都有着重要影响。一款精准、便捷且功能丰富的天气预报应用,无疑是提升生活品质的必备工具。小云天气APP正是这样一款为安卓用户量身定制的天气预报应用,凭借其精准的天气…

阿里云服务器ECS详细购买流程

1、打开云服务器ECS官方页面 打开阿里云服务器ECS页面 点击进入阿里云服务器 2、付费类型选择 阿里云服务器付费类型 3、地域节点 阿里云服务器全球28个地域,中国大陆地域如华北2(北京)、华东1(杭州)、华南1&#xf…

FastAPI+Pyomo实现线性回归解决饮食问题

之前在 FastAPI介绍-CSDN博客 中介绍过FastAPI,在 Pyomo中线性规划接口的使用-CSDN博客 中使用Pyomo解决饮食问题,这里将两者组合,即FastAPI在服务器端启动,通过Pyomo实现线性回归;客户端通过浏览器获取饮食的最优解。…

【C++篇】STL适配器(上篇):栈与队列的底层(deque)奥秘

💬 欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习! 👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对C感兴趣的…

leetcode刷题日记——二叉树的层次遍历

[ 题目描述 ]: [ 思路 ]: BFS,利用队列特性完成对树的层次遍历运行如下 int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes) {if (!root) {*returnSize 0;return NULL;}struct TreeNode* queue[2000];…

【优选算法 | 队列 BFS】构建搜索流程的核心思维

算法相关知识点可以通过点击以下链接进行学习一起加油!双指针滑动窗口二分查找前缀和位运算模拟链表哈希表字符串模拟栈模拟(非单调栈)优先级队列 很多人学 BFS 的时候都知道“用队列”,但为什么一定是队列?它到底在整个搜索流程中起了什么作…

Retrievers检索器+RAG文档助手项目实战

导读:作为企业级应用开发中的关键技术,LangChain检索器(Retrievers)正成为构建高效RAG系统的核心组件。本文将深入探讨检索器的技术架构与实战应用,帮助开发者掌握这一重要的AI工程技术。 检索器的价值在于提供统一的检…

word中如何快速调整全部表格大小

Step1: 选中一个表格,然后在自动调整选项卡中选择“根据窗口调整表格大小” Step2:选中其他表格 Step3: 按F4即可快速调整

设计模式——中介者设计模式(行为型)

摘要 文章详细介绍了中介者设计模式,这是一种行为型设计模式,通过中介者对象封装多个对象间的交互,降低系统耦合度。文中阐述了其核心角色、优缺点、适用场景,并通过类图、时序图、实现方式、实战示例等多方面进行讲解&#xff0…

20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s

20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s 2025/6/2 18:15 缘起:有些时候,需要在uboot阶段做一些事情。 于是,希望在荣品的PRO-RK3566开发板的Android13下的uboot启动停下。 1、【原始的LOG&#xff…