四元数求导

0. Eigen/四元数/欧拉角/旋转矩阵 相关系列文章

  1. SLAM——之Eigen入门(矩阵运算及几何模块)
  2. SLAM——之Eigen函数库,一个相对复杂的EIgen使用实例
  3. SLAM——Eigen函数库:矩阵块运算,block操作
  4. 欧拉角和旋转矩阵相互转换
  5. 四元数与三维向量相乘运算
  6. 四元数求导

1. 四元数求导(四元数/时间)

  1. 四元数关于时间求导的推导 本质:
    求导的定义是函数值的微增量关于自变量的微增量的极限。表示旋转的单位四元数作差后,其不再是单位四元数,也就不是旋转四元数了。单位四元数作差后,得到是被减四元数所在空间的切空间,得到的增量是切空间的微增量,因为是旋转,所以当取极限的时候,切空间的微增量就是函数的微增量,也即四元数对应的导数。
  2. 方式1
    假设任何一个旋转,一定可以写成绕一个轴旋转若干角度的形式。则四元数可以写作 q = [ c o s ( θ 2 ) , n → s i n ( θ 2 ) ] q = [cos(\frac{\theta}{2}), \overrightarrow n sin(\frac{\theta}{2})] q=[cos(2θ),n sin(2θ)]
    其中 θ \theta θ是旋转角度, ω \omega ω是旋转轴。我们假设 $ \overrightarrow n $是关于时间的函数,则四元数可以写成
    q ( t ) = [ c o s ( w t 2 ) , w → w s i n ( w t 2 ) ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 0 ) q(t) = [cos(\frac{wt}{2}), \frac{ \overrightarrow w}{w}sin(\frac{wt}{2})]............................................. (0) q(t)=[cos(2wt),ww sin(2wt)].............................................(0)
    为了书写方便,不带箭头为相应向量的模长。因为瞬时旋转中, ω \omega ω的旋转轴和大小我们认为是不变的,则
    q ′ ( t ) = [ − w 2 s i n ( w t 2 ) , w → w . w 2 c o s ( w t 2 ) ] q'(t) = [ -\frac{ w}{2}sin(\frac{wt}{2}), \frac{ \overrightarrow w}{w}.\frac{ w}{2}cos(\frac{wt}{2})] q(t)=[2wsin(2wt),ww .2wcos(2wt)]
    但常见四元数对时间的导数形式不一样,稍微调整一下:
    q ′ ( t ) = [ − w 2 s i n ( w t 2 ) , w → w . w 2 c o s ( w t 2 ) ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 1 ) q'(t) = [ -\frac{ w}{2}sin(\frac{wt}{2}), \frac{ \overrightarrow w}{w}.\frac{ w}{2}cos(\frac{wt}{2})] ............................................. (1) q(t)=[2wsin(2wt),ww .2wcos(2wt)].............................................(1)
    到此,其实四元数关于时间的导数就已经求解完毕。
    设 两个四元数分别为 q 1 = [ a 1 , v → 1 ] , q 2 = [ a 2 , v → 2 ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 2 ) q_1 = [a_1,\overrightarrow v_1],q_2 = [a_2,\overrightarrow v_2].............................. (2) q1=[a1,v 1],q2=[a2,v 2]..............................(2)
    可得四元数乘法:
    q 1 ⨂ q 2 = [ a 1 a 2 − v 1 . v 2 , a 1 v → 2 + a 2 v → 1 + v → 1 v → 2 ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 3 ) q_1 \bigotimes q_2 = [a_1a_2 -v_1.v_2, a_1 \overrightarrow v_2 + a_2 \overrightarrow v_1 + \overrightarrow v_1\overrightarrow v_2] ............................ (3) q1q2=[a1a2v1.v2,a1v 2+a2v 1+v 1v 2]............................(3)
    对比式(1)(3),通过适凑的方式,可得,
    v → 1 = w → 2 a 1 = 0 v → 2 = w → w . s i n ( w t 2 ) a 2 = c o s ( w t 2 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 4 ) \overrightarrow v_1 = \frac{\overrightarrow w}{2}\\ a_1 =0 \\ \overrightarrow v_2 = \frac{\overrightarrow w}{w}.sin(\frac{ wt}{2}) \\ a_2= cos(\frac{ wt}{2}) .............................. (4) v 1=2w a1=0v 2=ww .sin(2wt)a2=cos(2wt)..............................(4)
    即:
    q 1 = [ 0 , w → 2 ] , q 2 = [ c o s ( w t 2 ) , w → w . s i n ( w t 2 ) ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( 5 ) q_1 = [0,\frac{\overrightarrow w}{2}], q_2 = [cos(\frac{ wt}{2}) , \frac{\overrightarrow w}{w}.sin(\frac{ wt}{2})].............................. (5) q1=[0,2w ],q2=[cos(2wt),ww .sin(2wt)]..............................(5)
    所以可得,
    q ′ ( t ) = [ 0 , w → 2 ] ⨂ [ c o s ( w t 2 ) , w → w . s i n ( w t 2 ) ] = 1 2 [ 0 , w → ] ⨂ q ( t ) q'(t) = [0,\frac{\overrightarrow w}{2}] \bigotimes [cos(\frac{ wt}{2}) , \frac{\overrightarrow w}{w}.sin(\frac{ wt}{2})] \\ =\frac{1}{2} [0,\overrightarrow w]\bigotimes q(t) q(t)=[0,2w ][cos(2wt),ww .sin(2wt)]=21[0,w ]q(t)
    该方法通适凑的方式,巧妙的将四元数求导转化对应到四元数乘法,最后转化到四元数与自身导数的数值关系。

你可能感兴趣的:(SLAM,人工智能)