lsylusiyao / SmallFishVR

这是我的本科毕设小型机器鱼通过VR控制的项目

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SmallFishVR 使用VR控制机器鱼

项目地址:github

包含:

  • VR连接和获取数据部分ViveInput(C++)
  • CLR桥接部分BridgeDll (CLR)
  • BLE连接和收发数据部分BluetoothLE.cs(调用UWP API进行BLE编程)
  • WPF以及调用的功能部分

编写环境:

  • Windows 10 1809 (SDK: 10.0.17763.0)
  • Visual Studio 2017
  • .Net Framework 4.6.1

程序运行方法:

  1. 确保系统版本为win10 1703(内部版本15063)及以上,方可正常使用程序中的BLE部分
  2. 下载文件并打开sln
  3. 在每个项目中选择当前系统的Windows SDK版本平台工具集目标框架等,以适配当前系统
  4. SmallFishVR项目中添加引用-浏览,添加UWP API相关的引用:WindowsSystem.Runtime.WindowsRuntime, 参考目录为:C:\Program Files (x86)\Windows Kits\10\UnionMetadata\{SDK_VERSION}\Windows.winmdC:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.WindowsRuntime.dll, 然后两者都设置引用属性中的复制本地设置为false
  5. 编译并运行程序。

程序使用方法:

  1. 连接VR设备,打开Steam和Steam VR,运行房间设置
  2. 打开程序,点击初始化VR以在程序中连接VR
  3. 开始监听VR为监听VR数据,可以看到右侧数据会变化
  4. 使用蓝牙之前,请先手动对机器鱼进行配对,配对可以从UWP版本设置中或者传统控制面板的添加设备中配对,PIN一般为0000或000000
  5. 开始监听蓝牙为显示周围蓝牙设备,在下方选择蓝牙设备之后,点击连接鱼,之后连接成功会显示连接成功。
  6. 由于Windows蓝牙的不稳定性,建议先使用颜色切换来验证蓝牙功能是否正常。如果发现机器鱼没有响应,则可以执行机器鱼的运动功能,再点击几次颜色切换,若在界面中出现多个发送数据失败的对话框,则点击确定直至所有对话框消失,应该就可以正常使用了。可以再使用颜色切换验证。
  7. 若不能正常使用,则重复上述步骤。
  8. 运动的三个按钮,需要按住使用,不用的时候松开按钮,鱼就会停止。
  9. 鱼走圈鱼走S等为机器鱼的自动控制部分,走圈的保持为让机器鱼向某个方向转弯的保持时间(可以通过左?高速?控制方向和速度,非高速则为中速);走S的三个时间为走S或“8”字形的三个阶段持续时间。先右后左?为控制初始方向,最后直?为设置在S顶点时,后续运动为完成完整“8”还是直接直行回到原来位置。
  10. VR返回数据为VR的状态数据,可以参考ViveInput程序
  11. VR数据显示为VR的位置数据。位置单位为厘米,欧拉角单位为度,触摸板显示的是坐标。设置零点为设置当前VR数据值为0,后续显示均为当前设置时的偏差值(置零功能)。
  12. 开启VR控制为使用VR数据控制机器鱼,若不点击此按钮开始,则机器鱼不受VR控制。可再次点击此按钮(停止VR控制)停止VR控制机器鱼。
  13. VR存储到文件为记录VR数据,数据记录间隔为25ms左右(在程序ListenVRThread中),记录位置为../../data文件夹。若在记录时程序退出或报错,可能是没有创建此文件夹,因此没有写入权限。
  14. 使用完毕后,可以直接关闭窗口或者点击退出程序,无需担心析构和停止之类问题。

TODO:

  1. 程序中,在某些操作下,可能按钮的enable状态不正确,此时只能重启程序。
  2. 程序报错不完全,某些情况下可能会出现闪退问题。
  3. 蓝牙数据显示时,使用重建列表方式进行刷新,因此可能会导致明明选择了,点击连接也会显示未选择。
  4. 在笔记本(i5 8250U处理器)测试时,VR数据刷新存在问题,查明是ViveInput问题,但是不确定是否是因计算机配置低而产生。
  5. 鱼的自动化程序对于鱼的控制效果很一般,因为没有反馈。

About

这是我的本科毕设小型机器鱼通过VR控制的项目


Languages

Language:C++ 64.6%Language:C# 24.0%Language:C 10.9%Language:CMake 0.3%Language:MATLAB 0.2%