四元数与四元数的相反数(q与-q)
四元数 ( q ) 和它的负数 ( -q ) 实际上代表相同的物理旋转,但它们在数学表达上有细微的不同。
在SLAM(Simultaneous Localization and Mapping,即同时定位与地图构建)领域中,四元数是一种用于表示旋转的有效方法。四元数 ( q ) 和它的负数 ( -q ) 实际上代表相同的物理旋转,但它们在数学表达上有细微的不同。
四元数 ( q ) 与 ( -q )
-
等效性:四元数 ( q ) 和 ( -q ) 表示相同的旋转。这是因为四元数的实部和虚部都取相反数时,相当于将旋转轴反向,同时旋转角度也变为相反方向,这两个变化相互抵消,因此最终的旋转效果是相同的。
-
数值差异:尽管 ( q ) 和 ( -q ) 在几何意义上等价,但在数值计算和存储时,它们是不同的。例如,在SLAM算法中,当使用四元数进行状态估计或数据关联时,如果不对四元数进行适当的归一化处理,可能会导致数值上的不一致,进而影响到算法的性能。
-
选择问题:在实际应用中,有时需要选择一个标准形式来避免这种二义性。例如,可以选择使四元数的实部 ( w ) 非负,或者选择使得四元数的模最大的元素非负,以此来标准化四元数,确保唯一性。
结论
总的来说,在SLAM中,虽然四元数 ( q ) 和 ( -q ) 表示相同的旋转,但是为了保证数值稳定性和算法的一致性,通常会采取措施来消除这种二义性。这可以通过标准化四元数来实现,确保所有使用的四元数都遵循同一套规则。
四元数的基本性质
一个单位四元数 qqq 可以表示为:
q=cos(θ2)+sin(θ2)nq = \cos\left(\frac{\theta}{2}\right) + \sin\left(\frac{\theta}{2}\right) \mathbf{n}q=cos(2θ)+sin(2θ)n
其中:
- cos(θ2)\cos\left(\frac{\theta}{2}\right)cos(2θ) 是四元数的实部。
- sin(θ2)n\sin\left(\frac{\theta}{2}\right) \mathbf{n}sin(2θ)n 是四元数的虚部。
- n\mathbf{n}n是单位向量,表示旋转轴。
- θ\thetaθ 是旋转角度。
四元数 −q-q−q
四元数 −q-q−q可以表示为:
−q=−cos(θ2)−sin(θ2)n-q = -\cos\left(\frac{\theta}{2}\right) - \sin\left(\frac{\theta}{2}\right) \mathbf{n}−q=−cos(2θ)−sin(2θ)n
旋转的几何意义
-
四元数 qqq 的旋转:
- 实部:cos(θ2)\cos\left(\frac{\theta}{2}\right)cos(2θ)
- 虚部:sin(θ2)n\sin\left(\frac{\theta}{2}\right) \mathbf{n}sin(2θ)n
- 表示绕 n\mathbf{n}n 旋转 θ\thetaθ
-
四元数 −q-q−q 的旋转:
- 实部:−cos(θ2)-\cos\left(\frac{\theta}{2}\right)−cos(2θ)
- 虚部:−sin(θ2)n-\sin\left(\frac{\theta}{2}\right) \mathbf{n}−sin(2θ)n
- 表示绕 −n\mathbf{-n}−n 旋转 −θ-\theta−θ
考虑四元数的旋转公式:
我们可以用四元数表达对一个点的旋转。假设有—个空间三维点 p=[x,y,z]∈R3p = [x, y, z] \in \mathbb{R}^3p=[x,y,z]∈R3,以及一个由单位四元数qqq 指定的旋转。三维点 ppp 经过旋转之后变为p′p'p′ 。如果使用矩阵描述,那么有p′=Rpp' = R pp′=Rp 。而如果用四元数描述旋转,它们的关系又如何表达呢?
首先,把三维空间点用一个虚四元数来描述:
p=[0,x,y,z]T=[0,v]Tp = [0, x, y, z]^T = [0, v]^Tp=[0,x,y,z]T=[0,v]T
相当于把四元数的 3 个虚部与空间中的 3 个轴相对应。那么,旋转后的点 p′p'p′可表示为这样的乘积:
p′=qpq−1p' = q p q^{-1}p′=qpq−1
其中 q−1q^{-1}q−1 是 qqq的逆四元数,对于单位四元数qqq,其逆四元数就是其共轭四元数q∗q^*q∗:
q∗=[w,−x,−y,−z]q^* = [w, -x, -y, -z]q∗=[w,−x,−y,−z],这里的乘法均为四元数乘法,结果也是四元数。最后把p′p'p′的虚部取出,即得旋转之后点的坐标。
旋转公式的推导
-
四元数qqq 的旋转:
v′=qvq−1\mathbf{v}' = q \mathbf{v} q^{-1}v′=qvq−1
其中 q−1q^{-1}q−1 是 qqq 的逆,对于单位四元数qqq,有 q−1=q∗q^{-1} = q^*q−1=q∗(共轭):
q−1=cos(θ2)−sin(θ2)nq^{-1} = \cos\left(\frac{\theta}{2}\right) - \sin\left(\frac{\theta}{2}\right) \mathbf{n}q−1=cos(2θ)−sin(2θ)n -
四元数 −q-q−q 的旋转:
v′′=(−q)v(−q)−1\mathbf{v}'' = (-q) \mathbf{v} (-q)^{-1}v′′=(−q)v(−q)−1
其中 (−q)−1(-q)^{-1}(−q)−1 是−q-q−q 的逆,对于单位四元数 −q-q−q,有(−q)−1=−q∗(-q)^{-1} = -q^*(−q)−1=−q∗:
(−q)−1=−(cos(θ2)−sin(θ2)n)(-q)^{-1} = -\left( \cos\left(\frac{\theta}{2}\right) - \sin\left(\frac{\theta}{2}\right) \mathbf{n} \right)(−q)−1=−(cos(2θ)−sin(2θ)n)
(−q)−1=−cos(θ2)+sin(θ2)n(-q)^{-1} = -\cos\left(\frac{\theta}{2}\right) + \sin\left(\frac{\theta}{2}\right) \mathbf{n}(−q)−1=−cos(2θ)+sin(2θ)n
旋转等价性的证明
-
四元数 ( q ) 的旋转:
v′=(cos(θ2)+sin(θ2)n)v(cos(θ2)−sin(θ2)n)\mathbf{v}' = \left( \cos\left(\frac{\theta}{2}\right) + \sin\left(\frac{\theta}{2}\right) \mathbf{n} \right) \mathbf{v} \left( \cos\left(\frac{\theta}{2}\right) - \sin\left(\frac{\theta}{2}\right) \mathbf{n} \right)v′=(cos(2θ)+sin(2θ)n)v(cos(2θ)−sin(2θ)n) -
四元数 ( -q ) 的旋转:
v′′=(−cos(θ2)−sin(θ2)n)v(−cos(θ2)+sin(θ2)n)\mathbf{v}'' = \left( -\cos\left(\frac{\theta}{2}\right) - \sin\left(\frac{\theta}{2}\right) \mathbf{n} \right) \mathbf{v} \left( -\cos\left(\frac{\theta}{2}\right) + \sin\left(\frac{\theta}{2}\right) \mathbf{n} \right)v′′=(−cos(2θ)−sin(2θ)n)v(−cos(2θ)+sin(2θ)n)由于乘法的性质,我们可以提取负号:
v′′=(−1)(cos(θ2)+sin(θ2)n)v(−1)(cos(θ2)−sin(θ2)n)\mathbf{v}'' = \left( -1 \right) \left( \cos\left(\frac{\theta}{2}\right) + \sin\left(\frac{\theta}{2}\right) \mathbf{n} \right) \mathbf{v} \left( -1 \right) \left( \cos\left(\frac{\theta}{2}\right) - \sin\left(\frac{\theta}{2}\right) \mathbf{n} \right)v′′=(−1)(cos(2θ)+sin(2θ)n)v(−1)(cos(2θ)−sin(2θ)n)
v′′=(cos(θ2)+sin(θ2)n)v(cos(θ2)−sin(θ2)n)\mathbf{v}'' = \left( \cos\left(\frac{\theta}{2}\right) + \sin\left(\frac{\theta}{2}\right) \mathbf{n} \right) \mathbf{v} \left( \cos\left(\frac{\theta}{2}\right) - \sin\left(\frac{\theta}{2}\right) \mathbf{n} \right)v′′=(cos(2θ)+sin(2θ)n)v(cos(2θ)−sin(2θ)n)
v′′=v′\mathbf{v}'' = \mathbf{v}'v′′=v′
更多推荐
所有评论(0)