state estimation 学习笔记

0.状态估计:状态估计目的是估计带未知扰动的确定系统的trajectory

0.1.姿态估计:估计姿态的trajectory

一个比较少见的记法:w^{B}_{WB}表示B系相对于W系的角速度,投影在B系

因为运动是相对的,总是有一个运动的相对于一个静止的,这里运动的是B系,静止的是W系

1.坐标系:在进行算法设计时,第一步就是确定坐标系,先定义几个坐标系作为基础:

在算法中需要用到的坐标系有:世界坐标系(ENU)、机体坐标系(前左上)、中间坐标系(Bodyheading)

bodyheading坐标系:x为机头朝向(与地面平行),y为朝向机头左方(与地面平行),z为上方

然后在估计算法里面估计的四元数就是q_{Body}^{ENU}

这个四元数可分解为:q_{Body}^{ENU}=q_{Bodyheading}^{ENU}\otimes q_{Body}^{Bodyheading}

整个系统讨论的四元数都是单位四元数,只有单位四元数才能正确表示旋转和姿态,所以每次处理完四元数后都要对四元数进行单位化处理

2.旋转表示:R_{Body}^{ENU}表示Body系在ENU系的坐标表示,q_{Body}^{ENU}表示ENU系旋转到Body系,二者的关系是R_{Body}^{ENU}=R(q_{Body}^{ENU})

所以R_{Body}^{ENU}q_{Body}^{ENU}表示的是同一个姿态

旋转矩阵的另一种表述方式:

R_{Body}^{World}=[x_{Body}^{World} \ y_{Body}^{World} \ z_{Body}^{World} ]R_{Body}^{World} 的各列就是Body系各坐标轴在World系中的投影

R_{World}^{Body}=[x_{World}^{Body} \ y_{World}^{Body} \ z_{World}^{Body} ]R_{World}^{Body} 的各列就是World系各坐标轴在Body系中的投影

3.矢量观测:通过观测重力向量和地磁向量在机体系的值来确定飞行器的姿态

反重力向量:a^{ENU}=[0 \ 0 \ 1]^T,地磁向量:m^{ENU}=[0 \ m_y^{ENU} \ m_z^{ENU}]^T

这里写一下旋转矩阵的性质:

1.转置=逆 一般矩阵不具备这样的特性:R_A^B=(R_B^A)^T 四元数:q_A^B=(q_B^A)^*

2.旋转矩阵*旋转矩阵后还是一个旋转矩阵

4.加速度传感器模型:a^{Body}=R^{Body}_{ENU}(\dot{v}^{ENU}-g),其中\dot{v}表示机体系的速度,g=[0 \ 0 \ -9.8m/s^2]^T

单传感器测量方法:如何测量姿态?

5.陀螺仪测量姿态:陀螺仪测量的是机体角速度,他和四元数之间是“积分”的关系,陀螺仪描述的就是“旋转”。

抽象成数学问题,表述如下:

已知t_{k-1}时刻的四元数{q}_{Body(t_{k-1})}^{ENU},采样时间\Delta t=t_k-t_{k-1}t_k时刻的机体角速度{\omega}^{Body(t_k)},现要求t_k时刻的四元数{q}_{Body(t_k)}^{ENU}

可知四元数微分方程为:\dot{q}_{Body(t_k)}^{ENU}=\frac{1}{2} {q}_{Body(t_{k-1})}^{ENU} \otimes {\omega}^{Body(t_k)},还有其逆\dot{q}_{ENU}^{Body(t_k)}=-\frac{1}{2} {\omega}^{Body(t_k)} \otimes q_{ENU}^{Body(t_k)}

写成矩阵形式的微分方程为:\dot{q}_{Body(t_k)}^{ENU}=\frac{1}{2} \left[ \begin{matrix} 0 & -(w^{Body(t_k)})^T \\ w^{Body(t_k)} & -[w^{Body(t_k)}]_{\times} \end{matrix} \right] {q}_{Body(t_{k-1})}^{ENU},具体展开就是\dot{q}_{Body(t_k)}^{ENU}=\frac{1}{2} \left[ \begin{matrix} 0 & -w^{Body(t_k)}_x & -w^{Body(t_k)}_y & -w^{Body(t_k)}_z\\ w^{Body(t_k)}_x & 0 & w^{Body(t_k)}_z & -w^{Body(t_k)}_y\\ w^{Body(t_k)}_y & -w^{Body(t_k)}_z & 0 & w^{Body(t_k)}_x\\ w^{Body(t_k)}_z & w^{Body(t_k)}_y & -w^{Body(t_k)}_x & 0 \end{matrix} \right] {q}_{Body(t_{k-1})}^{ENU}

离散则有{q}_{Body(t_k)}^{ENU}={q}_{Body(t_{k-1})}^{ENU}+{\dot{q}}_{Body(t_k)}^{ENU}\Delta t

加速度计测量姿态:加速度计测量的是比力,就是合外力减去重力后的整体加速度

这里要注意的是,加速度计只能测量q_{Body}^{Bodyheading}(roll,pitch分量),要保证飞机不炸鸡就要融合好陀螺仪和加速度计啦

测量原理:R_{ENU}^{Body}a^{ENU}=a^{Body},可得a^{Body}= \left[ \begin{matrix} -sin\theta \\ cos\theta sin\phi \\ cos\theta cos\phi \end{matrix} \right]

实际上这里隐藏一个重要的结论:加速度的测量向量等于反重力向量(在小加速度前提下)

则有:pitch=arcsin(-a^{Body}_x)roll=arctan(\frac{a^{Body}_y}{a^{Body}_z})

6.欧拉角->旋转矩阵:欧拉角的定义是相对旋转的z-y-x,yaw是\psi,pitch是\theta,roll是\phi

采用相对变换的描述:R_{Body}^{ENU}=R(\psi)R(\theta)R(\phi)

各个轴的旋转矩阵:R(\psi)= \left[ \begin{matrix} cos\psi & - sin\psi & 0 \\ sin\psi & cos\psi & 0 \\ 0 & 0 & 1 \end{matrix} \right]R(\theta)= \left[ \begin{matrix} cos\theta & 0 & sin\theta \\ 0 & 1 & 0 \\ -sin\theta & 0 & cos\theta \end{matrix} \right]R(\phi)= \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & cos\phi & -sin\phi \\ 0 & sin\phi & cos\phi \end{matrix} \right]

ENU->Body:R_{Body}^{ENU}= R(\psi)R(\theta)R(\phi)= \left[ \begin{matrix} cos\theta cos\psi & cos\psi sin\theta sin\phi - sin\psi cos\phi & cos\psi sin\theta cos\phi + sin\psi sin\phi \\ cos\theta sin\psi & sin\psi sin\theta sin\phi + cos\psi cos\phi & sin\psi sin\theta cos\phi - cos\psi sin\phi \\ -sin\theta & sin\phi cos\theta & cos\phi cos\theta \end{matrix} \right]

Bodyheading->Body:R_{Body}^{Bodyheading}=R(\theta)R(\phi)= \left[ \begin{matrix} cos\theta & sin\theta sin\phi & cos\phi sin\theta \\ 0 & cos\phi & - sin\phi \\ -sin\theta & sin\phi cos\theta & cos\phi cos\theta \end{matrix} \right]

7.四元数->旋转矩阵:

R_{Body}^{ENU}= \left[ \begin{matrix} q_w^2+q_x^2-q_y^2-q_z^2 & 2(q_x q_y-q_w q_z) & 2(q_w q_y+q_x q_z) \\ 2(q_w q_z+q_x q_y) & q_w^2-q_x^2+q_y^2-q_z^2 & 2(q_y q_z-q_w q_x) \\ 2(q_x q_z-q_w q_y) & 2(q_w q_x+q_y q_z) & q_w^2-q_x^2-q_y^2+q_z^2 \end{matrix} \right]

8.四元数->欧拉角:结合上面的公式不难得出

pitch = asin( 2*(q_w*q_y-q_x*q_z) )

roll = atan(\frac{2(q_w*q_x+q_y*q_z)}{1-2*(q_x^2+q_y^2)})

yaw = atan(\frac{2(q_w*q_z+q_x*q_y)}{1-2*(q_y^2+q_z^2)})

9.欧拉角->四元数:

q^{ENU}_{Body}=q_z(\psi)\otimes q_y(\theta)\otimes q_x(\phi),其中q_x(\phi)=[cos\frac{\phi}{2} \ sin\frac{\phi}{2} \ 0 \0]^Tq_y(\theta)=[cos\frac{\theta}{2} \ 0 \ sin\frac{\theta}{2} \0]^Tq_z(\psi)=[cos\frac{\psi}{2} \ 0 \ 0 \sin\frac{\psi}{2}]^T

q_{Body}^{ENU}= \left[ \begin{matrix} cos\frac{\phi}{2} cos\frac{\theta}{2} cos\frac{\psi}{2} + sin\frac{\phi}{2} sin\frac{\theta}{2} sin\frac{\psi}{2} \\ sin\frac{\phi}{2} cos\frac{\theta}{2} cos\frac{\psi}{2} - cos\frac{\phi}{2} sin\frac{\theta}{2} sin\frac{\psi}{2} \\ cos\frac{\phi}{2} sin\frac{\theta}{2} cos\frac{\psi}{2} + sin\frac{\phi}{2} cos\frac{\theta}{2} sin\frac{\psi}{2} \\ cos\frac{\phi}{2} cos\frac{\theta}{2} sin\frac{\psi}{2} - sin\frac{\phi}{2} sin\frac{\theta}{2} cos\frac{\psi}{2} \end{matrix} \right]

10.轴角->四元数:

设轴角u=\theta v,其中\theta是旋转角,v是单位旋转轴,对应四元数q=[cos\frac{\theta}{2} \ \sin\frac{\theta}{2}v^T]^T

11.磁力计测量原理:磁力计零偏超级超级大,不校准原始数据根本不能用

磁力计测量的机体系向量:m^{Body}=[m^{Body}_x \ m^{Body}_y \ m^{Body}_z]^T

将地磁向量从机体系转换到Bodyheading:m^{Bodyheading}=R_{Body}^{Bodyheading}m^{Body}

可求出Bodyheading系的地磁向量为:m^{Bodyheading}= \left[ \begin{matrix} m^b_x cos\theta + m^b_y sin\phi sin\theta + m^b_z cos\phi sin\theta \\ m^b_y cos\phi - m^b_z sin\phi \\ -m^b_x sin\theta + m^b_y sin\phi cos\theta + m^b_z cos\phi cos\theta \end{matrix} \right]

可求出heading与磁北的夹角为:\psi_{mag}=arctan(\frac{m^{Bodyheading}_y}{m^{Bodyheading}_x})

12.反对称矩阵:[a]_{\times}= \left[ \begin{matrix} 0 & - a_z & a_y \\ a_z & 0 & -a_x \\ -a_y & a_x & 0 \end{matrix} \right]

13.小角度的旋转矩阵:R_{Body}^{ENU}= I+\left[ \begin{matrix} 0 & - a_z & a_y \\ a_z & 0 & -a_x \\ -a_y & a_x & 0 \end{matrix} \right]

其中a_xa_ya_z分别是roll、pitch、yaw的小角度

14.欧拉角微分方程:\left[ \begin{matrix} \dot{\phi} \\ \dot{\theta} \\ \dot{\psi} \end{matrix} \right]= \left[ \begin{matrix} 1 & tan\theta sin\phi & tan\theta cos\phi \\ 0 & cos\phi & -sin\phi \\ 0 & sin\phi / cos\theta & cos\phi / cos\theta \end{matrix} \right] \left[ \begin{matrix} w_{x_b} \\ w_{y_b} \\ w_{z_b} \end{matrix} \right]

15.欧拉角取值范围:

roll:-180-180;pitch:-90-90;yaw:-180-180

实际飞行当中,roll和pitch的范围都是30度之内,yaw是全范围都有覆盖

16.当旋转顺序是z-y-x的时候,欧拉角和飞机的姿态角定义重合

17.四元数每次操作后都要单位化

18.旋转的积分是乘法

19.叉乘:a \times b = \left[ \begin{matrix} a_2*b_3 - a_3*b_2 \\ a_3*b_1 - a_1*b_3 \\ a_1*b_2 - a_2*b_1 \end{matrix} \right]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作者:Timothy D. Barfoot ,最新2018高清资源,完整395页,持续更新。 版权归作者所有,任何形式转载请联系作者。 State Estimation for Robotics早已在SLAM领域广为流传,几乎是SLAM入门必读的经典书籍之一。本书深入讲解了状态估计的机理、三维几何学基础、矩阵李群以及位姿和点的估计方法等,尤其对基于滤波器的状态估计方法的介绍全面深刻。现在在高翔、颜沁睿、刘富强等十多位SLAM专家、爱好者的共同努力下,中文译本《机器人学中的状态估计》也终于得以面世。这对于国内广大SLAM爱好者来说,可谓一大福音,值得隆重推荐。 ——浙江大学教授,CAD & CG国家重点实验室计算机视觉团队带头人,章国锋 State Estimation for Robotics是加拿大多伦多大学Barfoot教授的名著,也是机器人方向的经典教材之一。该书侧重数学基础,先花了三分之二的篇幅来介绍概率、几何方面的基础知识,最后又回到应用问题,详细介绍了基于点云和图像的姿态估计。 这是一本难得的既注重基础又顾及前沿研究问题的教材。书的译者是一群对机器人技术富有激情的年轻人,他们中的许多人在计算机视觉、机器人等科研领域开始崭露头角。这本译作倾注了他们的满腔热忱和对国内技术发展的期望。 ——加拿大西蒙弗雷泽大学终身教授,谭平 本书介绍了机器人领域的重要核心技术——状态估计。这本书不只介绍了一些传统的经典算法,也涉及了最新的行业进展和应用,同时还传授了一些基础的数学工具。本书使用严谨的数学语言,同时又深入浅出,是初学者不可多得的良师益友。 ——自动驾驶公司AutoX创始人,原美国普林斯顿大学计算机视觉与机器人实验室主任,麻省理工学院博士 肖健雄

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值