手机端惯性导航系统_第1页
手机端惯性导航系统_第2页
手机端惯性导航系统_第3页
手机端惯性导航系统_第4页
手机端惯性导航系统_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

手机端惯性导航系统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.关键代码说明六轴传感器主要函数及参数:1. 得到加速度值(原始值)/gx,gy,gz:陀螺仪x,y,z轴的原始读数(带符号)/返回值:成功/ 其他,错误代码u8 MPU_Get_Accelerometer(short *ax,short *ay,short *az) u8 buf6,res; res=MPU_Read_Len(MPU_ADDR,MPU_ACCEL_XOUTH_REG,6,buf);if(res=0)*ax=(u16)buf08)|buf1; *ay=(u16)buf28)|buf3; *az=(u16)buf48)|buf5; return res;2. 得到陀螺仪值(原始值):/gx,gy,gz:陀螺仪x,y,z轴的原始读数(带符号)/返回值:成功/ 其他,错误代码u8 MPU_Get_Gyroscope(short *gx,short *gy,short *gz) u8 buf6,res; res=MPU_Read_Len(MPU_ADDR,MPU_GYRO_XOUTH_REG,6,buf);if(res=0)*gx=(u16)buf08)|buf1; *gy=(u16)buf28)|buf3; *gz=(u16)buf4 18000 对应 -180.00 - 180.00度/pitch:俯仰角.单位 0.01度。-9000 - 9000 对应 -90.00 - 90.00 度/yaw:航向角.单位为0.1度 0 - 3600 对应 0 - 360.0度void usart1_report_imu(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz,short roll,short pitch,short yaw)u8 tbuf28; u8 i;for(i=0;i8)&0XFF;tbuf1=aacx&0XFF;tbuf2=(aacy8)&0XFF;tbuf3=aacy&0XFF;tbuf4=(aacz8)&0XFF;tbuf5=aacz&0XFF; tbuf6=(gyrox8)&0XFF;tbuf7=gyrox&0XFF;tbuf8=(gyroy8)&0XFF;tbuf9=gyroy&0XFF;tbuf10=(gyroz8)&0XFF;tbuf11=gyroz&0XFF;tbuf18=(roll8)&0XFF;tbuf19=roll&0XFF;tbuf20=(pitch8)&0XFF;tbuf21=pitch&0XFF;tbuf22=(yaw8)&0XFF;tbuf23=yaw&0XFF;usart1_niming_report(0XAF,tbuf,28);/飞控显示帧,0XAF4. 串口通信帧格式:/fun:功能字. 0XA00XAF/data:数据缓存区,最多28字节!/len:data区有效数据个数void usart1_niming_report(u8 fun,u8*data,u8 len)u8 send_buf32;u8 i;if(len28)return;/最多28字节数据 send_buflen+3=0;/校验数置零send_buf0=0X88;/帧头send_buf1=fun;/功能字send_buf2=len;/数据长度for(i=0;ilen;i+)send_buf3+i=datai;/复制数据for(i=0;ilen+3;i+)send_buflen+3+=send_bufi;/计算校验和for(i=0;ilen+4;i+)usart1_send_char(send_bufi);/发送数据到串口1 5. 蓝牙模块主要函数及参数:通过hc05.c中的接口函数来处理蓝牙串口的连接和数据传输。先通过u8 HC05_Get_Role(void)函数连接蓝牙设备,然后通过void usart1_send_char(u8 c)、void usart1_niming_report(u8 fun,u8*data,u8 len)、void mpu6050_send_data(short aacx,short aacy,short aacz,short gyrox,short gyroy,short gyroz)三个函数实现发送六轴数据的功能。其中mpu6050_send_data调用usart1_niming_report,usart1_niming_report调用usart1_send_char。7.遇到的问题及解决方案目前遇到的主要问题:1. 使用Matlab串口编程时,对数据帧的处理还不完善,仅仅是能够获取到发送的数据,未实现实时接收数据。下一步,重点将是对数据获取的方法进行深入学习,并提取数据帧中的加速度值、角速度值和欧拉方向角,提供给Matlab中的轨迹显示代码。2. 使用Android编程时,对蓝牙接收到的数据,未找到满意的方法传递给3D绘图工具,导致apk无法正常运行。下一步,将会针对这一问题,对Android编程进行研究学习,并且调用系统API获取手机端六轴的数据,实现两组六轴的联合。3. 文件的保存和读写未实现,主要原因是嵌入式系统中未加入文件系统。8.下一步设想和工作1. 实现Matlab上的轨迹再现,考虑到实际能力,应该难以实现实时呈现,设想的是导入数据进行处理,并再现。2. 实现手机端MPU6050和手机上的六轴的联合,达到互相感知姿态的目的。最终实现手机中的三维显示在发生相对运动时,相对手机或开发板静止的效果。3. 由于目前板子中只写入了蓝牙模块和六轴模块,因此,对于文件系统的搭建会比较困难,如果后期时间不足,将会舍弃该项功能。8.心得体会这个项目,其实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论