BetaFlight深入传感设计之九:传感坐标系/机体坐标系/导航坐标系/经纬度坐标系
BetaFlight深入传感设计之九:传感坐标系/机体坐标系/导航坐标系/经纬度坐标系
- 1. 问题症结
- 2. 入手分析
- 2.1 传感坐标系
- 2.2 机体坐标系
- 2.3 导航坐标系
- 2.4 经纬坐标系
- 3. CF/BF/iNav代码
- 3.1 机体坐标系(xEast-yNorth-zUp + yaw反向)
- 3.1.1 BF/CF代码
- 3.1.2 iNav代码
- 3.2 航向角误差
- 3.2.1 BF/CF代码
- 3.2.2 iNav代码
- 4. 参考资料
最近几周,在这个CF/BF/iNav代码上对理解BetaFlight深入传感设计之五:MahonyAHRS & 方向余弦矩阵理论折腾了好久,包括各类信息咨询、收集,总体来看总是差那么几分+/-问题。
1. 问题症结
由于以下问题导致代码实现与理论的出入:
- 缺乏设计文档
- 关键位置缺乏解释
- 解释标注不够明朗
总体来说,开源代码还是专业的(相较于时下国内的一些公司有过之无不及),经过这几周的折腾,基本也理清了一些头绪。
【1】BetaFlight深入传感设计之六:四元数计算方法
【2】BetaFlight深入传感设计之八:坐标系
2. 入手分析
为了更好的理解CF/BF/iNav代码与实际理论之间的差异,没有一手体验+编程基础+理论逻辑,要一下子搞得明明白白还是有点头大的,估计这也是为什么很少有这种代码理论结合的分析。
这里我们澄清一下概念:
- 传感坐标系
- 机体坐标系
- 导航坐标系
- 经纬坐标系
2.1 传感坐标系
这里指出的是传感器的坐标系(XYZ),通常可以在芯片规格书中找到。比如:MPU6000,HMC5883L
注:详见芯片手册。
2.2 机体坐标系
这里指与欧拉角相关的坐标系(XYZ-αβγ\alpha \beta \gammaαβγ),这个很关键,因为这里就是折腾的主要原因。
注:下图旋转方向满足右手系,其中Z(垂直方向),已经进行了反向旋转。
xEast-yNorth-zUp + yaw反向
- xEast-yNorth-zUp做矢量运算,符合右手法则
- αβγ\alpha \beta \gammaαβγ + yaw(β\betaβ)反向 ==》CF/BF/iNav机体坐标系的欧拉角方向
定义XYZ (已经yaw反向)
X:指向机头,绕X旋转 γ\gammaγ
Y:指向左侧,绕Y旋转 α\alphaα
Z:指向上方,绕Z旋转 β\betaβ
实测视频:BetaFlight Mark4 + 善贤地铁站口 + 城北公园
X:roll-right(+); roll-left(-)
Y:pitch-forward(+); pitch-backward(-)
Z:yaw-right(+); yaw-left(-)
注:采用右手坐标系法则,请看视频的时候注意方框中的数字。
BetaFlight Mark4 + 善贤地铁站口 + 城北公园
2.3 导航坐标系
这里理解为xNorth-yEast-zDown(右手系)或者xEast-yNorth-zUp(右手系)都可以,其实代码实现角度并没有太多这方面的概念。
2.4 经纬坐标系
关于经纬度不再过多解释,详见:BetaFlight深入传感设计之八:坐标系。
补充一个关键信息:COG,Course Over Groud 地面航向角(水平航向角)
航向角:是质心沿速度方向在水平面上的投影与预定轨迹的切线方向之间的夹角。
偏航角:是质心沿机头方向在水平面上的投影与预定轨迹的切线方向之间的夹角。
因此,偏航角是考虑航行方向并纠正航行阻力所采取的一种机体姿态。GPS模块提供的就是航向角,而飞机姿态提供的是偏航角。
3. CF/BF/iNav代码
3.1 机体坐标系(xEast-yNorth-zUp + yaw反向)
3.1.1 BF/CF代码
3.1.2 iNav代码
3.2 航向角误差
鉴于以下两个现实问题:
- 加速度制造工艺导致,实际加速度方向与受力方向相反
- yaw方向与COG方向正好相反
3.2.1 BF/CF代码
3.2.2 iNav代码
4. 参考资料
【1】BetaFlight深入传感设计:传感模块设计框架
【2】BetaFlight深入传感设计之一:Baro传感模块
【3】BetaFlight深入传感设计之二:Mag传感模块
【4】BetaFlight深入传感设计之三:IMU传感模块
【5】BetaFlight深入传感设计之四:GPS传感模块
BetaFlight深入传感设计之九:传感坐标系/机体坐标系/导航坐标系/经纬度坐标系相关推荐
- 经纬度坐标系转东北天_经纬度坐标系转换
各种坐标体系之间如何转换?到底有哪些坐标体系?什么是火星坐标?为什么我的坐标,在地图上显示会有偏移?本工具可以转换国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部 ...
- BetaFlight深入传感设计之八:坐标系
BetaFlight深入传感设计之八:坐标系 1. 坐标系统应用 1.1 Geographic Coordinate System: LLH, Longitude-Latitude-Height 1. ...
- BetaFlight深入传感设计之五:MahonyAHRS 方向余弦矩阵理论
BetaFlight深入传感设计之五:MahonyAHRS & 方向余弦矩阵理论 1. 基础预备知识 1.1 机体坐标系 1.2 欧拉角 1.2.1 概念解释 1.2.2 动态概念 1.2.3 ...
- BetaFlight深入传感设计:传感模块设计框架
BetaFlight深入传感设计:传感模块设计框架 1. BetaFlight传感器简介 2. BetaFlight传感器嵌入式软件设计 3. HwPreInit/HwInit阶段 4. HwIo阶段 ...
- BetaFlight深入传感设计之十:传感器物理特性方向对齐
BetaFlight深入传感设计之十:传感器物理特性方向对齐 1. 对齐定义 2. 常见对齐方式 3. 自定义对齐方式 4. 总结 5. 参考资料 6. 补充:gyro + mag对齐方式 AHRS( ...
- BetaFlight深入传感设计之六:四元数计算方法
BetaFlight深入传感设计之六:四元数计算方法 1. 四元数理论 1.1 定义 1.2 基本运算 1.2.1 矢量加减 1.2.2 标量乘法 1.3 矢量点叉乘 1.3.1 矢量点乘 1.3.2 ...
- BetaFlight深入传感设计之七:GPSBaro高度数据融合
BetaFlight深入传感设计之七:GPS&Baro高度数据融合 1. 现象 2. 分析 2.1 程序逻辑 2.2 GPS精度 2.3 数值分析 3. 总结 传感器数据融合最主要的目的是为了 ...
- BetaFlight深入传感设计之三:IMU传感模块
BetaFlight深入传感设计之三:IMU传感模块 1. HwPreInit/HwInit阶段 1.1 [业务HwPreInit]gyroPreInit 1.2 [业务HwInit]gyroInit ...
- BetaFlight深入传感设计之四:GPS传感模块
BetaFlight深入传感设计之四:GPS传感模块 1. HwPreInit/HwInit阶段 1.1 [业务HwPreInit]gpsInit 1.2 [业务HwInit]gpsInitHardw ...
最新文章
- 自定义View的三种构造方法
- 多级反馈队列列算法的优点
- Linux系统编程9:进程入门之操作系统为什么这么重要以及它是如何实现管理的
- python-爬虫学习(文字、图片、视频)
- ubuntu 个人常用的命令
- ToolScrip的设置与用法 (C#.NET Winform)
- Java使用ODBC连接Access数据库
- BUUCTF Misc Page2-6部分题目
- 2.3 The 10-armed Testbed 10摇臂老虎机试验台
- 身份证号码规律,亲测可用
- C# 阿里云 短信api接口
- 目标检测YOLO实战应用案例100讲-基于深度学习的航拍图像YOLOv5目标检测研究及应用(论文篇)
- word中的回车符去除
- sendgrid_使用SendGrid宇宙函数发送电子邮件
- 无线投屏(智慧教室)
- Spring Cloud(十七):高并发设计
- 用计算机演奏香蜜的歌曲,杨紫新剧《蜜汁炖鱿鱼》上演计算机天才,搭档李现CP感爆棚...
- pete shinners_Hanselminutes播客226-使用Pete Brown构建自己的Ultimate Developer PC 2.0
- ReferenceError: Invalid assignment left-hand side
- 分享笔记RabbitMQ高级之消息限流与延时队列
热门文章
- 网络基本功:三次握手及四次挥手
- 用栈实现将十进制数转换为任意进制数(2,8,16...).
- 跨界营销新套路:立白和杜蕾斯这样“去污”
- 绩效考核OKR怎么做?
- 数据挖掘项目笔记——使用joblib中的Parallel并行运行程序
- 手机银行提示服务器证书异常,台州银行个人网银-常见问题及异常问题及处理方法...
- word 创建邮件及合并主文档
- 2023年第二十届五一数学建模竞赛题目 B题超详细思路
- 计算机音乐必须会各种乐器吗,制作电脑音乐需要注意的几点
- 阿米巴经营模式资料包