HTC Vive Tracker Developer Guide

HTC发布的Vive配件Vive Tracker可以用来扩展与SteamVR连接的设备。而且还具有Pogo引脚,可以自己DIY出特殊功能的配件,最近看到了一些使用Vive Tracker来实现的非常棒的创意。相关的资料和技术细节在本篇文章里整理辑录。

HTC Vive Tacker

一些使用Vive Tracker来实现的非常棒的创意:
使用Vive Tracker来为移动手机加入位置追踪,使手机可以加入VR游戏以及为Daydream增加位置追踪:

注:它的实现实际上是PC创建房间并作为Server,让移动设备通过网络加入游戏并具有Camera,然后在Server上将追踪到的Tracker位置信息同步到移动设备上并修改Camera的位置,移动设备上的画面就是Camera修改后的,使其看起来像手机具有位置追踪,很鸡贼的一个做法(我预计使用Tracker为DayDream增加位置追踪也是相同的做法)。

使用Vive Tracker的引脚扩展,做出特殊功能的硬件设备(喷雾罐):

HTC也开源了一个使用三个Tracker进行全身IK的实现:vive_ik_demo
VIVE Tracker官方推荐的案例教程:New Project Code and Tutorials Released for VIVE Tracker
HTC Vive Tracker的指南v1.6:

相关资讯:Vive Tracker Now Available for Developer Purchase

Set Vive Controller/Tracker Type

Vive Tracker可以用来追踪位置,但是它并不仅仅只能用来追踪位置那么简单。正常情况下Tracker识别后的默认类型是tracker,但是再某些情况下希望用tracker来代替手柄实现操作,如:

  • 将Tracker当作MR的第三个摄像机,替代需要的第三只手柄
  • 用Tracker或者Tracker做的外设来替代手柄玩游戏

实现上面两个目标需要将Tacker的类型修改为controller,让基站认为Tracker是Controller。HTC曾经提供过一个工具用来修改Tracker的类型:Vive Tracker Role Changer(这个版本是v0.8的,最新的是v1.0,但是由于一些原因HTC停止了这个软件的下载)。
不使用这个工具,也可以实现相同的功能(我这里演示的是将Controller修改为Tracker做示例),方法如下。
首先,拔掉电脑上的其他任何VR设备,然后使用USB线将Controller/Tracker连接到计算机。
打开Steam的安装路径(SteamVR):

1
Steam\steamapps\common\SteamVR\tools\lighthouse\bin\win64

找到lighthouse_console.exe,在控制台中运行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
C:\Program Files (x86)\Steam\steamapps\common\SteamVR\tools\lighthouse\bin\win64>lighthouse_console.exe
Version: lighthouse_console.exe (buildbot_vortex-windows_steamvr_rel_win64@vortex-windows) 04924513
Attached lighthouse receiver devices: 3
LHR-AE438993
lighthouse_console: Connected to receiver LHR-AE438993
Attempting HID Open IMU: LHR-AE438993
Lighthouse IMU HID opened
LHR-AE438993: Firmware Version 1518829406 watchman@runner-watchman 2018-02-17 FPGA 531(2.19/0/2) BL 1517470641
Data request is out of range
Request Starting:0x0
Ending:0x18
Max Address is:0x3
LHR-AE438993: Successfully fetched gyro/accelerometer range modes from the device. GyroRangeMode:3 AccelRangeMode:2
Attempting HID Open Optical: LHR-AE438993
Lighthouse Optical HID opened
Attempting HID Open VrController: LHR-AE438993
Lighthouse VrController HID opened
LHR-AE438993: Read config of 2214 bytes from [vid:28de, pid:2300] (LHR-AE438993) and inflated to 9317 bytes

lh>

会检测到当前插入的设备LHR-AE438993并进入lh的控制台。
lh控制台里输入命令:

1
2
3
lh> downloadconfig
LHR-AE438993: Read config of 2214 bytes from [vid:28de, pid:2300] (LHR-AE438993) and inflated to 9317 bytes
Wrote 9317 bytes to LHR-AE438993.json

会在当前目录下产生一个LHR-*.json文件,其中内容如下:
一代手柄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"acc_bias": [
-0.163,
0.08808,
-0.2593
],
"acc_scale": [
1,
1,
0.9959
],
"device_class": "controller",
"device_pid": 8210,
"device_serial_number": "LHR-F7099945",
"device_vid": 10462,
"gyro_bias": [
0.01332,
-0.003239,
0.01065
],
"gyro_scale": [
1.0,
1.0,
1.0
],
// ...
}

二代手柄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
"device_class": "controller",
"device_pid": 8960,
"device_serial_number": "LHR-AE438993",
"device_vid": 10462,
"firmware_config": {
"bwd_config": "0x392B",
"charge_current_low_temp_ma": 256,
"charge_current_ma": 512,
"charge_current_nominal_ac_ma": 768,
"charge_current_nominal_usb_ma": 512,
"charge_term_current_ma": 128,
"charge_voltage_limit_mv": 4400,
"charging_low_temp_threshold_c": 10,
"mode": "controller",
"radio": true,
"recharge_voltage_mv": 100,
"sensor_env_on_pin_a": 0,
"spi_flash": false,
"sys_min_voltage_mv": 3500,
"trackpad": true,
"trigger": true,
"trigger_adc_max": 3900,
"trigger_adc_min": 300,
"trigger_adc_zero": 400,
"vrc": true
},
// ...
}

可以看到device_class标识着当前设备的类型。
可以将其值改为controller/generic_tracker(我这里是将controller变成tracker,反过来也同理):

1
"device_class": "generic_tracker",

保存并关闭文件,回到lh控制台的命令行窗口,输入以下命令:

1
lh>uploadconfig

完成之后输入exit退出lh(不要直接关闭窗口),重启SteamVR,然后它的设备类型就变成的Tracker.

相关链接:

SteamVR多驱动支持

需要修改Steam目录下的config/steamvr.vrsetting文件,在这个json格式的文件中的steamvr项下增加activateMultipleDrivers

1
2
3
4
5
6
7
{
"steamvr" : {
"lastVersionNotice" : "1.3.20",
"lastVersionNoticeDate" : "1553731712",
"activateMultipleDrivers" : true
}
}

保存之后重启SteamVR即可。

在拍摄MR视频时使用第三只Controller来作为虚拟摄像机,但是如果没有第三只Controller可以用一个工具来虚拟出一个Controller:VirtualControllerDriver,需要启动SteamVR的多驱动支持。

未完待续。

微信扫描二维码,关注我的公众号。

本文标题:HTC Vive Tracker Developer Guide
文章作者:查利鹏
发布时间:2019年04月03日 11时41分
更新时间:2019年04月10日 09时42分
本文字数:本文一共有1.8k字
原始链接:https://imzlp.com/posts/2125/
许可协议: CC BY-NC-SA 4.0
文章禁止全文转载,摘要转发请保留原文链接及作者信息,谢谢!
您的捐赠将鼓励我继续创作!