MPU6050+HMC5883+BMP180+GPS导航系统设计
来源:互联网 发布:amd开源驱动知乎 编辑:程序博客网 时间:2024/05/22 13:56
老师有个项目,让我搞惯导这一块,虽然最后也没有用上廉价的MPU6050,而是用了一两万的Xsens。但是本人还是想写一下MPU6050,虽然技术含量不高,但是写下来,留个纪念吧。
首先是MPU6050,属于MEMS传感器,现在做四轴的用这款芯片的很多,它集成了三轴陀螺仪+三轴加速度计,因为官方提供DMP库,这样就大大方便了开发,使用硬解,解放主控资源。自己买回来MPU6050后,测了其静态漂移。把MPU6050模块插在面包板上,微处理器用的是stm32,通讯方式是IIC,姿态解算用的是硬件解算,用的例程是原子的,然后通过每隔一段时间记录一次,mpu6050自带的DMP进行解算,直接输出四元数,然后通过四元数转化转换为对应的姿态角,但是没有Z轴上的参考量,所以Yaw是不准的。(Time是次数的意思,当时的时间间隔忘记了)
发现半个小时,yaw漂6--7度。对于微型小四轴来说够用了,一般微型小四轴也就飞7、8分钟左右。通过mpu6050,我们可以得到roll,pitch,yaw。至于mpu6050的源码,大家自己看原子的。这里就不放了。
其次是HMC5883,它是磁力计,可以测量x,y,z方向上的磁场。它与微处理器也是通过IIC通讯。至于它的有关介绍可以看DATASHEET。其代码如下:
接下来是BMP180气压计,它通过测气压得到相对海拔高度,但是我感觉噪声有点大,估计我用的是原始值,没有滤波的原因,大家可以用MS5611,精度比较高。效果会好些。但是气压计这个东西本来就会受环境影响。它也是通过IIC与微处理器通讯的,我直接上代码:
GPS是通过USART通信的,代码就不放了。
这些数据都是直接采的,没进行滤波什么的,姿态解算也是用的硬解。然后自己用VB写了个上位机,将所有原始数据传给上位机。
除此之外,我将mpu6050的数据通过串口传给Arduino,然后主要想做个3D姿态跟随的效果,Arduino将数据传给电脑,然后实现3d姿态仿真的效果。后来发现其实labview也可以做3d仿真。
以上内容,难免有错误与不足之处,大家踊跃拍砖。
1 0
- MPU6050+HMC5883+BMP180+GPS导航系统设计
- 基于GPS和电子海图的嵌入式船舶导航系统设计
- 基于GPS和电子海图的嵌入式船舶导航系统设计
- GPS全球卫星定位导航系统
- GPS导航系统的基本原理
- MPU6050通过XDA和XCL读取HMC5883数据
- STM32通过MPU6050读取HMC5883数据时遇到的问题
- HMC5883
- BMP180
- GPS/DR/MM车载导航系统
- 嵌入式GPS导航系统开发经验
- 基于Qt的GPS导航系统
- 嵌入式GPS导航系统开发经验
- 惯性导航系统INS与GPS
- IPS:超越GPS的导航系统
- 基于WindowsCE的GPS数据导航系统
- 基于ARM的Gps导航系统方案
- 基于Qt的GPS导航系统软件源代码
- JAVA从键盘输入三种常规方法详解
- 回归问题中-梯度下降原理及思考
- 在vs2008中编写c控制台程序,运行完后经常一闪而过解决办法
- Python HackerRank|Piling Up!(from collections import deque)
- ueditor自定义上传
- MPU6050+HMC5883+BMP180+GPS导航系统设计
- 二叉树三种遍历递归及非递归实现
- Unity SLua+FairyGUI
- FIR高低通滤波器设计(用matlab)
- Spring与Quartz的整合实现定时任务调度 收藏
- oracle 如何导出数据字典
- 大话设计模式 -- Golang实现
- Codeforces #402 (Div. 2) A. Pupils Redistribution
- Word目录制作修改