本文pdf版本及相关资源在这里下载。
写这篇文章其一是为了继续我的系列《总结使用过的虚拟现实设备(A Brief Summary of Several VR Devices)》,其二是因为最近师弟要用跟踪器Flock of Birds,于是我又要向他们讲述一遍用法,这么一遍一遍讲下来,越来越没兴趣的我自然也就讲的越来越简单,对师弟的 愧疚之心开始萌动,为了给自己的不安之心找个安息地,于是决定把Flock of Birds的用法写下来,好让师弟及所有使用者参考。
本文的图片来自Ascension公司官方网站与葉欲君的部分硕士论文(图片版权归其所有),或对其修改所得,不采用我自己所用的设备照片,文中内容皆为个人使用总结所得,不涉及盗窃他人或机构图片及文档。
本文将讲述跟踪器Flock of Birds的优缺点,并着重说明其使用方法。
Flock of Birds跟踪器由Ascension公司生产,一套Flock of Birds(如图1)包括一个发射器(XMTR),若干接收器(Receiver),若干控制盒(Bird Controller),其中一个接收器对应一个控制盒。另外可选择性的搭配扩展发射器(ERT)和扩展控制盒(ERC),其作用是加大跟踪器的工作空间(从方圆约1.2米扩展到方圆约3米),扩展器也可以级联来继续扩展(我只有使用过接入一个扩展器,没有级联过,其手册中说可以级联;如图1所示,ERC前面板有两个ERT插槽,在只接入一个ERT的情况下,要用产品中附带的插槽盖将另一个“堵上”)。
接收器通过感应发射器发射出的电磁场的强弱、方向等来判断自己所处的位置角度,得到6自由度。由于是电磁传感器,因此在跟踪器工作空间中不能有金属物体、电磁发射源(如显示器也会对其有影响),否则跟踪器数据误差较大,设置无法读取数据。
优点:
(1) 发射器接收器之间可以有物体,与其相比较的是光学传感器,因为发射器与接收器之间要靠光路传播,因此发射与接收之间不能有物体遮挡。
(2) 配置多样化。可以主从级联,最后通过主控制盒连入计算机,也可以多个控制盒都与计算机相连;可以用RS232串口连接,也可以用FBB连接;可以只接一个发射器,也可以选择性的接入扩展器。
缺点:
(1) 受金属等干扰影响较大。
(2) 长长的连接线给人的行动带来不便。
拿到新产品后,先认识一下所有硬件及其各个插口、连接线,下面一一叙述:
1. 发射器
如图3所示,发射器信号线接入控制盒XMTR插口。
2.接收器
(1)接收器:附着在被跟踪物体上随其运动,获得其六个自由度的运动数据,进而传递给控制盒。安装螺孔用于安装和固定接收器,安装塑料螺丝。
(2)信号线插头:连接于控制盒后面板上的接收器信号线,作为接收器与控制盒数据传输的接口。
3.控制盒
(1)跟踪器工作开关:当Flock of Birds传感器通电后,此开关用于控制跟踪器是处于工作状态还是待命状态。当此开关搬至“STBY”时,跟踪器处于待命状态;当此开关搬至“FLY”时,跟踪器处于工作状态。此开关也可兼做传感器的重置 (reset) 按键,当在系统使用中出现传感器工作不正常的状态时,可以先终止应用程序的运行,将此开关从“FLY”搬至“STBY”,再从“STBY” 搬至“FLY”。一旦此开关被搬至“FLY”时,控制盒的指示灯会短促的闪烁五次,然后熄灭,以示工作状态正常;当应用程序通过跟踪器不断采集数据时,控制盒的工作指示灯保持常亮。
(2)指示灯:用于指示控制盒的工作状态,当跟踪器采集数据时,此指示灯一直保持亮的状态。
(3)发射器插孔(XMTR):用于联接发射器(图中已经连接)。
(4)接收器信号线插孔(RECEIVER):用于联接接收器。
(5)控制盒设置跳线(DIP SWITCH):控制盒设置跳线共8位。跳线搬到下方为1,搬到上方为0。此8位跳线的各位具体定义如下:第一至三位,设置串口通信的波特率,111为115200bps;第四至七位,设置控制盒的序列编号,从1开始;第8位为测试位,仅在工厂测试和改变传感器配置时才使用,在工作状态下,始终设为0,需要注意的是,在新产品第一次正常使用前应该先将此位调到1,进行测试后方可正常采集数据。具体的细节可以参见Flock of Birds的参考手册。
(6)电源输入插孔(POWER):联接电源线,给控制盒提供电压输入。
(7)FBB线插槽(FBB):用于联接多个控制盒,在只有一个发射器的情况下,可以通过此插槽串接多个控制盒。
(8)串口通讯线插孔(RS-232):联接接入计算机的串口线,用于计算机与跟踪器间的串行数据通讯。
4.电源
电源插头接于220v的电源上,变压器将220v的输入电压变为控制盒的输入电压,另一端线路插头与控制盒后面板上的电源输入插座相连,给控制盒供电。
5.FBB线:用与联接不同的控制盒后面板的FBB线插槽,实现控制盒之间的通讯。
根据前面各个设备接口与连线的说明、自己拥有的Bird个数、级联方式来连接设备,以只有一个主控制盒接入计算机,其它从控制盒通过FBB级联到主控制盒为例,连接图如下(图中Sensor即代表接收器Receiver):
如前所述,在第一次进行数据采集之前,要先通过调拨跳线来使跟踪器在测试状态下运行一次,每个控制盒分别单独设置,对于少于等于14个控制盒的情况,说明如下(多于14个时属于Expanded Adress连接,其设置见手册):
(1) 跳线的4、5、6、7、8位依次设置为on on on off on。
(2) 将控制盒开关从“STBY”拨到“FLY”,指示灯以一定的频率连续闪烁表明跟踪器测试正常。
(3) 关掉跟踪器(从“FLY”拨到“STBY”)。重新设置各个控制盒的跳线,使其处于正常工作模式(非测试模式),以便进行下面数据的采集。
在没有编写自己的程序来采集数据之前,可先用产品软(光)盘中附带的CBird.exe来进行测试。在Windows系统中也可以利用Winbird.exe来测试。在此以CBird.exe为例说明,具体细节如下:
(1)开启各个Birds控制盒,从主到次,依次将开关从“STBY”拨到“FLY”,每个指示灯短促的闪烁五次后然后熄灭表明跟踪器初始化正常,可进行以下步骤。
(2)启动CBird.exe程序
(3)按照命令行的提示选择串行通讯口(如COM1)并设置串行通讯口的波特率(通常为115200)
(4)选择0.No Change表明不再更改,进入下一页
(5)在新页面中选则15. Change Value来设置参数,出现新页面
(6)再选择16.Auto Configuration自动配置模式
(7)输入系统中的Flock of Birds的个数(也就是接入的控制盒的个数)。虽然ERC不连接接收器,但如果接入了扩展控制盒ERC,则ERC算作一个Bird。
(8)看到提示文字显示各个Birds都正常运行后,按任意键退回至主菜单。
(9)选择5.Position/Angle的位置/角度读取数据模式
(10)选择点或流模式读取数据 (Point/Stream)。移动接收器,如果一切正常,可观察到位置角度数据的相应变化。
电源盒与控制盒发热量较大,因此在不使用时通常将控制盒开关拨到“STBY”状态,并从220V插座上拔出电源线。
在通过自己的程序控制数据的采集,则需要编写相应的代码,Flock of Birds产品提供了一个dll库,包含了相应的采集函数,但似乎并不好用。
因此我们并没有采用其dll库,而是用Windows的串口函数如SetupComm(……)、WriteFile(……)等直接向串口发送命令,来控制跟踪器的工作,跟踪器的配置与其相对应的具体命令码在其手册中有十分详细的说明,因此我们所要做的就是编写简单的代码了。