遥操数采及数据转换
本页面向傅利叶 GRW 轮式底盘机器人的遥操作数据采集及后续数据转换流程,涵盖从设备准备、外骨骼遥操、数采平台使用到异常处理的完整操作指引。
1. 概述
遥操数采系统是傅利叶 GRW 轮式底盘机器人的本地数据采集方案。系统通过外骨骼设备和客户端应用实现机器人整机无线遥操控制,并在遥操过程中实时采集动作数据、姿态数据、摄像头图像及深度数据,支持本地存储。系统无需依赖云端服务器,适用于工业、科研实验等对数据安全性和离线使用有要求的场景。
核心功能:
| 功能 | 说明 |
|---|---|
| 低门槛操作 | "一键操作 + 状态引导"设计,外骨骼仅通过红/蓝功能键即可完成状态切换与采集启停,新手用户无需专业培训即可快速上手 |
| 整机遥操 | 支持 GRW 整机控制,涵盖轮式底盘移动、转向、腰部动作、手臂动作等核心姿态,遥操响应延迟低,动作指令精准同步 |
| 无线连接 | 基于局域网无线通信,摆脱有线束缚 |
| 多维度采集 | 以用户控制的每条采集时机为单位,同步采集动作数据、姿态数据、摄像头图像及深度数据 |
| 可视化反馈 | 实时展示遥操状态、采集状态、系统日志、机器人第一视角视频及第三视角姿态 |
2. 遥操前准备
2.1 机器人准备
- 机器人电源和 NUC 开机,等待约 20 秒
- 拧开急停红色接合旋钮
2.2 设备拓扑
| 设备 | 连接方式 |
|---|---|
| PC3(遥操主控电脑) | 连接电源;USB + HDMI 连接键盘、鼠标、显示器;USB 连接外骨骼设备;网线连接小米路由 |
| NUC(机器人端) | 机器人开机后,将相机插入运行遥操的 NUC 的 USB 口 |
| 小米路由 | 网线直连 PC3;连接底盘路由器或机身无线网卡(详见下方网络拓扑说明) |
相机必须插入运行遥操的 NUC 的 USB 口,确保遥操过程中相机图像能够被正常采集。
其他模块通过 grsensor 读取相机,遥操则直接读取相机驱动,两者会争抢同一相机。整机装好包后默认由 grsensor 占用相机驱动,此时直接启动遥操会没有画面,需 先手动关闭 grsensor 中的相机配置。
在机器人 NUC 上编辑配置文件:
sudo nano /opt/fftai/fourier_config_center/function_config/sensor/cfg_grw.json
将 sensor_enable.camera.orbbec.head_downward 由 true 改为 false:
"sensor_enable": {
"camera": {
"orbbec": {
"head_downward": false
}
}
}
保存后重启主线服务:
sudo systemctl restart fftai
完成后 grsensor 不再占用相机驱动,遥操可正常出图。
网络拓扑说明:
GRW 的底盘自带路由器,机身本身没有路由器。存在两种网络连接方式:
| 方式 | 连接路径 | 说明 |
|---|---|---|
| 方式一 | 机身无线网卡 → 小米路由器 | 机身通过无线网卡直接连接小米路由器 |
| 方式二(推荐) | NUC 网线 → 底盘路由器 → 小米路由器 | 机身无线网卡仍可连接外网,内网遥操与外网联网兼备 |
推荐使用方式二:NUC 通过网线连接底盘路由器,底盘路由器再连接小米路由器。此时机身的无线网卡还可以连接外网,内网遥操与外网联网双网络条件兼备。
2.3 外骨骼穿戴
- 设备可根据使用者身高调节手臂组件长度,以适配整套外骨骼的整体长度
- 遥操功能启动并规范穿戴外骨骼后,打开电脑监控软件,界面内的虚拟机器人将同步复刻使用者的肢体动作
- 启动 遥操模式前,必须校验遥操查看器内虚拟机器人姿态,确保其与实体机器人当前姿态完全匹配

启动遥操前务必完成虚拟机器人与实体机器人的姿态匹配校验,否则可能导致机器人异常动作。
3. 外骨骼遥操指南

3.1 右手柄按键
| 按键 | 功能 |
|---|---|
| 红色 | 第一次短按:进入遥操准备;第二次短按:控制机器人 后续短按:开始/结束录制;长按三秒:丢弃当前录制数据 |
| 蓝色 | 短按 退出遥操 |
| 黑色 | 短按左转腰 |
| 白色 | 短按右转腰 |
| 摇杆 | 上:腰部抬起;下:腰部下降;左:向左转;右:向右转 |
| 扳机 | 手指开合 |
3.2 左手柄按键
| 按键 | 功能 |
|---|---|
| 蓝色 | 短按向前弯腰 |
| 红色 | 短按腰部起来 |
| 摇杆 | 上:向前走;下:向后走;左:向左平移;右:向右平移 |
| 扳机 | 手指开合 |
4. 数采平台使用
4.1 检查状态
在主控执行以下命令,看到下图所示输出即为成功(内含三条 ID,分别为 pc1、pc3、admin):
daemon-cli list p

4.2 打开数采平台
使用谷歌浏览器,在地址栏输入 PC3 的 IP 地址或 127.0.0.1,即可打开数采单机版平台。

4.3 连接云平台
- 点击右上角进入系统配置
- 依次填写"云端地址"、"站点 ID"、"机器人 ID"、"硬件版本号"
- 点击保存
- 右上角显示已连接即表示成功连接数采云平台
4.4 新建数采任务
新建云端任务: 由数采云平台新建后直接派发到单机版平台,打开单机版平台点击刷新后即可在任务列表查看。
新建单机任务:
- 点击"新建采集任务"
- 填写任务描述,选择生效
- 点击确认生成单机 任务
4.5 唤醒与关闭遥操
唤醒遥操:
- 点击开始采集任务(如无采集任务,系统会自动生成一个单机版任务)
- 点击"唤醒遥操"按钮
- 遥操唤醒成功后自动跳转到监控界面,显示
idle状态即表示成功

关闭遥操:
- 确认机器人为
disengaged状态
2. 点击"关闭遥操"按钮
3. 遥操关闭成功后,外骨骼停止输出,监控画面停止
4.6 遥操查看器
成功唤醒遥操后,点击遥操查看器可重新唤醒监控界面,查看机器人当前状态。
4.7 高级配置
勾选"高级选项"后点击遥操高级配置,可调整以下参数:
| 配置项 | 说明 |
|---|---|
| 遥操速度系数 | 可选择三种预设速度系数,或根据熟练度自定义速度 |
| 手势调整 | 自定义手势映射参数 |
| 恢复默认参数 | 一键恢复所有配置为初始值 |
更改配置后,需点击确认并重新唤醒遥操才会生效。
4.8 任务查询
可根据任务的不同状态搜索已创建任务,点击"高级选项"可增加云端任务搜索状态。
4.9 数据管理
查看采集信息
查看本地硬盘剩余空间、未上传未删除的数据量、已上传未删除的数据量。
数据上传
小米路由需要连接互联网。
- 选择需要上传的任务,点击"编辑"
- 填写操作员、安全员,选择是否生效及是否自动上传
- 点击确认同步云端任务
- 同步云端任务 ID 后,数据将自动上传到云平台
- 开启"上传后删除"选项,数据上传后会自动清理本地文件
- 点击确认后等待上传完成

删除本地数据
- 选择需要删除的任务,点击"数据删除"
- 勾选需要删除的数据项
- 点击确认即可删除本地数据
4.10 数据下载
| 方式 | 操作 |
|---|---|
| 直连 PC3 | 使用外接显示器连接 PC3,访问 /midea/fourier/s3data 路径查看/下载数据 |
| 通过云平台 | 从数据云平台获取(具体操作请参考云平台相关文档) |
5. 注意事项与异常处理
5.1 安全注意事项
- 遥操过程中请勿剧烈摆臂或突然松开手柄,以免对机器人本体或周围环境造成危险
- 极限姿态会对机器人本体和环境造成危险,例如:腰部降到最低时极限扭腰、腰部降到最低持续长时间行驶、腰部降到最低提起重物等
- 请勿边充电边在无保护状态下使用机器人——电池充满电的瞬间可能出现断电
- 使用时请注意电池电量,电量降至最后一格时存在断电风险
5.2 退出遥操流程
根据现场情况选择合适的方式退出遥操,优先级从高到低:
| 方式 | 适用场景 | 安全性 | 操作流程 |
|---|---|---|---|
| 外骨骼安全退出 | 外骨骼与两台 PC 正常连接 | 最高:机器人由算法保持稳定姿态 | 确保底盘稳定 → 右手蓝色按钮 → 进入"遥操唤醒"状态 → 点击"关闭遥操" |
| 强制关闭遥操 | 外骨骼蓝色按键失效但 PC 仍连接 | 较低:机器人短时靠电机默认蓄力保持姿态 | 做好防护准备 → 点击"关闭遥操"按钮 → 遥操关闭 |
| 物理急停 | 紧急情况或 PC 断连 | 最低:电机瞬间断电 | 做好防护准备 → 拍下腰部红色急停按钮 → 重启机器人和遥操客户端 |
5.3 数采软件获取不到 IP
按以下顺序排查:
- 检查 PC1/PC3 是否已上电
- 检查小米路由是否正常工作
- 检查底盘路由器(或机身无线网卡)是否已连接小米路由
- 尝试将 PC1/PC3 重新开关机
5.4 紧急状态处理
发生紧急情况时,可通过以下任一方式立即关闭机器人:
- 使用远程急停遥控器关闭机器人
- 按下机器人腰部红色紧急急停按钮关闭机器人
6. 数据转换
convert_parquet_to_lerobot.py 用于将机器人采集的原始 Parquet 数据集转换为标准 LeRobot Dataset 格式,支持状态与动作解析、图像解码与重采样、多模态时间戳对齐,输出可直接用于训练和仿真。
开源链接:fourier-lerobot/scripts/convert_parquet_to_lerobot.py
6.1 输入数据结构
每个 Episode 目录需包含以下文件:
episode_xxx/
├── metadata.json
├── observation.state.parquet
├── observation.base_state.parquet
├── action.parquet
├── action.base.parquet
└── observation.images.camera_top.parquet
| 文件 | 关键字段 | 说明 |
|---|---|---|
observation.state.parquet | timestamp_utc、observation.state | 关节状态列表 [{"name": "...", "value": ...}] |
action.parquet | timestamp_utc、action | 动作列表 [{"name": "...", "value": ...}] |
observation.images.camera_top.parquet | timestamp_utc、observation.images.camera_top | AVIF 编码图像字节流 |
metadata.json | notes | Episode 任务描述,可用于生成 task |
6.2 核心模块
| 模块 | 功能 |
|---|---|
RobotConfig | 定义机器人关节、底盘和相机配置 |
StateConverter | 解析 state 和 base_state,输出 Tensor[N, StateDim] |
ActionConverter | 解析 action 和 base_action,输出 Tensor[N, ActionDim] |
VideoConverter | 解析 camera 图像,支持 resize 和正方形裁剪 |
DataConverter | 多模态数据时间戳同步、最近邻采样、Frame 构建 |
6.3 使用方法
基础用法
python convert_parquet_to_lerobot.py \
--raw-dir ./raw_data \
--repo-id user/grw_dataset