传感器"/>
VIO:IMU传感器
文章目录
- 1. 旋转运动学
- 1.1 写在前面
- 1.2 问题背景
- 1.3 定义描述问题的坐标系
- 1.4 问题求解
- 1.4.1 速度求解
- 1.4.2 何为角速度?
- 1.4.3 角速度总结
- 1.4.4 加速度求解
- 2. IMU测量模型及运动模型
- 2.1 加速度计和陀螺仪
- 3. IMU误差模型
1. 旋转运动学
1.1 写在前面
这一块本来应该并不难,但是感觉深蓝学院的vio课程讲的有点粗略有点云里雾里的,也可能是我没理解清楚,所以按照自己的理解写了一部分内容。理解不当之处非常希望大家能指出,因为可能理解错了或者复杂了
图一:来自深蓝学院VIO课程
1.2 问题背景
问题背景:三维线性空间 R 3 R^3 R3 中一个向量 r = ( r x , r y , r z ) r=(r_x,r_y,r_z) r=(rx,ry,rz),我们可以使用这个向量r来表示一个质点(机器人)位置,当这个机器人运动时,现在我们要分析当我们站在原地不动(静止坐标系inertial frame)和站在转动的转盘上(转动坐标系body frame)时对这个运动的观测关系。
注意:这个 ( r x , r y , r z ) (r_x,r_y,r_z) (rx,ry,rz)并不是向量 r r r的坐标,只是向量 r r r的分量值。因为现在还没有在线性空间R^3中定义该线性空间的基呢,所以坐标也无从谈起,要讨论运动一定要放在某个坐标系(线性空间中的基向量矩阵)下才可以,所以下面开始定义坐标系。
1.3 定义描述问题的坐标系
如图一所示,设有固定坐标系inertial frame和运动坐标系body frame
设inertial frame的基向量矩阵为: E i = ( x , y , z ) E_i=(x,y,z) Ei=(x,y,z),设body frame的基向量矩阵为: E b = ( i , j , k ) E_b=(i,j,k) Eb=(i,j,k)。
现在定义了线性空间 R 3 R^3 R3的两个基后,我们才可以设向量 r = ( r x , r y , r z ) r=(r_x,r_y,r_z) r=(rx,ry,rz)在相应的基下的坐标,其实也不是设的,是定义了基后算出来的。
设质量块在inertial frame下的坐标为: r i = ( x i , y i , z i ) r_i=(x_i,y_i,z_i) ri=(xi,yi,zi),在body frame下的坐标为: r b = ( x b , y b , z b ) r_b=(x_b,y_b,z_b) rb=(xb,yb,zb)
同时因为inertial frame是全局固定坐标系,所以可以设 E i = ( x , y , z ) = I E_i=(x,y,z)=I Ei=(x,y,z)=I,即单位矩阵,此时 R 3 R^3 R3中向量 r = ( r x , r y , r z ) r=(r_x,r_y,r_z) r=(rx,ry,rz)在基 E i = ( x , y , z ) = I E_i=(x,y,z)=I Ei=(x,y,z)=I下的坐标 r x = x i r y = y i r z = y z ( 1 ) r_x=x_i \quad r_y=y_i \quad r_z=y_z \quad (1) rx=xiry=yirz=yz(1)注意:(1)式中的等号只是在数值上相等,但是左边是坐标值,右边是向量的分量值。又因为R^3 是定义在数域R上的线性空间,R^3中向量的分量也是实数R,所以(1)式可以成立。
这里为什么啰嗦这么多呢,一是因为深蓝vio课程直接给出了结果,定义过程感觉有点模糊,可能大佬们已经很清楚了。二是在机器人学中的状态估计里面这部分内容区分了向量和向量在基下坐标的概念,所里这里理清了一点思路
1.4 问题求解
1.4.1 速度求解
现在用基 E i , E b E_i,E_b Ei,Eb和 r r r在其下对应的坐标表示 r r r,即 r = E i r i = E b r b ( 2 ) r=E_ir_i=E_br_b \quad (2) r=Eiri=Ebrb(2) r i = E i T E b r b = E b r b = R i b r b ( 3 ) r_i=E_i^TE_br_b=E_br_b=R_{ib}r_b \quad (3) ri=EiTEbrb=Ebrb=Ribrb(3)因为,body frame是随着时间的变化不断旋转的,其基向量矩阵即 E b = R i b E_b=R_{ib} Eb=Rib和 E b E_b Eb中的坐标 r b r_b rb也是时间的函数。现在对式 r i = R i b r b r_i=R_{ib}r_b ri=Ribrb两端对时间t求导
r i ′ = R i b r b ′ + R i b ′ r b = R r b r b ′ + w × R i b r b = R r b r b ′ + w × r i ( 4 ) \begin{aligned} r_i'&=R_{ib}r_b'+R_{ib}'r_b \\&=R_{rb}r_b'+w\times R_{ib}r_b \\ &=R_{rb}r_b'+w\times r_i \end{aligned} \quad (4) ri′=Ribrb′+Rib′rb=Rrbrb′+w×Ribrb=Rrbrb′+w×ri(4)这个 w w w表示的是角速度,
若用 v i , v b v_i,v_b vi,vb分别表示 r i ′ , r b ′ r_i',r_b' ri′,rb′则(4)式可写作如下 v i = R r b v b + w × r b v_i=R_{rb}v_b+w\times r_b vi=Rrbvb+w×rb这个地方我学的时候感觉也有些忙模糊,对这个概念的理解还停留在小学。。。,现在在回来研究一下这个小学学过的内容~
1.4.2 何为角速度?
首先,借用深蓝学院vio课程中的推导内容初步理解一下角速度,如图二所示
图二:来自深蓝学院
也就是说,某一点 r r r绕某一个旋转轴做圆周运动时,
坐标变换的速度(即线速度)向量= 角速度向量 × \times × r r r与坐标原点连线所得的向量
考察模长时,即线速度 = 角速度*半径
现在,我们把上述推导推广一下,即当某个坐标系(比如body frame)绕着角速度向量 w w w转动时,情况会怎样呢?
图三:来自手绘
如图三所示,当坐标系body绕着向量 w w w旋转时,各个基向量 e i e_i ei也是在绕着 w w w做圆周运动,类比上面的推导,现在我们可以定义角速度向量 w w w如下
e i ′ = w × e i ∣ e i ′ ∣ = ∣ w ∣ ∗ ∣ e i ∣ ∗ s i n ( θ ) ( 5 ) ∣ e i ′ ∣ = ∣ w ∣ ∗ R \begin{aligned} e_i'&=w\times e_i \\|e_i'|&=|w|*|e_i|*sin(\theta) \quad(5)\\|e_i'|&=|w|*R \end{aligned} ei′∣ei′∣∣ei′∣=w×ei=∣w∣∗∣ei∣∗sin(θ)(5)=∣w∣∗R当我们按照(5)式定义角速度时,我们可以得到线速度=角速度*半径,同时可以看到 e i ′ e_i' ei′方向也是线速度的运动方向。
1.4.3 角速度总结
个人理解总结,欢迎讨论或者直接告诉我
通过1.4.1的推导,可以看到角速度就是描述旋转(圆周运动)的一个量。
比如说,我们说body frame相对于inertial frame在旋转,那你旋转总有个旋转轴吧,那么这个旋转轴的方向就是角速度向量的方向,而角速度向量的模长就是角速度的大小。
1.4.4 加速度求解
2. IMU测量模型及运动模型
2.1 加速度计和陀螺仪
加速度计和陀螺仪就是用来分别测量物体加速度和旋转角速度的,测量的方式多种多样,知道他俩能测就行了。
3. IMU误差模型
更多推荐
VIO:IMU传感器
发布评论