基于MPU6050姿态控制外设开发记录
简介
在电玩城里见过一种枪型的外设,一直想自己实现一个类似的东西。最近比较闲,终于有空来折腾一下。
外设的原理其实很简单,只需要实时跟踪玩家手里枪的姿态,动态更新游戏中去,精度要求也不是很高。
最终的效果,可以查看下面的视频链接
视频链接
硬件选型
如果只是跟踪姿态的话,三轴陀螺仪就够了。想着后续还想试着做3D tracking,选了MPU6050,有三轴陀螺仪、三轴加速度,因为没有磁力计,所以姿态的Yaw是一个相对值,使用的时候需要校准Z轴的角度。淘宝上搜MPU6050,出来一堆,我选择的是厂家开发好带串口的模块,贵是贵点,好处是姿态数据是过滤好的,不用自己在原始数据里折腾。参考价¥46。
焊接,组装好的硬件,像这样:
UnrealEngine 4 上位机软件设计
我在一个独立的线程里接收通过UDP端口8000传送来的传感器数据,解析出姿态数据之后,传送到蓝图中去,在蓝图中实时更新Actor的姿态。具体的实现代码就不贴出来,读者可以参考文章最后贴出的代码库中的代码。
这里只说一下,我遇到的一个坑。不可以在 络线程里更新UE4 Actor对象的状态。有一定几率程序崩溃。
源代码
项目的源代码,我整理好了,也开源了出来,读者可以在下面的链接查看到:
https://git.oschina.net/cloudsource/mpu6050_posecontroller.git
MPU6050Wifi 是Arduino程序的代码
MPU6050Test 是UE4的一个测试项目,编译需要Poco库,读者自己编译一个吧。
后续
原型没问题之后,后面考虑把板子做小,自己画个PCB,用单片机当主控。3D打印机打印个外壳。等有空,继续填坑吧。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!