- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
手机端惯性导航系统
1.项目目标及功能说明
实现手机端实时模拟探索者六轴传感器的动作,能够动态记录六轴传感器的使用者的姿态变化,并打印在显示屏上;参考惯性导航功能,实现电脑端Matlab串口实时通信,绘制开发板的三维轨迹和姿态;将记录下来的数据写入SD卡中。
2.需求分析
需要能够感应用户的动作和速度,根据用户的行动方向以及行驶速度,算出用户的行驶位移,并能够在手机端或电脑上展现给用户。
3.项目进展情况
已完成任务:
任务一:开发板上六轴传感器的实现。由于开发板自带资料提供了六轴传感器的案例,所以我们通过案例里的函数调用了六轴传感器部件,并简单的实现了六轴传感器的数显和动态变化功能。
任务二:开发板与手机的蓝牙通信。由于开发板的扩展资料中带有蓝牙模块的例子,所以通过编程,我们也实现了开发板的蓝牙信号发射与接收。同时,在手机端,有相应的串口软件能够测试蓝牙信号通信,我们也通过软件成功测试了接收和发射功能。
任务三:在开发板上根据六轴传感器的数值画出小球并动态变化。我们通过调用LCD屏画圆的函数,成功实现了在屏幕上画出小球,并根据开发板的六轴传感器的感应动态调整小球的动作。
待完成任务:
任务一:Matlab串口实时通信并显示的编程实现。
任务二:手机端视觉化软件的正确实现。
4.系统设计
4.1 核心部件工作原理
下图为我们使用的正点原子探索者开发板的结构图:
我们主要使用的部件为MPU6050六轴传感器和ATK-HC05蓝牙串口模块。以下为MPU6050的电路结构图:
MPU6050该芯片内部集成一个三轴加速度传感器和一个三轴陀螺仪,并且自带DMP(Digital Motion Processor),这里我们用IIC接口来访问。
对于陀螺仪,MPU6050有寄存器如下图:
这个寄存器是用来触发陀螺仪自检和配置陀螺仪的满量程范围。每个陀螺仪的轴通过控制这个寄存器的XG_ST、YG_ST、ZG_ST位来激活。各轴的自检可独立进行或全部在相同的时间进行。当自检启动,片上的电子设备就会启动相应的传感器。通过设置FS_SEL位选择陀螺仪的满量程。
对于加速度传感器,MPU6050有寄存器如下图:
与陀螺仪类似,这个寄存器是用来触发加速度计自检和配置加速度计的满量程范围。这个寄存器也可以用于配置数字高通滤波器(DHPF)。
蓝牙模块通过ATK-HC05连接开发板。下图为ATK模块电路结构图:
如图,U7是一个1*6的排座,可以用来连接ALIENTEK推出的一些模块,蓝牙串口模块就是通过这个排座连接开发板的,插上即可工作,不断发射蓝牙信号。
4.2 校正算法
我组通过网上浏览资料,计划使用校正算法对六轴传感器的数据进行校正。目前找到的算法有高通滤波、一阶混合滤波等,但算法仍在测试中,还没有找到和确定一个比较合适校正算法。考虑到计算位移时需要对加速度进行两次积分,而加速度本身就有较大的误差,所以在两次积分后误差会更大,而目前我们主要找到的方法是通过加滤波器来抵消两次积分产生的误差,但由于计算以及实践比较复杂,暂时还没有一个比较好的结果,所以该部分将在下一个版本进行细化。
5.系统测试
我们就目前已实现的功能进行了测试,测试得到的结果与我们预期的结果相差不大,但是在数据等方面还存在一定的误差,还需要进一步优化,需要继续改进。
6.关键代码说明
六轴传感器主要函数及参数:
得到加速度值(原始值)
//gx,gy,gz:陀螺仪x,y,z轴的原始读数(带符号)
//返回值:成功
// 其他,错误代码
u8 MPU_Get_Accelerometer(short *ax,short *ay,short *az)
{
u8 buf[6],res;
res=MPU_Read_Len(MPU_ADDR,MPU_ACCEL_XOUTH_REG,6,buf);
if(res==0)
{
*ax=((u16)buf[0]8)|buf[1];
*ay=((u16)buf[2]8)|buf[3];
*az=((u16)buf[4]8)|buf[5];
}
return res;;
}
得到陀螺仪值(原始值):
//gx,gy,gz:陀螺仪x,y,z轴的原始读数(带符号)
//返回值:成功
// 其他,错误代码
u8 MPU_Get_Gyroscope(short *gx,short *gy,short *gz)
{
u8 buf[6],res;
res=MPU_Read_Len(MPU_ADDR,MPU_GYRO_XOUTH_REG,6,buf);
if(res==0)
{
*gx=((u16)buf[0]8)|buf[1];
*gy=((u16)buf[2]8)|
您可能关注的文档
最近下载
- 2025年园林公务员测试题及答案.doc VIP
- 华医网不孕症的中西医药诊治新进展相关试题及答案.doc VIP
- CUDA并行编程从入门到实战指南.docx VIP
- 2025超越健康:重构零售药房的社会价值.pdf VIP
- 机械设备施工专项方案.docx VIP
- 张爱玲经典散文(精选11篇).docx VIP
- 1 审计工作底稿编制指引——货币资金.pdf VIP
- 《铁路调度指挥及控制系统》课件——CTC系统概述.pptx VIP
- 高中思想政治必修第1册 中国特色社会主义 第3课 只有中国特色社会主义才能发展中国【复习课件】.ppt VIP
- 信息技术(基础模块)(WPS Office)(AI协同)(微课版)课件 模块七 WPS AI应用.pptx
原创力文档


文档评论(0)