查看: 989|回复: 0

[项目提交] 28-步伐估计记录器

[复制链接]

主题

好友

9

积分

白丁

该用户从未签到

发表于 2018-2-12 07:15:14 |显示全部楼层
本帖最后由 两只黄鹂鸣翠柳 于 2018-2-24 15:04 编辑

一、项目名称
步伐轨迹记录器

二、项目概述
仅依靠运动传感器来计算步伐的轨迹,通过蓝牙在终端设备(如手机)上查看行进轨迹。

开发板:Silicon Labs的Thunderboard Sense

先说说为什么要放在脚背上吧。主要是有两个原因:
1. 在步行过程中,能出现短暂的静态或准静态时刻。在相邻的两个准静态时间段内,可以利用反折滤波的方法过滤掉加速度传感器的漂移。所以要做到完全的实时不太可靠。
2. 可以避免传感器出现特别大的翻转。加速度计是没有办法完全校准的。计算过程中需要,对加速度的Norm进行滤波分析,从而找到前面提到的静态时刻。一旦加速度计出现大的翻转,则会进入到一个完全没有办法消除的漂移中。

看实例代码,修改调试代码就花了很长时间。谈谈自己在硬件上掉进去的坑:
改蓝牙通信时,自定义了一组Service和Characteristic。结果发现安卓的代码上要发送Notify才能进入Characteristic的监听状态,这个和之前接触到的模块都不太一样。
做传感器通信的时候发现,示例代码里面IMU是默认不供电的。所有传感器的中断都由EFM8SB1来处理合成一个总的中断。EFM8SB1管理供电和中断,但代码分散在各个文件里面。本来想用外部中断来实时处理传感器数据,但频率一旦拉的比较高,会阻碍整个程序的运行(也可能是我处理的不对),最后还是回到了定时器上。
ICM-20648貌似是颗比较新的传感器,感觉资料比较少,寄存器的控制也和之前MPU6050、MPU9050不太一样。
在soc-empty基础上改的代码。相比于官方的示例应该简洁许多,需要的可以直接去下。

到目前为止一直尝试把算法压缩到硬件上,这样可能也占用了过多的资源。或许还是应该把传感器的原始数据直接发送到终端上做计算。姿态的算法没有调用内置的DMP,根据Madgwick改的,在上传的资源里。

软件用Unity3D做的,先在Eclipse下面给蓝牙通信做了个插件。后面会把Eclipse和Unity的工程打包都放上来。Unity方面要注意下坐标系的转换。

三、项目图片
整个项目没什么外围的东西,截几张软件的图片吧
无标题.png

Screenshot_20180212-070515.png


四、项目视频
到提交为止,刷新率还是没能拉的比较高一些,只能勉强把模块的姿态计算一下。


五、项目代码
Unity的工程文件比较大,就统一放网盘了
项目源码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /4 下一条

手机版|爱板网

GMT+8, 2018-10-21 08:14 , Processed in 0.172803 second(s), 14 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-5   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001056号

Powered by Discuz!

返回顶部