依据imu姿态角计算z轴倾角_1. 姿态的表示方法
刚体的姿态(attitude)有很多种表示方法,关于这个话题有一篇十分出名的综述[1],也是这篇文章的主要资料来源。这篇文章从二维旋转开始,会讨论旋转矢量、旋转矩阵、四元数、欧拉角等旋转的表示方法。在开始讨论前,需要明确的一点是刚体的姿态具有三个自由度,但使用三个参数对姿态进行全局的、没有奇异性的描述已经被证明是不可能的[2],这也是近来IMU姿态估计的方法大多使用四元数或旋转矩阵的原因。
- 二维旋转的表示
相比在三维空间中的旋转,二维旋转十分直观且易于理解。二维旋转指将二维平面上的一个向量
这个商空间可以和平面上的单位圆做一一对应:
其中
2. 旋转矢量(rotation vector)
三维旋转和二维旋转的不同是:二维旋转永远绕着垂直于平面的轴旋转,但三维旋转可以绕三维空间内的任意一根轴旋转。根据欧拉旋转定理,任何一个三维旋转可以表示为绕一根转轴
如果在三维空间内一个向量
最后需要说明的是,当
3. 旋转矩阵(rotation matrix)
类似于二维旋转,
其中
旋转矩阵可以由旋转矢量计算得到:
其中
最后需要说明的是,(4)可以写成指数矩阵的表达形式:
4. 单位四元数(unit quaternion)
四元数是对复数数系的进一步拓展,由四个实数表示:
(i) 乘法:
(ii) 幂:
(iii) 共轭:
(iv) 逆:
对于单位四元数,它的逆运算和共轭运算的结果是一样的。需要注意的是,与旋转矩阵类似,四元数的乘法也是不交换的。
表示一个三维旋转的单位四元数可以由旋转矢量
将
最后,与旋转矩阵类似,一个向量
5. 欧拉角(Euler angles)
欧拉角大概是最常用到的姿态表示方法了,它的思路是把一个三维旋转分解为三个绕坐标轴的旋转。欧拉角使用时最令人困惑的地方在于它的不同定义方法:根据三个坐标轴的不同顺序,可以有12种定义方法;根据坐标轴是惯性坐标系(extrinsic)还是体坐标系(intrinsic),可以有2种定义方法。因此,一共有24种可能的方法来定义欧拉角,而且这些定义方式没有一种是通用的,因此每次使用欧拉角时一定要说明是哪种定义。在量子力学中,最常用的欧拉角是体坐标系 z-x'-z'';我个人比较喜欢的一种欧拉角是体坐标系 z-y'-x'',其中三个旋转角度也叫作yaw(航向角),pitch(俯仰角)和roll(横滚角)。
欧拉角可以很方便地转化为旋转矩阵,其中绕三个坐标轴的旋转分别可以转化为如下的旋转矩阵:
(i) 绕x轴旋转
(ii) 绕y轴旋转
(iii) 绕z轴旋转
对于用惯性坐标系定义的欧拉角,可以按坐标轴顺序将以上三个基本旋转矩阵左乘;而用体坐标系定义的欧拉角,则需按坐标轴顺序右乘。例如体坐标系 z-y'-x'' 欧拉角所对应的旋转矩阵是:
因为三维旋转具有三个自由度,所以欧拉角是所有姿态的表示方法中需要用到参数最少的一种,也就是只用到三个参数。但是这样的简化也带来了一些不方便的地方,在这里我们讨论欧拉角的两个缺点。第一个是欧拉角具有周期性,但和旋转矢量不同,它的周期性很不直观。以体坐标系 z-y'-x'' 欧拉角为例,它三个角度的范围是:
6. 旋转和姿态的关系
在上面的讨论中,旋转矢量、旋转矩阵、四元数、欧拉角指的都是在三维空间中旋转一个向量的操作,那么这个操作和刚体的姿态有什么关系?这个问题可以用旋转矩阵回答:假设旋转矩阵
在IMU中,我们计算的
如果我们将
7. 总结
刚体的姿态一般可以用四种方法表示:旋转矢量、旋转矩阵、四元数和欧拉角。刚体的姿态有三个自由度,在四种表示方法中,旋转矢量和欧拉角用了三个参数;四元数用了四个参数和一个约束条件(长度为1);旋转矩阵用了九个参数和六个约束条件(矩阵的正交性)。旋转矢量和欧拉角都具有奇异性,也就是说在某种姿态下,它们的导数会趋向无穷大;四元数没有奇异性,但它和姿态是2比1的对应关系;只有旋转矩阵既没有奇异性,而且和姿态是一一对应的。在IMU姿态估计中,可以使用旋转矩阵、四元数或欧拉角对角速度进行积分,并设计滤波器。在乘法扩展卡尔曼滤波器中(MEKF),是用四元数进行积分,用旋转矢量表示姿态误差及估计姿态的协方差矩阵。
依据imu姿态角计算z轴倾角_1. 姿态的表示方法相关推荐
- 依据imu姿态角计算z轴倾角_[姿态估计] DenseFusion详解
今天分享一篇关于6D姿态估计任务的paper: <DenseFusion: 6D Object Pose Estimation by Iterative Dense Fusion> 来源于 ...
- 依据imu姿态角计算z轴倾角_树莓派小车-07-IMU姿态解算 imu_complementray_filter
上一篇文章介绍了互补滤波器与ROS的接口定义,这篇文章将结合论文分析代码. complementary_filter.cpp 首先从成员变量开始看,毕竟这些变量在后面用到的时候需要了解他所代表的意思, ...
- 电子罗盘-航向角计算
坐标变换 手机初始状态accelerometer 与 magnetometer 读数为 (假定初始状态为水平放置,如上图所示) G1=⎡⎣⎢ax1ay1az1⎤⎦⎥=⎡⎣⎢00g⎤⎦⎥(1)(1)G1 ...
- 四元数解算姿态角解析
本文来自:链接 一.概述 无人机求解姿态角有多种算法,但由于各种算法的自身限制及计算机计算速度的限制,所以我们需要选择一个较佳的求解算法,下面我们先来看看几种求解姿态角的算法: 1. 欧拉角法: 欧拉 ...
- 关于无人机四元数解算姿态角解析你知道吗?
原文链接http://www.elecfans.com/d/705815.html 一.概述 无人机求解姿态角有多种算法,但由于各种算法的自身限制及计算机计算速度的限制,所以我们需要选择一个较佳的求解 ...
- 姿态角(Euler角):yaw pitch roll
姿态角和自由度相关联: 姿态角在控制,机械领域广泛使用: 这里,简单了解一下: 什么是姿态角(Euler角)? yaw,pitch,roll的识别? 步骤阅读 百度经验:jingyan.baidu.c ...
- IMU静态初始粗对准计算姿态角
初始对准的目的是确定惯性导航系统各坐标轴相对于参考坐标系指向过程.在捷联导航系统中,姿态信息可以以方向余弦矩阵形式表示,角度对准的目的就是去欸的那个方向余弦矩阵,方向余弦矩阵定义了惯性导航敏感轴与参考 ...
- imu初始对准matlab,IMU静态初始粗对准计算姿态角
初始对准的目的是确定惯性导航系统各坐标轴相对于参考坐标系指向过程.在捷联导航系统中,姿态信息可以以方向余弦矩阵形式表示,角度对准的目的就是去欸的那个方向余弦矩阵 ,方向余弦矩阵定义了惯性导航敏感轴与参 ...
- IMU内参标定以及初始化(9轴IMU,比6轴多三个姿态角信息)
IMU内参标定以及初始化(绕8字) 一.IMU内参标定 1.6轴(角速度+线加速度)信息初始化(标定噪声和bias) 2.三轴姿态信息初始化(绕8子) 二.IMU模块ROS配置 注意事项: 因为三个方 ...
最新文章
- 信息级联/信息瀑布(Information Cascade)
- 单身程序猿适合找单身程序媛吗?
- 浅析校园安防视频监控设备发展趋势
- 使用HSRP和SLB实现服务器群负载均衡和冗余
- MySQL索引的创建、删除和查看
- MySQL之数据库对象查看工具mysqlshow
- 【VMCloud云平台】SCAP(一)规划
- c++模板显示实例化,显示具体化,隐式实例化
- base64 linux_渗透测试常用Linux命令总结
- Java Web学习总结(18)——JSP标签
- java post 注册_Java 以 post 发送方式实现百度链接提交主动推送
- Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法
- 超级简单:ASP.NET输出缓存
- mybatis使用详解
- VScode环境变量配置
- 马哥Linux学习笔记2-3Linux命令帮助的获取详解
- STC12C2052AD+TM1640+DS1302闹钟
- NB-IoT 基于蜂窝的窄带物联网
- 苹果CMS v10海螺v6.01模板/附17套苹果cms视频影视网站模板
- 3GPP 首个5G标准
热门文章
- spring依赖注入_Spring源码阅读:Spring依赖注入容器
- python画五角星代码_Python使用Turtle模块绘制五星红旗代码示例
- 无头虚拟化服务器,在 Ubuntu 18.04 LTS 上使用 KVM 配置无头虚拟化服务器
- [蓝桥杯]算法提高 天天向上(记忆化搜索)
- 奇小葩讲设备树(3/5)-- Linux设备树详解(三)u-boot设备树的传递
- com.alibaba.druid.pool.DruidDataSource.error解决办法
- ARM Cortex-M3相比于ARM其他系列微控制器的优势和特点
- USB接口定义(Z)
- Eigen入门之密集矩阵 2-- Matrix及Vector的计算方法
- 机器学习中激活函数和模型_探索机器学习中的激活和丢失功能