具身智能数据集-数据格式

Posted by 汤键|兔子队列|Lewis on March 18, 2026 禁止转载
本文总共 2370 字 · 阅读全文大约需要 10 分钟

数据组成-维度拆解

机器人 = 感知 + 决策 + 执行 = 感知 → 决策 → 动作 → 状态反馈 → 再决策

感知数据(多模态输入)

机器人 = 摄像头 + 雷达 + 麦克风 + 触觉 数据格式 = 这些感官的"存储方式" 感知数据 = 机器人看到了什么

RGB

即:普通彩色图像

  • R = 红色(Red)
  • G = 绿色(Green)
  • B = 蓝色(Blue)
  • 每个像素 = (R, G, B)

常见文件格式:.jpg(最常见,压缩)、.png(无损)

用途: 让机器人"看见东西"

  • 识别物体(杯子、桌子)
  • 判断位置
深度(Depth)

每个像素 = 距离摄像头多远 例如:

  • 白色 = 很近
  • 黑色 = 很远

常见文件格式:.png(16位灰度图)、.exr(高精度) 700

用途: 让机器人知道"远近"

  • 抓东西
  • 避障
点云(Point Cloud)

是一堆 3D 点组成的世界 每个点:(x, y, z)

常见文件格式:.pcd(ROS常用)、.ply(通用)、.las(测绘行业) .ply文件内容示例:

1
2
3
4
5
6
7
8
9
10
11
ply
format ascii 1.0
element vertex 3
property float x
property float y
property float z
end_header

0.0 0.0 0.0
1.0 0.0 0.0
1.0 1.0 0.0

每一行 = 一个3D点 (x,y,z)

优点:真正3D(比Depth强)、可以带颜色(RGB) 缺点:文件大、处理复杂、计算成本高

用途: 真正的3D理解

  • 建地图(SLAM)
  • 自动驾驶
  • 抓取定位
语音(Audio)

即:声音信号

常见文件格式:.wav(最常用)、.mp3(压缩)、.flac(无损压缩) .wav文件内容示例:

1
[0, 120, -30, 80, ...]

本质是:声音振动的采样值(时间序列) 500

用途: 人机交互

  • "帮我拿杯子"
  • 语音控制机器人
力传感(Force Sensor)

是:机器人"触觉" 比如:

  • 抓东西时用了多大力
  • 有没有压坏东西

常见文件格式:.csv、.json、protobuf 500

用途: 精细操作

  • 抓取,抓鸡蛋不捏碎
  • 装配、插拔任务

动作数据(控制信号)

动作数据 = 机器人接下来做了什么 本质上是:发给机器人执行器的指令 动作数据 = 控制下面这些"身体部件"的指令

执行器-机械臂关节(Joint)

关节是机械臂可以"弯曲、旋转"的地方 300 就像你的:肩膀、手肘、手腕

例子:一个6轴机械臂:

1
2
3
4
joint1 → 底座旋转
joint2 → 抬手
joint3 → 伸出去
joint4/5/6 → 手腕调整角度

控制关节 = 控制整个机械臂 例如:

1
2
joint1 = 30°
joint2 = 45°

机械臂姿态就完全变了

执行器-夹爪(Gripper)

是机器人最简单的"手",≈ 手指(简化版) 通常是:两个爪子、能开(张开)/合(抓住)(开合程度:0 ~ 1) 300

执行器-灵巧手(Dexterous Hand)

是高级版"机器人手":多个手指、每个手指有多个关节 500

执行器-轮子(Wheels)

是机器人"移动"的方式 常见控制:前进/后退/转弯

1
2
3
4
{
  "vx": 0.5,
  "wz": 0.2
}

表示:向前走、同时转弯

执行器-腿(Leg)

腿的结构(核心组成): 髋关节(Hip):大腿和身体连接的地方 作用:控制腿的方向、决定往哪走 膝关节(Knee):控制腿"伸直/弯曲" 作用:抬腿、跨步、缓冲冲击 踝关节(Ankle):即脚踝 作用:保持平衡(非常关键)、调整落地角度

一条腿 = 髋 + 膝 + 踝 300 每个都是"关节"(Joint)

每个关节本质控制的是:角度(旋转) 例如:

1
2
3
hip = 30°
knee = 45°
ankle = -10°

这些角度组合起来 → 决定腿的位置

1条腿-数据示例:

1
2
3
4
5
{
  "hip": 0.3,
  "knee": 0.8,
  "ankle": -0.2
}

2条腿-数据示例:

1
2
3
4
{
  "left_leg": [0.3, 0.8, -0.2],
  "right_leg": [0.2, 0.7, -0.1]
}
执行器-云台(Gimbal / Pan-Tilt)

是可以"转动摄像头"的装置 通常有:左右转(Pan)、上下转(Tilt) 用于控制"视角":跟踪物体、调整视野

状态数据(机器人自身)

State = 机器人"当前真实情况" 你站着的时候,大脑其实一直知道这些:

  • 我现在身体倾斜多少?
  • 脚在哪里?
  • 重心在哪?
  • 腿是不是稳?

这些就是你的"状态(State)"

关节状态

每个关节现在是什么角度

1
2
3
4
5
{
  "hip": 0.3,
  "knee": 0.8,
  "ankle": -0.2
}
位姿(Position + Orientation)

机器人整体在哪里、朝哪

1
2
3
4
{
  "position": [x, y, z],
  "orientation": [qx, qy, qz, qw]
}

类似:你站在房间哪里、身体朝哪个方向

速度(Velocity)

可指:当前运动状态

1
2
3
4
{
  "linear_velocity": [vx, vy, vz],
  "angular_velocity": [wx, wy, wz]
}

类似:你是在走?跑?还是静止?

重心(center_of_mass (CoM))

重心如果不在支撑范围内,会摔倒

接触状态

即:脚有没有踩地

1
2
3
4
{
  "left_foot_contact": true,
  "right_foot_contact": false
}

类似:左脚踩地、右脚抬起来走

传感器状态(IMU)

用来判断"有没有倾斜"

1
2
3
4
5
6
{
  "imu": {
    "acc": [ax, ay, az],
    "gyro": [gx, gy, gz]
  }
}

类似于你的"平衡感"

State 和 Action 的本质区别

Action = 我让机器人做什么 State = 机器人现在真实是什么样

例子: 你下命令(Action):让膝盖弯曲一点

1
2
3
{
  "knee": 0.5
}

实际结果(State):

1
2
3
{
  "knee": 0.47
}

可能:有误差、有延迟、有抖动 所以:Action ≠ State

为什么必须要有 State

你走路时:

  • 你不会先计划100步再走
  • 而是:走一步 → 看情况 → 再调整

机器人也是一样: State → 决策 → Action → 新 State → 再决策