2026年开始机器人远程操作
实际指南:2026年开始机器人远程操作:硬件设置,控制接口,延迟,数据收集和RCSV的远程操作平台.
部分: [电操作指南]
远程操作 - - 远程控制机器人实时 - - 是收集高质量的训练数据的最快方法,也是现代机器人部署的基础.无论你是建立模仿学习数据集还是运行远程检查试点,
机器人远程手术是什么?
遥控操作意味着一个人操作员通过控制接口控制机器人 - - 通过本地或远程网络传输命令,同时收到感官反
远程操作循环有四个阶段: (1) 操作员通过摄像头传输和自觉数据观察机器人的环境, (2) 操作员通过控制设备生成命令, (3) 命令传输到机器人并执行, (4) 所有观测和操作都会同步记录,以后作为训练数据使用. 每个阶段的质量直接影响了实时控制性能和记录数据集的下游实用性.
2026年,远程操作将服务于两个不同的目的,它们越来越融合.第一种是直接远程操作 - 人类控制机器人以远程执行有用的工作 (检查,维护,危险环境任务). 第二个是示范收集 - 人类专门使用机器人来生成模仿学习政策的训练数据,如[ACT]
需要开始的硬件
基本的远程操作设置需要五个组件:机器人臂或移动平台,摄像头,控制设备,用于流媒体和记录的计算节点,以及用于捕获同步观测和操作的记录系统.RCSV的 [租用硬件包]
控制设备的比较
控制设备是最重要的硬件选择,因为它决定了示范的质量上限.
| Control Device | 延迟 | DOF Mapped | Best For | Cost | Training Curve |
|---|---|---|---|---|---|
| Leader arm (ALOHA-style) | <2ms local | Full joint-space (6-7 DOF) | Bimanual manipulation, ACT data | $2,000-5,000 per pair | 2-4 hours |
| 3D SpaceMouse | 5-10ms | 6 DOF (Cartesian + rotation) | Single-arm pick-place, slow precision | $200-500 | 1-2 days |
| Data glove (e.g., Paxini, Manus) | 8-15ms | 15-22 DOF (hand + wrist) | Dexterous hand control, finger tasks | $5,000-15,000 | 4-8 hours |
| VR controller (Quest 3, VIVE) | 20-40ms | 6 DOF + finger triggers | Mobile base + arm, humanoid whole-body | $300-1,000 | 30 minutes |
**我们的建议:**对于收集桌面操作任务模仿学习数据的团队,领袖臂是明确的获胜者. 1:1动态映射意味着操作员的肌肉记忆直接转移到机器人,产生更平滑的示范,重复更少. 作为 ALOHA 式的领导跟随者配置 (领导和跟随者的手臂的同样的动态链) 完全消除了重定向问题 - 从领导手臂地图直接到跟随手臂上的联合命令,没有反动动态步骤.这就是为什么ACT在 ALOHA 数据上如此有效:示范是机械清洁的.
对于人形全身遥控 (Unitree G1,Booster K1),与身体跟踪相对的VR控制器是当前的标准.手跟踪的 Quest 3 提供了足够的指纹映射,但精密的指纹任务仍然需要专门的手套硬件.RCSV通过 [电话控制平台]
为什么延迟重要:50ms的门
终端到终端延迟 - - 从操作员输入到机器人运动的时间 - - 是远程操作中最重要的性能指标.
- **<20ms:**操作员没有感觉到延迟.机器人感觉像直接延伸手.这是通过在本地USB/串行连接上的领袖手臂实现的.在这个延迟时收集的数据包含了最自然的流动的人类行为.
- 20-50ms: 可感知但可管理.运营商在几分钟内适应并产生良好的示范数据. 这对于本地网络远程运营 (同一建筑中的运营商,通过以太网连接的机器人) 是典型的.
- **50-150ms:**运营商显著放缓来弥补延误.演示变得谨慎和
拙 - 运营商移动,等待反 ,调整,再等待.这种"移动和等待"模式培训缓慢和犹 的政策.数据质量大幅下降到50ms以上. - >150ms: 精细的操纵变得不实用.只有粗大定位和导航任务才能靠谱地工作.这是基于互联网的远程远程操作的典型情况.
延迟有四个组成部分,每一个必须独立测量和最小化:
| Component | Typical Range | How to Minimize |
|---|---|---|
| Control device read | 0.5-5ms | USB polling at 1kHz, avoid Bluetooth |
| Network transport | 0.1ms (local) to 200ms (cross-continent) | Wired Ethernet for local; WebRTC with STUN for remote |
| Command processing | 1-10ms | Dedicated real-time thread, avoid Python GIL on control loop |
| Motor execution | 2-20ms | Use position servo mode, not velocity; 500Hz+ servo rate |
摄像机配置:三摄像机标准
控制设备选择后,摄像头的放置是第二大影响力决定.目前操纵数据收集的社区标准是三个摄像头设置:
- ** 顶部摄像头 (固定):** 提供上下工作空间视图. 对于空间推理至关重要 - - 时物相对.
在桌面表面上0.8-1.2米上,直向下. 分辨率:640x480是足够的;更高的分辨率增加带宽,而没有相对政策改进. - **侧摄像头 (固定):**捕捉到手臂对象空间关系和接近角. 摆在桌面高度,距离工作空间中心0.6-1.0m,向下角15-30度.该摄像头捕捉到空头视图所忽略的深度线索.
- 手腕摄像头 (安装在终端效应器上): 从毫米处捕捉接入接触区.这是最具影响力的单一摄像头进行精细操纵 - - ALOHA团队和其他研究表明,添加手腕摄像头可以提高接触丰富任务的政策成功率20-40%.使用小型USB摄像头 (例如,ELP 120fps鱼眼模块,~$30) 与3D打印的安装.
相机同步是重要的. 如果观察时间标签与行动时间标签差10ms以上,则您正在训练错误排列数据的政策 - 它在t时间看到世界,但与t+delta时间的行动联系起来.在快速任务 (在200-400ms中完成的抓获),即使是20ms的错误排列也会可测量地降低政策的性能. 使用硬件触发器或基于时间标签的软件同步.
相机分辨率与
局部与远程远程操作
局部远程运营 (同一间操作员) 实现了最低的延迟 - 通常在5ms以下的端到端 - 并且是数据收集的标准.远程远程运营 (在不同的位置的操作员) 引入了网络延迟,但可实现远程检查,设施管理和分布式数据收集等部署场景. 基于 RCSV 的 [数据平台]
对于远程远程操作,视频流是瓶
ACT数据格式和记录管道
许多现代模仿学习框架 (ACT, Diffusion Policy, LeRobot) 都采用了高频5格式的训练数据,并具有特定的结构.每个集集都作为一个包含观测 (图像,联合位置,抓住状态) 和行动 (目标联合位置或速度) 的同步阵列的集群.以下是标准方案:
episode_0/
observations/
images/
cam_high (T, 480, 640, 3) uint8 # overhead camera
cam_low (T, 480, 640, 3) uint8 # side camera
cam_wrist (T, 480, 640, 3) uint8 # wrist camera
qpos (T, 7) float32 # joint positions + gripper
qvel (T, 7) float32 # joint velocities
actions (T, 7) float32 # target joint positions
timestamps (T,) float64 # Unix timestamps in seconds
metadata/
success bool # did episode achieve goal?
task_name string # e.g., "pick_cube_place_bin"
operator_id string # for tracking operator quality
下面是一个简单的Python录音脚本,它可以从OpenArm中捕获同步数据,使用三个USB摄像头.这是RCSV的录音管道运行的简化版本 - - 制作版本增加了自动检测成功,实时质量指标和云上传.
import h5py
import numpy as np
import time
import cv2
from openarm_sdk import OpenArm # RCSV OpenArm Python SDK
# Initialize hardware
arm = OpenArm(port="/dev/ttyUSB0", baudrate=1000000)
cameras = {
"cam_high": cv2.VideoCapture(0),
"cam_low": cv2.VideoCapture(2),
"cam_wrist": cv2.VideoCapture(4),
}
for cam in cameras.values():
cam.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cam.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
cam.set(cv2.CAP_PROP_FPS, 30)
CONTROL_HZ = 50 # 50 Hz control loop
MAX_STEPS = 500 # 10 seconds at 50 Hz
dt = 1.0 / CONTROL_HZ
def record_episode(episode_id: int, hdf5_path: str):
"""Record one teleoperation episode to HDF5."""
images = {k: [] for k in cameras}
qpos_list, qvel_list, action_list, ts_list = [], [], [], []
print(f"Recording episode {episode_id}... Press Ctrl+C to stop.")
try:
for step in range(MAX_STEPS):
t_start = time.time()
# Read leader arm (control device) as target action
leader_state = arm.read_leader()
action = leader_state.joint_positions # 7-dim: 6 joints + gripper
# Read follower arm (robot) current state
follower_state = arm.read_follower()
qpos = follower_state.joint_positions
qvel = follower_state.joint_velocities
# Send action to follower
arm.command_follower(action)
# Capture images from all cameras
for name, cap in cameras.items():
ret, frame = cap.read()
if ret:
images[name].append(frame[:, :, ::-1]) # BGR to RGB
qpos_list.append(qpos)
qvel_list.append(qvel)
action_list.append(action)
ts_list.append(time.time())
# Maintain control frequency
elapsed = time.time() - t_start
if elapsed < dt:
time.sleep(dt - elapsed)
except KeyboardInterrupt:
pass
# Write to HDF5
T = len(qpos_list)
with h5py.File(hdf5_path, "a") as f:
ep = f.create_group(f"episode_{episode_id}")
obs = ep.create_group("observations")
img_grp = obs.create_group("images")
for name in cameras:
img_grp.create_dataset(name, data=np.array(images[name]),
chunks=(1, 480, 640, 3), compression="gzip")
obs.create_dataset("qpos", data=np.array(qpos_list, dtype=np.float32))
obs.create_dataset("qvel", data=np.array(qvel_list, dtype=np.float32))
ep.create_dataset("actions", data=np.array(action_list, dtype=np.float32))
ep.create_dataset("timestamps", data=np.array(ts_list, dtype=np.float64))
print(f"Episode {episode_id}: {T} steps saved ({T / CONTROL_HZ:.1f}s)")
收集高质量的示范
良好的示范是一致的,多样化的和成功的.一致性意味着遵循对象放置,方法策略和任务完成的定义协议.多样性意味着各个事件中不同的对象位置,方向和环境条件. 在RCSV的质量控制包括实时事件审查,自动检测异常情况,以及在示范活动落后时重启触发器. 在我们的 [机器人训练数据指南]
运营商培训议定书
经验丰富的运营商生产比初学者更一致的演示,这直接转化为政策绩效.在RCSV,新运营商通过结构化的培训协议:
- ** 熟悉性 (30 分):** 免费使用控制设备和机器人进行探索. 没有数据记录. 目标:为机器人工作空间,速度限制和力限制建立动感直觉.
- 练习节目 (20-30节目): 经验丰富的操作员的反
,完成目标任务.这些节目不是用于训练,而是热身数据. - **校准测试 (10集):**记录10集,测量成功率,完成时间和轨道顺
度 (平均 车大小).运营商必须在转向生产记录之前在参考集中的2个标准偏差内达到90%以上的成功率和轨道顺 度. - **制作记录:**记录训练数据的示范.每50集,重新检查质量指标是否漂移.
剧情质量指标
对于每次记录的事件,RCSV的管道计算和记录这些质量信号:
- **完成时间:**应在参考平均值的1.5倍内.异常快的事件通常表明过错的步骤;异常慢的事件表明操作员犹
. - **轨迹顺利:**平均
(联合位置的第三衍生值) 应低于特定任务门 .高 表示将导致政策混乱的纠正和犹 . - **抓住时间:**从第一次接触到稳定的抓住时间.长时间
缩 (>2s对于简单的抓住) 表示应该重新进行的示范. - **任务成功:**二进制--该集是否达到目标状态?失败的集分别记录,可用于负面例子或恢复行为训练,但不应列入初级训练集.
常见的失败模式和如何解决它们
在支持数百个远程操作程序后,RCSV已经列出了团队在首次设置远程操作时遇到的最频繁的故障模式:
| Symptom | Root Cause | Fix |
|---|---|---|
| Robot jerks or oscillates during teleoperation | Control loop rate too low (<30Hz) or PD gains too high | Increase control loop to 50Hz+. Reduce P gain by 30% and add velocity damping. Check USB polling rate. |
| Policy trained on teleop data fails at deployment | Camera moved between collection and deployment, or lighting changed | Use rigid camera mounts with alignment markers. Log camera intrinsics/extrinsics per session. Match lighting. |
| Video feed lags during remote teleop | H.264 encoder buffering frames for quality, not latency | Use -tune zerolatency and -preset ultrafast in ffmpeg/GStreamer. Reduce resolution to 480p. |
| 夹爪 commands lag behind arm commands | 夹爪 on separate serial bus with different polling rate | Synchronize arm and gripper commands in the same control loop iteration. Use a single serial bus if possible. |
| Timestamps in HDF5 not monotonically increasing | NTP time sync adjusting system clock during recording | Use time.monotonic() for relative timestamps. Store absolute time only in episode metadata. |
| Operator fatigue after 30 minutes of collection | Ergonomic issues with leader arm position or weight | Mount leader arm at elbow height. Add arm rest. Enforce 10-min break every 45 min. Rotate operators. |
软件堆:什么运行在哪里
制作远程操作设置在三个机器上运行软件.了解这个架构可以帮助您调整延迟和同步问题:
- **机器人端计算 (例如,Jetson Orin Nano, $249):**运行实时控制循环 (50-500Hz),摄像头捕捉和编码,以及执行操作.该机器必须运行实时内核 (PREEMPT_RT) 或至少低延迟内核以避免
.Python是可接受的登录路径,但内部控制循环应该是C++或使用GIL释放的Python扩展. - **操作员工作站:**运行控制界面驱动程序,视频解码器和操作员UI.对于本地远程操作,这可能是机器与机器人侧计算相同的机器.对于远程远程操作,它是通过WebRTC或定制UDP流程协议连接的单独机器.
- **数据服务器/云:**运行节目存储,质量指标计算,数据集管理和培训管道协调.RCSV [数据平台]
T12 ) 作为一个管理服务.
如何使用RCSV启动远程操作程序
根据你的起点,有三个路径:
- ** 完整服务数据收集 ($2,500试点 / $8,000竞选):** 您描述您的任务和目标机器人 - RCSV提供了硬件,训练有素的操作员,实验室环境和后处理数据集,以 HDF5/RLDS格式.最适合团队需要培训数据而不需要建立电话基础设施.从 [数据服务]
T13 开始. - **平台+你的硬件:**你拥有或租
机器人--RCSV通过 [数据平台]提供电话软件堆 ,录音管道,数据集管理和质量指标. - **硬件租
+平台:**通过RCSV的 [租 计划] ( T15) 租 一个 [OpenArm] ( T15 ) 或其他平台,并包括整个软件堆 .从零到数据收集的最快路径 - 大多数团队在硬件交付后4小时内记录他们的第一集.
对于那些想在进行任务之前探索接口的团队来说, 尝试[虚拟远程操作沙箱]
相关阅读
- ACT政策解释 -- 最受欢迎的模仿学习算法如何使用电话数据
- [机器人模仿学习中常见的错误]
- [机器人训练数据是什么?]
- RCSV数据服务 --管理的远程运营和数据收集
- [如何租用机器人]
T22 ) -- 获得你的电话程序的硬件
准备开始收集电话数据吗?
提供全服务的远程运营数据收集,租用硬件和软件平台来管理数据集.
[数据服务]







