美文网首页我爱编程
SuperMDK用户手册

SuperMDK用户手册

作者: 寒夏凉秋 | 来源:发表于2017-05-11 16:49 被阅读0次

    目录

    一 综述

        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+版本号。

    image.png

    包内容

    图 2 包主要内容

    image.png

    图 3 包主要内容

    image.png 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程序。

    image.png

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

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

    image.png

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

    图 9 开始运行截图

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


      image.png

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

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

    python closeser.py
    

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

    五、 模型调整API

    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的团队的学习成本,目前基本实现拖拽即编程的目标,使零学习成本、低学习成本开发体感游戏成为可能。
    团队也将加快研发和维护进度,提供更完善的平台和技术。
    也欢迎更多团队帮助宣传和使用我们的产品。
    联系方式:liaoboo323@outlook.com
    github地址

    相关文章

      网友评论

        本文标题:SuperMDK用户手册

        本文链接:https://www.haomeiwen.com/subject/fmootxtx.html