SuperMDK用户手册

目录

一 综述

    1.软件包   
    2.包内容   

三、

     1.硬件包  

四、

    1. 使用方法 
    2. 准备工作 
    3. 设备连接 
    4. Arduino程序烧写  
    5. 正式工作 
    6. 运行结束后    

五、模型调整API

一、 综述
SuperMDK是哈工大MultiWorld团队开发的针对unity3d开发者使用的MDK(Motion capture Development Kit)。
硬件设备由一块树莓派,四块arduino uno以及7块MPU-6050传感器组成。

硬件传感部分数据经过封装呈现,在unity中可以直接使用。不介绍对应理论。

团队的目标是提供一种可以拖拽即使用的SDK,用最简单的方式开发体感应用,团队也认为这点在本文中得到了很好的体现。
二、 软件包

图 1 unity导入包

image.png

如图,引用包名为SuperMDK+版本号。

SuperMDK用户手册_第1张图片
image.png

包内容

图 2 包主要内容

SuperMDK用户手册_第2张图片
image.png

图 3 包主要内容

SuperMDK用户手册_第3张图片
image.png
SuperMDK用户手册_第4张图片
image.png

-增加下拉菜单MDK
-点击后分别跳转到该项目的帮助文档跟github网站

-Material 文件夹下包括模型使用的各种材料,在此可以替换模型和贴图使用开发者自定义的材料选项。
-scene 文件夹下包括了开发包提供的基础场景,场景中有项目的模型和可以更改的选项。(下文有具体内容)。
-scripts 文件夹下是包中运用的各种脚本(unity默认的C#文件)。
{
Fpstest.cs 文件是默认执行fps统计脚本,将脚本实时显示出来。
testUdp.cs 文件是UDP广播接收端执行脚本,是实例化UDPclient数据接收所依赖的父类。
Rightarm.cs是模型驱动脚本,文件中包括了参数矫正、滤波等内容。
}

图 4 man 场景下内容
Main Carema 是主摄像头。
Directional Light 是方向光源,为场景提供灯光。
Man 是实例模型,开发者可以通过改变脚本来改变模型对应关系。
Canvas 是画布,默认UI组件在此执行。
EventSystem 是时间收集器,收集工作方案工作中事件问题。
UDP 是空类,执行TestUp文件,实例化UDP广播接收端。
FPStest同样是空类,执行FPSTest文件,实例化FPS测试类。

图 5 包导入后unity视图
三、 硬件包
硬件组成中,Arduino uno负责读取MPU-6050 模块数据,通过串口发送到树莓派当中。
树莓派接受数据后进行预处理并通过UDP广播形式发送到局域网内。理论上局域网内任何终端(windows、android等设备)通过app应用可以查看到对应模型动态状态。
四、 使用方法
准备工作
设备连接
MPU1:arduino1
Vcc :3.3v
GND :GND
SCL :A5
SDA :A4

MPU2:arduino1
Vcc :3.3v
GND :GND
SCL :A5
SDA :A4
AD0 : 3.3V

MPU3:arduino2
Vcc :3.3v
GND :GND
SCL :A5
SDA :A4

MPU4:arduino2
Vcc :3.3v
GND :GND
SCL :A5
SDA :A4
AD0 : 3.3V

MPU5:arduino3
Vcc :3.3v
GND :GND
SCL :A5
SDA :A4

MPU6:arduino3
Vcc :3.3v
GND :GND
SCL :A5
SDA :A4
AD0 : 3.3V

MPU7:arduino4
Vcc :3.3v
GND :GND
SCL :A5
SDA :A4
Arduino程序烧写
Arduino程序在您拿到手中时已经烧写进板子中,可以直接使用。需要将arduino和树莓派通过USB线连接

正式工作
将树莓派和开发的电脑连接到同一个局域网内。
在树莓派上启动终端
输入命令:

本树莓派自带 openser.sh 脚本
./openser.sh
#或者手动开启Arduino 的串口
sudo chmod 777 /dev/ttyUSB*
#或者
sudo chmod 777 /dev/ttyACM*

继续输入命令:

python udpargs.py  /dev/ttyUSB0  /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3 

运行UDP程序。

SuperMDK用户手册_第5张图片
image.png

程序注解:四个参数分别代表了四个Arduino
运行程序,开始UDP广播。
为了开发者调试方便,我们将传送的数据打印在终端上,以便开发者对数据进行监测

回到unity当中
双击打开man场景

SuperMDK用户手册_第6张图片
image.png

图 8 unity运行
点击运行键开始运行unity端程序

图 9 开始运行截图

  • 开始连接 点击开始连接,unity将开始接受UDP广播内容。开始传播
  • 暂停连接,为了调试参数,预留的功能,可以暂停连接
  • 继续连接,调整后可以继续开始连接。


    SuperMDK用户手册_第7张图片
    image.png

    注:socket 端口只能初始化一次,请记住只能点击开始链接一次。

运行结束后
我们需要对服务器进行关闭,执行关闭服务器程序代码:

python closeser.py

至此,一次完整的调试过程结束。

五、 模型调整API

SuperMDK用户手册_第8张图片
image.png

Element0-6 代表了一个模型的7个活动关节:
0:leftForeArm
1:LeftArm
2:RightForeArm
3:RightArm
4:LeftUpleg
5:RightUpleg
6:Head
Socket 代表了挂载testudp.cs 脚本的游戏物体
BodyAssembly.cs脚本API :

        //默认构建函数,定义初始值
    public BodyAssembly(GameObject gameobject) ;
//定义默认初始角
public void getDefault();
//获取基本旋转角
    public void getRotation(float[] fRotation);
//获取与初始脚的差值
    public void getMinus();
//转动方法
    public void RotateArm(GameObject gameobject);
    public void RotateLeg(GameObject gameobject);
    public void RotateLeg(GameObject gameobject);

六、结束语

SuperMDK在考量了成本问题后,提供了以上的方法解决成本问题,团队也尽可能的降低使用MDK的团队的学习成本,目前基本实现拖拽即编程的目标,使零学习成本、低学习成本开发体感游戏成为可能。
团队也将加快研发和维护进度,提供更完善的平台和技术。
也欢迎更多团队帮助宣传和使用我们的产品。
联系方式:[email protected]
github地址

你可能感兴趣的:(SuperMDK用户手册)