VisionProTeleop 架构全解析:gRPC、WebRTC 与 RealityKit 如何协同工作?
VisionProTeleop 架构全解析gRPC、WebRTC 与 RealityKit 如何协同工作【免费下载链接】VisionProTeleopVisionOS App Python Library to stream hand tracking data from Vision Pro, video/audio stream to Vision Pro.项目地址: https://gitcode.com/gh_mirrors/vi/VisionProTeleopVisionProTeleop 是一套用于机器人遥操作的开源架构它让 Apple Vision Pro 成为机器人的眼睛和手一端通过gRPC把手的骨骼追踪数据实时上行给 Python 客户端另一端通过WebRTC把机器人摄像头视频流下行回 Vision Pro再由RealityKit在空间里渲染仿真场景。本文将拆解这三大技术栈的分工与协作链路帮助你快速理解整套 VisionProTeleop 架构的核心设计。先看一张图VisionProTeleop 架构全景在深入代码之前先看项目自带的官方架构图它清晰地展示了数据如何在开发机、仿真器和 Vision Pro 三者之间流动从图中可以看到开发机上的物理仿真如 MuJoCo把模型和关节数据通过mujocoARViewer桥接层推送到 Vision ProVision Pro 侧的 RealityKit/ARKit 负责渲染与手势识别再把手腕、手指、头部的追踪结果回流给仿真形成闭环。项目的另一张高层示意图则展示了更完整的遥操作链路——头显采集人手动作指令流向机械臂、灵巧手和四足机器人等多种执行端![VisionProTeleop 整体遥操作架构示意图](https://raw.gitcode.com/gh_mirrors/vi/VisionProTeleop/raw/4c549905c2a8b214d79f7cd88e535101a1ce32af/Tracking Streamer/Supporting files/Assets.xcassets/graph2.imageset/diagram_visionpro.png?utm_sourcegitcode_repo_files)VisionProTeleop 架构由哪三大组件构成VisionProTeleop 架构分为三个部分各司其职Tracking StreamerVisionOS 应用运行在 Vision Pro 上负责采集手/头追踪数据、接收视频/音频流、用 RealityKit 渲染仿真场景代码位于Tracking Streamer/目录avp_streamPython 库运行在你的电脑或机器人上负责接收追踪数据、把相机画面/仿真画面推回 Vision Pro核心实现在avp_stream/streamer.pyTracking ManageriOS 应用管理云端录像、摄像头标定与数据集分享Tracking Viewer/目录。三者通过两条数据高速公路通信gRPC 通道负责追踪数据上行与仿真控制WebRTC 通道负责视频/音频下行与跨网络直连。下面分别拆解。数据上行gRPC 如何传输手部追踪数据Vision Pro 采集到的手部骨骼数据走的是 gRPC 双向流。协议定义在avp_stream/grpc_msg/handtracking.proto中每个Hand消息包含手腕的 4x4 变换矩阵wristMatrix和一组关节矩阵skeleton每只手约 24~25 个关节HandUpdate再把左右手和头部数据打包成一次更新。Vision Pro 侧由Tracking Streamer/GRPCServer.swift启动 gRPC 服务器默认端口12345使用 grpc-swift 2 的HandTrackingServiceImpl实现StreamHandUpdates双向流接口。这里有个巧妙设计Python 客户端连上来后会先发一条特殊的发现消息把 IP 编码进矩阵字段Vision Pro 据此自动记住 Python 端的地址无需手动配置。Python 侧在avp_stream/streamer.py中通过VisionProStreamer连接这个服务把收到的骨骼矩阵换算成便于机器人使用的格式TrackingData并处理捏合距离、手腕旋转等特征相关工具函数见avp_stream/utils/grpc_utils.py。仿真控制MuJoCo AR 服务在 VisionProTeleop 架构中的作用如果你要遥操作的是仿真机器人VisionProTeleop 架构提供了第二组 gRPC 服务——MuJoCo AR。协议定义在avp_stream/mujoco_msg/mujoco_ar.proto服务端是Tracking Streamer/MuJoCo/MuJoCoGRPCServer.swift默认端口50051它实现了三类核心 RPC模型传输SendUsdzUrl/SendUsdzData/SendUsdzDataChunked把仿真场景的 USDZ 模型推送到 Vision Pro 空间里加载姿态流StreamPoses/UpdatePoses把仿真中每个刚体的位置、四元数姿态实时下发驱动 AR 场景里的模型运动手部追踪回流StreamHandTracking把 Vision Pro 的手部数据送回 Python用于闭环控制仿真机器人。Python 侧调用configure_mujoco()即可接入它会自动把 MuJoCo XML 转成 USDZ 发送到 Vision Pro再以 120Hz 的频率推送姿态更新实现仿真在 AR 中呈现的效果。数据下行WebRTC 如何把视频/音频送到 Vision Pro追踪数据是上行的而机器人相机画面是下行的——这趟旅程由WebRTC完成。Tracking Streamer/WebRTCClient.swift基于 LiveKitWebRTC 实现包含视频轨videoTrack、音频轨audioTrack以及若干DataChannel数据通道。avp_stream中的configure_video()把相机帧编码成 H.264 视频流通过 WebRTC 推送到 Vision Pro 显示configure_audio()类似地推送音频。相比把画面编码进 gRPCWebRTC 天生具备低延迟、抗抖动、自适应码率的优势非常适合实时遥操作场景。跨网络模式WebRTC DataChannel 与信令服务器同一 Wi-Fi 下两端直接用 IP 通信即可但机器人实验室往往在防火墙后面所以 VisionProTeleop 架构还提供了外部网络模式。流程是这样的Vision Pro 生成一个房间码并连接信令服务器infrastructure/signaling-server/基于 Cloudflare Worker 的 WebSocket 实现核心代码在src/index.tsPython 客户端用同一个房间码加入信令服务器完成 SDP 交换和 ICE 协商必要时借助 TURN 中继穿透 NAT连接建立后一切照旧。这套模式下USDZ 仿真模型也通过 WebRTC 的 DataChannel 分块传输WebRTCClient.swift中的UsdzTransferMetadata与分块重组逻辑Python 侧对应实现见avp_stream/streamer.py的_load_and_send_scene_webrtc()。项目还提供了avp_stream/bridge_avp.py帮助在两台主机之间搭建跨网络桥接。渲染层RealityKit 如何在空间里呈现仿真场景VisionProTeleop 架构的最后一公里是RealityKit渲染。Tracking Streamer/MuJoCo/MuJoCoStreamingView.swift使用 SwiftUI 的RealityView搭建 AR 场景收到 USDZ 后加载为ModelEntity并添加到场景收到姿态更新后按pythonToSwiftNameMap把 Python 端的关节名映射到 RealityKit 实体逐帧更新每个ModelEntity的Transform同时用 ARKit 的设备锚点把整个仿真场景放置在真实世界的桌面上实现空间对齐。这样你就能透过 Vision Pro 看到一只悬浮在桌面上的虚拟机械臂并用自己的手直接遥控它所有位姿都由 gRPC 通道实时驱动。其他组件如头部件、菜单面板Tracking Streamer/️Menu/等也都在这一渲染框架内协作。数据约定坐标系统与手部骨骼在架构中的意义多套系统协同坐标约定至关重要。VisionProTeleop 架构提供了两套标准来保证数据一致坐标系统上图区分 Z 轴向上ZUP仿真常用与 Y 轴向上YUP两种约定Python 侧se3_utils.py中的mat2posquat()、quaternion_to_matrix()等工具负责矩阵与四元数的换算手部骨骼约定下图定义了 27 个关节的编号与命名handWrist、各手指的 knuckle/tip 等保证从 ARKit 到手部数据的映射一致性能如何VisionProTeleop 架构的延迟表现遥操作对延迟极其敏感。项目内置了完整的延迟基准测试工具avp_stream/utils/latency_benchmark.py、avp_stream/latency_test.py可在视频帧中注入时间戳来测量端到端往返延迟。官方基准图展示了不同视频分辨率下的延迟表现实测数据也存放在benchmarks/目录有线/无线、单目/双目等组合项目用 WebRTC 时一般能达到较低延迟。值得一提的是verification_engine.py等模块还能在开发阶段验证追踪数据的正确性。总结三大技术栈如何拧成一股绳简单总结 VisionProTeleop 架构的分工gRPC负责控制面——手/头追踪数据上行端口 12345、仿真模型与姿态传输端口 50051特点是结构化、强类型、双向流WebRTC负责媒体面——视频/音频下行以及跨网络的 P2P 连接与 DataChannel 文件传输特点是低延迟、能穿透 NATRealityKit负责呈现面——在空间计算环境中加载 USDZ、渲染仿真、对齐真实世界坐标。三者各取所长、各司其职这正是 VisionProTeleop 架构的精妙之处gRPC 传指令WebRTC 传画面RealityKit 做舞台。无论你是想二次开发、接入新机器人还是研究空间遥操作方案沿着这三条主线去读源码VisionOS 端在Tracking Streamer/Python 端在avp_stream/都能很快上手。【免费下载链接】VisionProTeleopVisionOS App Python Library to stream hand tracking data from Vision Pro, video/audio stream to Vision Pro.项目地址: https://gitcode.com/gh_mirrors/vi/VisionProTeleop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Palworld存档转换实战指南:3分钟看懂SAV转JSON与无损回写

Palworld存档转换实战指南:3分钟看懂SAV转JSON与无损回写

Palworld存档转换实战指南:3分钟看懂SAV转JSON与无损回写 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 帕鲁玩家的存档是一串谁也读…

2026/8/18 16:47:13 阅读更多 →
逆向工具升级前容易漏掉的兼容性项

逆向工具升级前容易漏掉的兼容性项

逆向工具升级前容易漏掉的兼容性项 讨论面向新版本的升级风险评估,关键不是罗列工具,而是回答一个更实际的问题:在 逆向工程:IDA / Ghidra 静态分析与动态调试实战 的当前边界内,什么证据足以支持下一步动作。可用的观…

2026/8/18 16:47:12 阅读更多 →
安全协作中的接口与责任边界

安全协作中的接口与责任边界

安全协作中的接口与责任边界 漏洞利用与缓解绕过:栈/堆溢出、ASLR/DEP 绕过技术剖析的工作很少卡在“缺少一个工具”。更常见的是,跨团队协作中的 API 与责任边界没有落到可执行的约束上。先确认授权测试范围、缓解配置、补丁状态和行为证据各自的责任人…

2026/8/18 16:47:12 阅读更多 →

最新新闻

AmplifyJS 请求缓存终极指南:内存缓存与 localStorage 持久化缓存全解析

AmplifyJS 请求缓存终极指南:内存缓存与 localStorage 持久化缓存全解析

AmplifyJS 请求缓存终极指南:内存缓存与 localStorage 持久化缓存全解析 【免费下载链接】amplify AmplifyJS 项目地址: https://gitcode.com/gh_mirrors/amp/amplify AmplifyJS 请求缓存是这套 JavaScript 组件库中最实用的功能之一,它位于 ampl…

2026/8/19 19:05:31 阅读更多 →
从创建到数据导出:微信投票评选完整实操流程解析

从创建到数据导出:微信投票评选完整实操流程解析

筹备一场线上评选活动,最难的不是“想”,而是“做”。当你策划了一个绝佳的评选主题,拉了赞助,定了规则,回头一看——怎么把几十位选手的资料整齐地塞进微信?怎么保证投票过程不被人刷爆?活动结…

2026/8/19 19:05:31 阅读更多 →
RK3588 AI视频分析完整流程:小规模与“明厨亮灶”场景硬件选型与算力估算指南

RK3588 AI视频分析完整流程:小规模与“明厨亮灶”场景硬件选型与算力估算指南

导读:在餐饮“明厨亮灶”、智慧门店、小型园区等小规模视频分析项目中,不少开发者和架构师常陷入“算力焦虑”——盲目堆叠高价 GPU 服务器导致成本超标,或者选错了边缘盒子导致视频卡顿丢帧。本文作为边缘计算与 AI 视频分析部署指南&#x…

2026/8/19 19:05:31 阅读更多 →
StaticScript 类型化数组支持详解:Int8Array 到 Float64Array 如何在原生层落地?

StaticScript 类型化数组支持详解:Int8Array 到 Float64Array 如何在原生层落地?

StaticScript 类型化数组支持详解:Int8Array 到 Float64Array 如何在原生层落地? 【免费下载链接】StaticScript :rocket: TypeScript compiler on top of TypeScript as frontend and LLVM as backend 项目地址: https://gitcode.com/gh_mirrors/sta…

2026/8/19 19:05:31 阅读更多 →
别再手动复制粘贴了:用 MarkItDown 把一摞乱格式文档变成干净 Markdown

别再手动复制粘贴了:用 MarkItDown 把一摞乱格式文档变成干净 Markdown

别再手动复制粘贴了:用 MarkItDown 把一摞乱格式文档变成干净 Markdown 【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown 如果你也曾在 PDF、…

2026/8/19 19:05:31 阅读更多 →
如何让小爱音箱变成真正的AI语音助手:快速上手三步进阶

如何让小爱音箱变成真正的AI语音助手:快速上手三步进阶

如何让小爱音箱变成真正的AI语音助手:快速上手三步进阶 【免费下载链接】mi-gpt 🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt Meta描述:本文教你…

2026/8/19 19:04:29 阅读更多 →

日新闻

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

【单片机课程设计/毕业设计】基于 STM32 与 WiFi 模块的室内通风智能管控系统设计 基于 STM32 的人体存在感知自适应风扇控制系统设计(018503)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/8/19 0:00:30 阅读更多 →
AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

AI如何驱动数学猜想生成:从大语言模型到自动化数学发现

1. 项目概述:当AI开始“猜”数学定理 最近在AI研究圈里,一个名为“Moonshine”的项目引起了不小的讨论。这名字本身就挺有意思,直译是“月光”,但在数学史上,它特指一个神秘而美丽的联系——魔群月光猜想,连…

2026/8/19 0:00:30 阅读更多 →
WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南

WarcraftHelper 魔兽争霸3优化实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 一台刚配的新电脑,跑《魔兽争霸3》却卡成 PPT——这…

2026/8/19 0:02:31 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/19 5:04:55 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/19 11:55:13 阅读更多 →