当前位置: 首页 > news >正文

使用 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。

目前代码正在整理中,整理完成后将公开发布。

http://www.dtcms.com/a/309400.html

相关文章:

  • Cloud Storage:一款高效便捷的云端存储解决方案
  • xcode swift项目运行、连接真机运行报错,引入文件夹失败
  • iOS 抓不到包怎么办?全流程排查思路与替代引导
  • Spring Boot 文件上传限制配置全攻略:Java 配法 vs YAML 配法
  • webpack面试题及详细答案80题(41-60)
  • k8s之DevicePlugin
  • 第13届蓝桥杯Python青少组_省赛_中/高级组_2022年4月17日真题
  • C语言---位运算符的分类与用法(按位与、按位或 |、按位异或^、按位取反~、左移<<、右移>>)
  • 【前端】CSS Flexbox布局示例介绍
  • 应用药品注册证识别技术,为医药行业的合规、高效与创新发展提供核心驱动力
  • 数据结构:算法复杂度与空间复杂度
  • 《协作画布的深层架构:React与TypeScript构建多人实时绘图应用的核心逻辑》
  • 提升文档管理:推荐一键Docker部署的全文索引搜索引擎工具
  • Ubuntu 24.04.2 LTS 安装mysql8.0.36保姆级教程(从安装到远程连接)
  • ZKmall开源商城微服务架构电商平台:服务注册与配置中心设计
  • 如何创建一个飞书应用获取自己的飞书AppID和AppSecret?
  • Spring之【循环引用】
  • 第三阶段—8天Python从入门到精通【itheima】-140节(pysqark实战——基础准备)
  • 江协科技STM32 12-2 BKP备份寄存器RTC实时时钟
  • 二分查找(基础)
  • 启动中国蚁剑
  • 东芝时钟控制的双极步进电机驱动器TB67S209FTG
  • 关于皮带机流水线的控制思想解析
  • Sklearn 机器学习 文本数据 TF-IDF实现文本向量化
  • Linux 内存管理之 Rmap 反向映射
  • 每天一点跑步运动小知识
  • 使用gcc代替v语言的tcc编译器提高编译后二进制文件执行速度
  • 分布在背侧海马体CA1区域的位置细胞(place cells)对NLP中的深层语义分析的积极影响和启示
  • Ⅹ—6.计算机二级综合题23---26套
  • CIFAR10实战