使用 Vive Tracker 替代 T265 实现位姿获取(基于 Ubuntu + SteamVR)
在Dexcap这篇工作列出第二版硬件清单时,我注意到其使用 Vive Tracker 替代 Intel T265 来获取位姿数据,对这个东西的性能感到好奇,最近因为需要跟进相关工作,参与了一部分实现,由于这方面的中文资料相对较少,因此在此记录一下整个过程,便于后续参考
硬件配置为:
笔记本:Lenovo ThinkBook 14
显卡:NVIDIA RTX 4060
追踪设备:Vive Tracker 3.0
定位设备:Vive 基站 1.0
一 ubuntu上安装steam
注意:不要通过 Ubuntu 软件商店或 snap 安装 Steam!
Snap 安装的版本存在兼容性问题,后续运行 SteamVR 时可能会出现驱动不识别等 bug。推荐直接从官网下载 .deb
安装包,并使用 dpkg
进行安装:
sudo dpkg -i steam_latest.deb
安装完成后首次打开 Steam,可能会弹出如下报错:
You are missing the following 32-bit libraries, and Steam may not run:
libGL.so.1
这是因为 Steam 需要兼容 32 位程序,依赖 32 位版本的 libGL.so.1
库。
解决方案为;
1.启用系统对 32 位架构的支持:
sudo dpkg --add-architecture i386
sudo apt update
没有执行这两条命令的话,系统是不会识别任何 32 位库安装的,即使你已经安装了也无效。
2.安装与显卡驱动版本匹配的 32 位 libGL
库(以 550 为例):
sudo apt install libnvidia-gl-550:i386
3.一路按回车直到安装完成
遇到的问题(更新了内核导致与显卡驱动不匹配):
笔者电脑内核版本不清楚为什么被更新了,导致识别不到显卡驱动,nvidia-smi后看不到显卡驱动
但运行:
grep nvidia /proc/modules
仍能看到 nvidia 模块加载。这种情况通常是因为驱动未随新内核自动重编译。
解决办法:
1.安装 DKMS(Dynamic Kernel Module Support):
sudo apt install dkms
DKMS 能在内核更新时自动重编译驱动模块。
2.重新安装 NVIDIA 驱动,触发 DKMS 编译:
sudo apt reinstall nvidia-driver-550
安装完成后重启,nvidia-smi
应可正常识别显卡。至此,Steam 也能正常运行。
二 安装steamVR
这一部分相对简单,直接在 Steam 客户端中搜索 SteamVR
并安装即可。
三 Vive Tracker setup
1.将 Vive Tracker 的 USB dongle 插入电脑,如图所示。
2.给予 Tracker 所在设备节点串口权限:
sudo chmod 777 /dev/hidraw*
3.若设备无法识别,建议补充 UDEV 规则文件,以确保 hidraw 权限正确自动设置。
4.打开 SteamVR,点击顶部菜单栏的:
Devices > Pair Controller
然后:
插上基站电源;
长按 Tracker 电源键,进入配对模式;
直到显示配对成功,并在 SteamVR 中显示 Tracker 和基站状态正常,即完成连接。
四 发布位姿
为了获取并发布 Vive Tracker 的实时位姿数据,新建 Conda 环境,安装openvr
。
openvr
提供了对 SteamVR 系统中所有追踪设备的访问接口,可以用来读取 Vive Tracker 的 6DoF 位姿信息。通过其 API,可以直接获取设备的 pose。
目前代码正在整理中,整理完成后将公开发布。