steamVR如何不用头显获取tracker的定位

steamVR如何不用头显获取tracker的定位

其实在做很多项目的时候,位置是很重要的。定位的获取在做机器人的项目中也是非常重要。目前的课题是做机器人的智能编程,涉及到加工区域的定位。无意中在商场看到一个HTC的VR游戏体验的活动,从这里获取到可以用HTC的光塔来定位的想法,在网上搜查了一番,已经有很多前辈做过这个事情。时至今天在做这个事情,按照前人的路子走下来,还是有点曲折的。现在整理下来,供大家参考。

首先是设备。通过询问HTC的技术客服,他们的回答统一是可以开发,但是必须购买头显,这样就能够获取追踪器的位置。但是看前辈写的文章,可以绕过头显来启动steamvr,从而获取追踪器的位置。

所以我决定只买2只光塔,1只追踪器tracker。按照前辈的方法来获取追踪器的位置。

其次是购买设备。淘宝上直接购买,但是现在光塔已经有2.0版本的了,通过咨询淘宝客服,2.0与1.0的光塔都能够支持tracker,只有两点不同,一是价格,相差2倍左右,二就是定位的区域,注意这里是区域不是精度。1.0版本的44m,2.0版本能够66m,反正有钱就买个2.0的。

对于一般的开发项目,我觉得首先是设备,然后是设备的驱动,然后是如何获取设备的信息参数等等。

现在设备有了,那么如何安装设备的驱动呢?HTC的东西都是在steamvr中安装驱动,在HTC官网上下载一个steam,这个是一个游戏平台,在很多VR的游戏在这个平台上玩,在它的工具栏目,有个steamVR的插件,点击安装,默认应该就是最新的版本了。通过steamVR,我们来连接设备——追踪器,定位器。

那么问题来了,我们点击启动steamVR后,他会提示没有找到头显,错误代码好像是108,没有截图。这个就是所有前辈都提到的要修改参数才能避免的。网上的中文教程大多数是修改"requireHmd": false。有很多人修改了这个参数之后,就能够正常运行steamvr了,但是很不幸,我这次修改了这个参数后,依旧不能够连接,仍然是报错108。我猜想是steamvr的升级把这个漏洞修补了。

依旧找解决的方法,现在的我很迷茫,到底能不能绕过头显直接用tracker,不过有找到一个前辈的提问,里面给出了一个国外前辈的解决方法。这个方法见链接。这是国外的一个网站,我这边很难打开,用了学校的VPN才打开。现在总结一下前辈的思路。

1)既然是设备是通过steamVR来驱动链接的,那么在steamVR启动的时候,肯定就要做设备初始化等等的工作,那么设备加载初始化的时候,到底是加载了那些文件了,导致非要加载头显(HMD)。
2)如何找到steamvr启动时候加载的文件呢?如图:
图1

在这里插入图片描述

在这里的设置日志目录,我们会找到日志的目录。一般是在steam\logs文件夹中。其中的vrserver.txt(驱动)就是放着驱动的加载日志。点击开可以看到,都是加载了哪些驱动。

Fri Dec 18 2020 11:40:30.116 - [Settings] Load Default Json Settings from C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\htc\resources\settings\default.vrsettings
Fri Dec 18 2020 11:40:30.116 - [Settings] Load Default Json Settings from C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\lighthouse\resources\settings\default.vrsettings
Fri Dec 18 2020 11:40:30.116 - [Settings] Load Default Json Settings from C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\null\resources\settings\default.vrsettings
Fri Dec 18 2020 11:40:30.116 - [Settings] Load Default Json Settings from C:\Program Files (x86)\Steam\steamapps\common\SteamVR\resources\settings\default.vrsettings
Fri Dec 18 2020 11:40:30.117 - [Settings] Load Json Settings from C:\Program Files (x86)\Steam\config\steamvr.vrsettings

这里有5个文件的路径,就是接下来我们可能要修改的。这些文件都用文本打开就可以直接修改,然后记得保存。经过实验,就两个文件需要修改,第一个是Steam\steamapps\common\SteamVR\resources\settings\default.vrsettings(上面第4个路径的文件),这个里面注意修改三个参数,一个是是否需要头盔,这个参数就是通常说的要修改的地方。另外还有两个强制驱动,改为null,还有强制多个驱动,改为true,如下表所示。

"requireHmd" : false
"forcedDriver" : "null"
"activateMultipleDrivers" : true

另外就是null driver(上面第3个路径的文件)中修改如下:

{
	"driver_null" : {
		"enable" : true,
		"serialNumber" : "Null Serial Number", 
		"modelNumber" : "Null Model Number",
		"windowX" : 0,
		"windowY" : 0,
		"windowWidth" : 2160,
		"windowHeight" : 1200,
		"renderWidth" : 1512,
		"renderHeight" : 1680,
		"secondsFromVsyncToPhotons" : 0.01111111,
		"displayFrequency" : 90.0
	}
}

保存一下,然后在启动steamvr后,就会绕过头盔来直接启动连接tracker。

当然第一次启动的时候,会让你设置房间,我选择头显的那种,这个设置不需要控制器就能够设置成功。连接tracker的时候,长按追踪器中间的那个蓝色三角形就好了,等灯绿了就连接上了。

然后就是如何获取位姿的六个变量值。也是有教程,通过python脚本来获取,首先就安装python等等,这个没有难度,安装好之后,就是下载运行那个tracker_test.py文件。这里下载这个代码,在github可以下载,不大,很小。下载下来会有个readme文件,一定要先读一下,可以看到他里面要修改序列号,这个设备的序列号是哪里获取?就是你运行一下就能tracker_test.py,它会先输出设备的序列号。如下图:
在这里插入图片描述

然后你就按照这个序列号(上图的1)来修改config.json里面的内容,注意这些文件都可以用TXT来打开的。然后你再运行这个就好了。

可能首次运行的时候,你会得到一个如上图的2的问题,这个是因为v.devices[“controller_1”].get_pose_euler() also returns None(这个是哪里来的,.py文件用文本打开,你会看到这个代码),为什么会是None呢,你可以用print来打印一下,就是在文本中把for那几行用#号注释掉,然后加个print(v.devices[“controller_1”].get_pose_euler()),记得保存,重新运行一下py文件,就会看到。
这个问题当时我觉得是不是没有头显虽然能够启动steamvr,但是依旧不能够输出数据。因为我的定位器和追踪器一直显示如下图的状态
在这里插入图片描述
在这里插入图片描述
然后在github的问题(issue)中,浏览了一下前人遇到的问题,看到也有和我一样的问题,就弱弱的问了一下前辈是否解决了问题,没想到有个前辈居然回复我了,是因为追踪器里定位器太近了。。。。好吧,之前我的定位器就在桌子上,追踪器也在桌子上,相差不到10cm,等我将定位器固定在支架上,距离拉大到1-2m 的时候 ,我就出现了之前图片中3 的情况了。至此,得到了追踪器的位姿。为后续的开发开了一个好头。

**注意:**更新steamvr之后,会将resource/setting中的文件更新(上面第4个文件),这时候需要重新修改三个参数,才能够正常使用。另外一个小技巧,开steamvr的时候断开网络,这样不会自己更新。

  • 15
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 28
    评论
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值