只需两个摄像头,你也可以虚拟现实直播
2015-10-27
/BY:

文章摘要: 如你所见,一个虚拟现实的世界正在逐渐成型;谷歌也已经率先推出了基于智能手机的虚拟现实设备Cardboard,小编也体验过,感觉还不错。

  如你所见,一个虚拟现实的世界正在逐渐成型;谷歌也已经率先推出了基于智能手机的虚拟现实设备Cardboard,小编也体验过,感觉还不错。

  毫无疑问,虚拟现实正在进入我们的生活,虚拟现实直播也正在逐渐兴起。但总体来说,虚拟现实直播还非常小众,资源不多;而且由于带宽的限制,许多虚拟现实直播还对接入设备数量存在限制。既然这样,那就让我们自己来DIY一套虚拟现实直播系统吧!(注:本项目来自Instructables。)

  第一步:物料和组件配置

  要实现这一项目,你需要以下硬件:

  一部支持Cardboard的手机

  Google Cardboard(因为谷歌公开了设计方案,有很多不同生产商的兼容版本)

  两台计算机

  两个不同的网络相机(必须要驱动不同的,否则Windows系统无法进行识别)

  三个标准舵机

  相机支架和相关3D打印组件(文件点击这里下载)

  小面包板

  12根跳线

  USB A转USB B线

  AA电池盒

  4颗AA电池

  Arduino UNO

  螺丝钉若干

  


  另外,你还需要这些软件:

  Processing 2.0 (可选,如果你不想改动源代码,可不用)

  TrinusVR

  Arduino

  Skype

  VRTD

  第二步:机动单元组装

  首先3D打印必要的结构件。

  


  不同的舵机配合不同的结构,具体看图。

  


  


  第三步:电子件

  


  接线图如上,Arduino用来控制三个舵机,这些舵机使用4个AA电池供电,因为Arduino无法同时为三个舵机功能。这三个舵机为最终的设备提供了3个自由度。实际连接后如下所示:

  


  第四步:上传代码

  


  本项目基于标准 Firmata协议,该协议能让基于Arduino的实时通信交互变得更加简单,数据的处理也可以转移到PC上进行。设置标准Firmata协议的步骤如下:

  使用USB A转USB B线,打开Arduino IDE并连接Arduino UNO到PC;

  点击File->Examples->Firmata->StandardFirmata,将必要的代码模板载入IDE;

  点击Tools->Board->Arduino UNO,确定开发板;

  Tools->Serial Port->(串行接口名),这里设置Arduino上连接的接口;

  点击箭头符号将标准 Firmata协议上传到Arduino,如果没有出错,则上传成功。

  


  你可以使用Firmata Test应用测试标准 Firmata协议是否安装成功。在其中你可以看到接口的定义,这里我们使用的引脚8、9和10,将这三个引脚的类型改成“Servo”。

  第五步:设置虚拟现实应用

  


  现在的虚拟现实应用大部分都是头戴式的,我们这里选用的是Cardboard兼容版本。而我们的数据处理则在计算机上进行,我们需要TrinusVR软件为Cardboard提供视频流。TrinusVR的下载安装方法请点这里。

  


  第六步:VRTD软件

  本项目将使用利用Processing 2.0编写的定制软件VRTD(Virtual Reality Teleconferencing Device)来实现对虚拟现实设备的远程控制,该软件分为两个部分VRTD_sender和VRTD_receiver。

  VRTD_sender在计算机上使用,该程序能够跟踪头部运动产生数据,并将该数据上传到特定的IP地址。该IP地址属于,另一台特定的计算机,该计算机上运行的是VRTD_receiver,该计算机能够接受由连接到其上的左右两个摄像头所产生的视频数据,并同时根据VRTD_sender发送的数据控制摄像头下面舵机的运动。

  


  那么使用者又如何看到视频直播的画面呢?这里采用了一个很巧妙的方法:直接通过Skype或QQ这样的视频软件传输共享的视频数据。具体的配置步骤如下:

  准备两台安装了Windows系统的计算机,分别命名为A和B;

  将计算机A连接到Cardboard,并运行VRTD_sender;

  将计算机B连接到虚拟现实设备,并运行VRTD_receiver;

  在VRTD_receiver中设置左右两个网络摄像头和Arduino的接口;

  在两台计算机上运行Skype软件,并开启屏幕共享;

  在VRTD_sender中输入计算机B的IP地址;

  戴上虚拟现实设备,该设备控制鼠标的光标,并借此控制计算机B所连接的Arduino上所连接的舵机。

  


  注:只有一台计算机也可完成此项目,同时运行VRTD_receiver和VRTD_sender,在输入IP地址时输入本地的127.0.0.1即可。

  第七步:完工

  


  演示视频如下:

  到这里本项目就完成了,该项目的作者John Choi已经将相关的CAD和处理文件开源,实在太赞了!