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

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

感知数据(多模态输入)

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

  1. 感知层:机器通过高级传感器融合算法处理多模态感知输入的部分,它帮助计算机更好地理解周围的物理环境
  2. 认知层:AI 融入传统机器人体系的核心部分,它相当于机器的"决策大脑",会基于感知层收集到的数据,以及预训练模拟中的经验,来决定如何对现实世界做出反应
  3. 行动层:这一层负责真正向物理世界产生"输出",确保动作执行的准确性,也是我们看到机器人跳跃、行走、搬运物体等行为的部分
  • 机器人 = 摄像头 + 雷达 + 麦克风 + 触觉
  • 数据格式 = 这些感官的"存储方式"
  • 感知数据 = 机器人看到了什么
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文件内容示例:

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文件内容示例:

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

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

用途

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

是:机器人"触觉"

比如:

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

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

用途

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

动作数据(控制信号)

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

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

例子:一个6轴机械臂:

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

控制关节 = 控制整个机械臂

例如:

joint1 = 30°
joint2 = 45°

机械臂姿态就完全变了

执行器-夹爪(Gripper)

是机器人最简单的"手",≈ 手指(简化版)

通常是:两个爪子、能开(张开)/合(抓住)(开合程度:0 ~ 1) 300

执行器-灵巧手(Dexterous Hand)

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

执行器-轮子(Wheels)

是机器人"移动"的方式

常见控制:前进/后退/转弯

{
  "vx": 0.5,
  "wz": 0.2
}

表示:向前走、同时转弯

执行器-腿(Leg)

腿的结构(核心组成):

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

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

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

例如:

hip = 30°
knee = 45°
ankle = -10°

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

1条腿-数据示例:

{
  "hip": 0.3,
  "knee": 0.8,
  "ankle": -0.2
}

2条腿-数据示例:

{
  "left_leg": [0.3, 0.8, -0.2],
  "right_leg": [0.2, 0.7, -0.1]
}
执行器-云台(Gimbal / Pan-Tilt)
  • 是可以"转动摄像头"的装置
  • 通常有:左右转(Pan)、上下转(Tilt)
  • 用于控制"视角":跟踪物体、调整视野

状态数据(机器人自身)

State = 机器人"当前真实情况"

你站着的时候,大脑其实一直知道这些:

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

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

  • 看到杯子:感知
  • 知道自己手在哪里:状态
关节状态

每个关节现在是什么角度

{
  "hip": 0.3,
  "knee": 0.8,
  "ankle": -0.2
}
位姿(Position + Orientation)

机器人整体在哪里、朝哪

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

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

速度(Velocity)

可指:当前运动状态

{
  "linear_velocity": [vx, vy, vz],
  "angular_velocity": [wx, wy, wz]
}

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

重心(center_of_mass (CoM))

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

接触状态

即:脚有没有踩地

{
  "left_foot_contact": true,
  "right_foot_contact": false
}

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

传感器状态(IMU)

用来判断"有没有倾斜"

{
  "imu": {
    "acc": [ax, ay, az],
    "gyro": [gx, gy, gz]
  }
}

类似于你的"平衡感"

State 和 Action 的本质区别

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

  • 例子:
  • 你下命令(Action):让膝盖弯曲一点
    {
    "knee": 0.5
    }
    

    实际结果(State):

    {
    "knee": 0.47
    }
    
  • 可能:有误差、有延迟、有抖动
  • 所以:Action ≠ State

为什么必须要有 State

你走路时:

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

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

用"机器人走路"完整串一遍

Step 1:当前状态
{
  "body_tilt": 5°,
  "left_foot_contact": true,
  "right_foot_contact": false
}

身体有点歪

Step 2:决策

需要往右调整平衡

Step 3:动作
{
  "hip": +0.1,
  "ankle": -0.05
}
Step 4:新的状态
{
  "body_tilt": 2°
}
  • 更稳定了
  • 然后继续循环