基于MPU6050姿态控制外设开发记录

基于MPU6050姿态控制外设开发记录

简介

在电玩城里见过一种枪型的外设,一直想自己实现一个类似的东西。最近比较闲,终于有空来折腾一下。

外设的原理其实很简单,只需要实时跟踪玩家手里枪的姿态,动态更新游戏中去,精度要求也不是很高。

最终的效果,可以查看下面的视频链接

视频链接

硬件选型

如果只是跟踪姿态的话,三轴陀螺仪就够了。想着后续还想试着做3D tracking,选了MPU6050,有三轴陀螺仪、三轴加速度,因为没有磁力计,所以姿态的Yaw是一个相对值,使用的时候需要校准Z轴的角度。淘宝上搜MPU6050,出来一堆,我选择的是厂家开发好带串口的模块,贵是贵点,好处是姿态数据是过滤好的,不用自己在原始数据里折腾。参考价¥46。

image

焊接,组装好的硬件,像这样:

基于MPU6050姿态控制外设开发记录

代码就不详细解释了,比较简单,读取串口发来的原始的传感器数据,每11个字节为一帧,直接通过UDP发送到上位机的8000端口。

UnrealEngine 4 上位机软件设计

我在一个独立的线程里接收通过UDP端口8000传送来的传感器数据,解析出姿态数据之后,传送到蓝图中去,在蓝图中实时更新Actor的姿态。具体的实现代码就不贴出来,读者可以参考文章最后贴出的代码库中的代码。

这里只说一下,我遇到的一个坑。不可以在网络线程里更新UE4 Actor对象的状态。有一定几率程序崩溃。

源代码

项目的源代码,我整理好了,也开源了出来,读者可以在下面的链接查看到:

https://git.oschina.net/cloudsource/mpu6050_posecontroller.git

MPU6050Wifi 是Arduino程序的代码

MPU6050Test 是UE4的一个测试项目,编译需要Poco库,读者自己编译一个吧。

后续

原型没问题之后,后面考虑把板子做小,自己画个PCB,用单片机当主控。3D打印机打印个外壳。等有空,继续填坑吧。

来源:shangguanwaner

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年4月8日
下一篇 2017年4月8日

相关推荐