四元数导数,四元数变化率运动学方程

2024-04-20 09:52

本文主要是介绍四元数导数,四元数变化率运动学方程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

四元数乘法

这里首先需要介绍四元数乘法,假设有两个四元数 q a , q b q_a, q_b qa,qb,如下所示:
q a = q a 0 + q a 1 i + q a 2 j + q a 3 k = [ s a , v a ] T q b = q b 0 + q b 1 i + q b 2 j + q b 3 k = [ s b , v b ] T \begin{aligned} q_a &= q_{a0} + q_{a1}i + q_{a2}j + q_{a3}k = [s_a,v_a]^T \\ q_b &= q_{b0} + q_{b1}i + q_{b2}j + q_{b3}k = [s_b,v_b]^T \end{aligned} qaqb=qa0+qa1i+qa2j+qa3k=[sa,va]T=qb0+qb1i+qb2j+qb3k=[sb,vb]T
乘法运算为 ⊗ \otimes ,则有
q a ⊗ q b = [ s a s b − v a T v b , s a v b + s b v a + v a × v b ] T q_a\otimes q_b = [s_as_b-v_a^Tv_b,s_av_b+s_bv_a+v_a \times v_b]^T qaqb=[sasbvaTvb,savb+sbva+va×vb]T

四元数变化率运动学方程

q ∙ = 1 2 [ 0 , ω ] T ⊗ q \mathop q\limits^ \bullet = \frac{1}{2}[0,\omega]^T\otimes q q=21[0,ω]Tq
假设 q = [ s , v ] T q=[s,v]^T q=[s,v]T,即
q ∙ = 1 2 [ − ω T ⋅ v , s ⋅ ω + ω × v ] T \mathop q\limits^ \bullet = \frac{1}{2}[-\omega^T\cdot v, s\cdot \omega+\omega \times v]^T q=21[ωTv,sω+ω×v]T

证明

假设机器人在当前Body系下 t t t 时刻的位姿四元数为 q = [ s , v ] T q=[s,v]^T q=[s,v]T,在接下来的 δ t \delta t δt时间内,发生了 δ q \delta q δq四元数表示的旋转,假设该旋转以 n n n 为轴,旋转了 δ θ \delta \theta δθ 度,即 δ q = [ c o s δ θ 2 , n ⋅ s i n δ θ 2 ] \delta q = [cos\frac{\delta \theta}{2},n\cdot sin\frac{\delta \theta}{2}] δq=[cos2δθ,nsin2δθ]。则有
q ∙ = lim ⁡ δ t → 0 δ q ⊗ q − q δ t = lim ⁡ δ t → 0 [ c o s δ θ 2 , n ⋅ s i n δ θ 2 ] ⊗ [ s , v ] T − [ s , v ] δ t = lim ⁡ δ t → 0 [ s ⋅ c o s δ θ 2 − ( n ⋅ s i n δ θ 2 ) T ⋅ v , c o s δ θ 2 ⋅ v + s ⋅ ( n ⋅ s i n δ θ 2 ) + ( n ⋅ s i n δ θ 2 ) × v ] − [ s , v ] δ t = lim ⁡ δ t → 0 [ s ( ⋅ c o s δ θ 2 − 1 ) − ( n ⋅ s i n δ θ 2 ) T ⋅ v , ( c o s δ θ 2 − 1 ) ⋅ v + s ⋅ ( n ⋅ s i n δ θ 2 ) + ( n ⋅ s i n δ θ 2 ) × v ] δ t \begin{aligned} \mathop q\limits^ \bullet &= \mathop {\lim }\limits_{\delta t \to 0} \frac{\delta q \otimes q- q}{\delta t } \\ & = \mathop {\lim }\limits_{\delta t \to 0} \frac{[cos\frac{\delta \theta}{2},n\cdot sin\frac{\delta \theta}{2}]\otimes [s,v]^T - [s,v]}{\delta t} \\ & = \mathop {\lim }\limits_{\delta t \to 0} \frac{[s \cdot cos\frac{\delta \theta}{2} - \left(n\cdot sin\frac{\delta \theta}{2}\right)^T\cdot v, cos\frac{\delta \theta}{2}\cdot v + s\cdot \left(n\cdot sin\frac{\delta \theta}{2}\right) + \left(n\cdot sin\frac{\delta \theta}{2}\right)\times v] - [s,v]}{\delta t} \\ & = \mathop {\lim }\limits_{\delta t \to 0} \frac{[s \left(\cdot cos\frac{\delta \theta}{2} - 1\right) - \left(n\cdot sin\frac{\delta \theta}{2}\right)^T\cdot v, \left(cos\frac{\delta \theta}{2} - 1\right)\cdot v + s\cdot \left(n\cdot sin\frac{\delta \theta}{2}\right) + \left(n\cdot sin\frac{\delta \theta}{2}\right)\times v]}{\delta t} \\ \end{aligned} q=δt0limδtδqqq=δt0limδt[cos2δθ,nsin2δθ][s,v]T[s,v]=δt0limδt[scos2δθ(nsin2δθ)Tv,cos2δθv+s(nsin2δθ)+(nsin2δθ)×v][s,v]=δt0limδt[s(cos2δθ1)(nsin2δθ)Tv,(cos2δθ1)v+s(nsin2δθ)+(nsin2δθ)×v]
c o s , s i n cos, sin cos,sin泰勒展开,只保留一阶以下部分,即:
c o s δ θ 2 ≈ 1 s i n δ θ 2 ≈ δ θ 2 \begin{aligned} cos\frac{\delta \theta}{2} &\approx 1 \\ sin\frac{\delta \theta}{2} &\approx \frac{\delta \theta}{2} \end{aligned} cos2δθsin2δθ12δθ
代入上式,得:
q ∙ = lim ⁡ δ t → 0 [ − ( n ⋅ δ θ 2 ) T ⋅ v , s ⋅ n ⋅ δ θ 2 + ( n ⋅ δ θ 2 ) × v ] δ t = 1 2 lim ⁡ δ t → 0 [ − ( n ⋅ δ θ ) T ⋅ v , s ⋅ n ⋅ δ θ + ( n ⋅ δ θ ) × v ] δ t = 1 2 [ − ( lim ⁡ δ t → 0 n ⋅ δ θ δ t ) T ⋅ v , s ⋅ ( lim ⁡ δ t → 0 n ⋅ δ θ δ t ) + ( lim ⁡ δ t → 0 n ⋅ δ θ δ t ) × v ] \begin{aligned} \mathop q\limits^ \bullet &= \mathop {\lim }\limits_{\delta t \to 0} \frac{[- \left(n\cdot \frac{\delta \theta}{2}\right)^T\cdot v, s\cdot n\cdot \frac{\delta \theta}{2} + \left(n\cdot \frac{\delta \theta}{2}\right)\times v]}{\delta t} \\ &= \frac{1}{2}\mathop {\lim }\limits_{\delta t \to 0} \frac{[- \left(n\cdot \delta \theta\right)^T\cdot v, s\cdot n\cdot \delta \theta + \left(n\cdot \delta \theta\right)\times v]}{\delta t} \\ &=\frac{1}{2}[ - \left(\mathop {\lim }\limits_{\delta t \to 0}n\cdot \frac{\delta \theta}{\delta t}\right)^T\cdot v, s\cdot \left(\mathop {\lim }\limits_{\delta t \to 0}n\cdot \frac{\delta \theta}{\delta t}\right) + \left(\mathop {\lim }\limits_{\delta t \to 0}n\cdot \frac{\delta \theta}{\delta t}\right)\times v] \\ \end{aligned} q=δt0limδt[(n2δθ)Tv,sn2δθ+(n2δθ)×v]=21δt0limδt[(nδθ)Tv,snδθ+(nδθ)×v]=21[(δt0limnδtδθ)Tv,s(δt0limnδtδθ)+(δt0limnδtδθ)×v]
已知
lim ⁡ δ t → 0 n ⋅ δ θ δ t = ω \mathop {\lim }\limits_{\delta t \to 0}n\cdot \frac{\delta \theta}{\delta t} = \omega δt0limnδtδθ=ω
原式变为:
q ∙ = 1 2 [ − ω T ⋅ v , s ⋅ ω + ω × v ] = 1 2 [ 0 , ω ] T ⊗ [ s , v ] T = 1 2 [ 0 , ω ] T ⊗ q \begin{aligned} \mathop q\limits^ \bullet &=\frac{1}{2}[ - \omega^T\cdot v, s\cdot \omega + \omega\times v] \\ & = \frac{1}{2} [0, \omega]^T \otimes [s,v]^T \\ & = \frac{1}{2} [0, \omega]^T \otimes q \end{aligned} q=21[ωTv,sω+ω×v]=21[0,ω]T[s,v]T=21[0,ω]Tq

这篇关于四元数导数,四元数变化率运动学方程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/919935

相关文章

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

OpenGL/GLUT实践:流体模拟——数值解法求解Navier-Stokes方程模拟二维流体(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 实现效果2 实现过程2.1 流体模拟实现2.1.1 网格结构2.1.2 数据结构2.1.3 程序结构1) 更新速度场2) 更新密度值 2.1.4 实现效果 2.2 颜色设置2.2.1 颜色绘制2.2.2 颜色交互2.2.3 实现效果 2.3 障碍设置2.3.1 障碍定义2.3.2 障碍边界条件判定2.3.3 障碍实现2.3.

R语言结构方程模型分析与实践技术应用

结构方程模型(Sructural Equation Model)是一种建立、估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归、因子分析、协方差分析等方法,利用图形化模型方式清晰展示研究系统中变量间的因果网络关系,是近年来地学、生态、进化、环境、医学、社会、经济领域中应用十分广泛的统计方法。然而,自Wright在1920年美国科学院院刊(PNAS)提出第一个通径/路径(Pa

Unity中使用四元数限制旋转

前言         在处理旋转相关的内容的时候,如果使用unity提供的欧拉角描述旋转,会出现一下两种问题 同一旋转的表示不唯一万向节死锁         绕轴90°旋转与绕轴90°+360°旋转的表现是一致的         当某个特定轴达到某个特殊值时,绕一个轴旋转可能会覆盖另一个轴的旋转从而失去一维自由度Unity中x轴达到90度时,会产生万向节死锁。x轴为90度,此时调节y或z轴

2024数学建模国赛A题详细思路:基于空间几何运动学和优化模型matlab求解

2024数学建模国赛A题“板凳龙”闹元宵 2024高教社杯数学建模竞赛A题B题C题D题E题完整成品文章和全部问题的解题代码完整版本更新如下:https://www.yuque.com/u42168770/qv6z0d/rytbc1nelty1mu4o % 定义常量L_head = 3.41; % 龙头长度(米)L_body = 2.20; % 龙身长度(米)spiral_pitch =

解决ax+by=c,不定方程(扩展欧几里得)

首先有几个定理我们需要知道,在这里我也会一一证明。 —————————————————————————————————————— 定理1:gcd(a,b)==gcd(b,a%b);这个是欧几里得提出并证明的。 (%是取余的意思,在数学中 可用mod表示); 以下是证明过程 —————————————————————————————————————— 令a = k * b + r; (k

Python案例 | 使用四阶龙格-库塔法计算Burgers方程

使用四阶龙格-库塔法计算Burgers方程 引言求解过程完整代码 引言 Burgers方程产生于应用数学的各个领域,包括流体力学、非线性声学、气体动力学和交通流。它是一个基本的偏微分方程,可以通过删除压力梯度项从速度场的Navier-Stokes方程导出。对于黏度系数较小的情况( ν = 0.01 / π \nu = 0.01/ \pi ν=0.01/π),Burgers方程会

强化学习深入学习(一):价值函数和贝尔曼方程

文章目录 0. 引言1. 回报(Return)2. 价值函数(Value Function)3. 贝尔曼期望方程(Bellman Expectation Equation)4. 贝尔曼最优方程(Bellman Optimality Equation)总结 0. 引言 强化学习(Reinforcement Learning, RL)是一种机器学习方法,通过与环境的交互来学习如何

数论 - n元线性同余方程的解法

note:n元线性同余方程因其编程的特殊性,一般在acm中用的很少,这里只是出于兴趣学了一下 n元线性同余方程的概念:   形如:(a1*x1+a2*x2+....+an*xn)%m=b%m           ..................(1) 当然也有很多变形,例如:a1*x1+a2*x2+...+an*xn+m*x(n+1)=b.这两个都是等价的。 判断是否有解:

Ferrari求解四次方程

参考: 1) https://proofwiki.org/wiki/Ferrari’s_Method#google_vignette 2)https://blog.csdn.net/qq_25777815/article/details/85206702