Open-TeleVision Meta Quest3进行遥操作的配置

Meta Quest3 遥操作

Open-TeleVision: Teleoperation with Immersive Active Visual Feedback 提供了使用Quest 进行本地数据流开发的使用指南,但是该指南使用并没有详细的步骤,本文记录使用Meta Quest3进行遥操作的配置步骤,英文配置链接见TeleVision issue.

1 将Quest设置为开发者模式

根据 Meta Horizon 的介绍创建/加入组织,验证账号并且打开开发者模式开关。

注册Meta账户

进入网站 Meta Quest Dashboard,注册一个Meta账号。注意要用Facebook账户来注册Meta账号,用email注册后无法在后续步骤中使用电话验证。

加入组织

Meta账户需要加入或者创建组织。这里我选择创建组织,进入Create New Organization,选择一个未被使用的名字作为组织名(这里由于我的学校名字被使用了,我直接用个人名字的英文形式作为组织名了),相当于创建了一个只有我一个人的组织,并输入所需信息。

验证账户

进入verification tab,使用ADD Mobile Number的电话验证方式完成验证,经测Two-Factor Authentication 的验证方式无法成功验证账户,Add Credit Card 的方式未尝试。

使能开发者模式

在安卓手机上下载软件Meta Horizon App, 图标是两个白色半圆弧构成的圆。进入后与头显设备配对并进入设置。
在这里插入图片描述
进入设置,

进入开发者模式,打开开发者模式开关。注意:如果没有开发者模式开关,而是超链接,说明前面有步骤没完成。

在这里插入图片描述
现在,Quest已经能够进入开发者模式了。

2安装adb

adb( (Android Debug Bridge CLI tool)可以通过Android SDK Platform Tools下载安装。下载platform-tools-latest-linux.zip后解压,在文件夹下面有一个叫做adb的二进制文件,命令行运行.adb会输出一大串文档。

lyl@pc:~/Downloads/platform-tools-latest-linux/platform-tools$ ./adb
Android Debug Bridge version 1.0.41
Version 35.0.2-12147458
Installed as /home/lyl/Downloads/platform-tools-latest-linux/platform-tools/adb
Running on Linux 6.8.0-48-generic (x86_64)

global options:
 -a                       listen on all network interfaces, not just localhost
 -d                       use USB device (error if multiple devices connected)
........................................

3 Quest连接到电脑

使用USB-C线将Quest连接到ubuntu电脑,Quest会弹出窗口询问是否允许连接,选择总是允许连接。
接着在命令行中运行

./adb devices
# 如果usb没连好
# * daemon not running; starting now at tcp:5037
# * daemon started successfully
# List of devices attached
# 如果连接好了
# * daemon not running; starting now at tcp:5037
# ADB server didn't ACK
# Full server startup log: /tmp/adb.1000.log
# Server had pid: 6444
# --- adb starting (pid 6444) ---
# 11-15 16:41:28.863  6444  6444 I adb     : main.cpp:63 Android Debug Bridge version 1.0.41
# 11-15 16:41:28.863  6444  6444 I adb     : main.cpp:63 Version 35.0.2-12147458
# 11-15 16:41:28.863  6444  6444 I adb     : main.cpp:63 Installed as /home/lyl/Downloads/platform-tools/adb
# 11-15 16:41:28.863  6444  6444 I adb     : main.cpp:63 Running on Linux 6.8.0-48-generic (x86_64)
# 11-15 16:41:28.863  6444  6444 I adb     : main.cpp:63 
# 11-15 16:41:28.865  6444  6444 I adb     : auth.cpp:416 adb_auth_init...
# 11-15 16:41:28.865  6444  6444 I adb     : auth.cpp:152 loaded new key from '/home/lyl/.android/adbkey' with fingerprint D4D3F56EE8C59535660FE246857D47C4991D79A8546714D11C1C07402749223D
# 11-15 16:41:28.865  6444  6444 I adb     : auth.cpp:391 adb_auth_inotify_init...
# 11-15 16:41:28.865  6444  6444 I adb     : udp_socket.cpp:170 AdbUdpSocket fd=12
# 11-15 16:41:28.865  6444  6444 I adb     : udp_socket.cpp:170 AdbUdpSocket fd=17
# 11-15 16:41:28.865  6444  6444 I adb     : udp_socket.cpp:274 SetMulticastOutboundInterface for index=3
# 11-15 16:41:28.865  6444  6444 I adb     : udp_socket.cpp:533 bind endpoint=0.0.0.0:5353
# 11-15 16:41:28.865  6444  6444 I adb     : udp_socket.cpp:274 SetMulticastOutboundInterface for index=3
# 11-15 16:41:28.865  6444  6444 I adb     : udp_socket.cpp:558 bind endpoint=[0000:0000:0000:0000:0000:0000:0000:0000]:5353 scope_id=0
# 11-15 16:41:29.866  6444  6444 E adb     : usb_libusb.cpp:598 failed to open device: Access denied (insufficient permissions)
# 11-15 16:41:29.866  6444  6444 I adb     : transport.cpp:1153 2G0YC5ZG1500G7: connection terminated: failed to open device: Access denied (insufficient permissions)

# * failed to start daemon
# adb: failed to check server version: cannot connect to daemon
### 实现 Meta Quest 3 和 Arduino 的 MR 灯光交互 为了实现 Meta Quest 3 控制 Arduino 进行混合现实 (MR) 中的灯光互动,可以采用蓝牙通信的方式。这涉及到几个主要部分:硬件连接、软件开发环境配置以及编程。 #### 硬件准备 - **Meta Quest 3** 设备用于创建虚拟对象并与之交互。 - **Arduino 板子** 配有 LED 或其他形式的灯作为输出设备。 - **HC-05 蓝牙模块** 安装到 Arduino 上以便无线接收来自 Meta Quest 3 发送的数据信号[^1]。 #### Unity 开发环境设置 Unity 是构建 VR/AR 应用程序的理想平台之一,在此项目中将被用来编写应用程序逻辑并处理手势识别等功能。安装好最新版本之后: - 导入 Oculus Integration Package 支持 Meta Quest 平台; - 添加必要的组件来检测手部动作或按钮点击事件触发发送指令给 Arduino; #### 编写 C# 脚本控制数据传输 下面是一个简单的例子展示怎样利用 Unity Scripting API 向外部串口发送消息: ```csharp using UnityEngine; using System.IO.Ports; public class LightController : MonoBehaviour { private SerialPort sp = new SerialPort("/dev/tty.HC-05", 9600); void Start() { if (!sp.IsOpen){ sp.Open(); } } public void TurnOnLight(){ Debug.Log("Turning on light"); sp.Write("ON"); } public void TurnOffLight(){ Debug.Log("Turning off light"); sp.Write("OFF"); } void OnDestroy(){ if(sp != null && sp.IsOpen){ sp.Close(); } } } ``` 这段脚本定义了一个 `LightController` 类,它负责打开关闭指定端口号上的串行通讯,并提供了两个方法分别对应于开启和熄灭远程灯具的操作命令。 #### Arduino IDE 下载固件上传至板卡 接下来就是为微控制器编写相应的响应机制了——当接收到特定字符串时改变 GPIO 引脚状态从而点亮或者熄灭LED灯泡。这里给出一段基础代码供参考: ```cpp String content = ""; char character; void setup() { pinMode(7, OUTPUT); digitalWrite(7, LOW); Serial.begin(9600); } void loop() { while(Serial.available()){ character = Serial.read(); content.concat(character); delay(10); if(content.endsWith("#")){ // 结束符# if(content.startsWith("ON")){ digitalWrite(7,HIGH); }else if(content.startsWith("OFF")){ digitalWrite(7,LOW); } content=""; // 清除缓存区 } } } ``` 上述草图实现了监听串行输入流中的字符序列,并依据匹配的结果执行不同的操作以达到预期效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值