数据组成-维度拆解
机器人 = 感知 + 决策 + 执行 = 感知 → 决策 → 动作 → 状态反馈 → 再决策
感知数据(多模态输入)
机器人 = 摄像头 + 雷达 + 麦克风 + 触觉 数据格式 = 这些感官的"存储方式" 感知数据 = 机器人看到了什么
RGB
即:普通彩色图像
- R = 红色(Red)
- G = 绿色(Green)
- B = 蓝色(Blue)
- 每个像素 = (R, G, B)
常见文件格式:.jpg(最常见,压缩)、.png(无损)
用途: 让机器人"看见东西"
- 识别物体(杯子、桌子)
- 判断位置
深度(Depth)
每个像素 = 距离摄像头多远 例如:
- 白色 = 很近
- 黑色 = 很远
常见文件格式:.png(16位灰度图)、.exr(高精度)

用途: 让机器人知道"远近"
- 抓东西
- 避障
点云(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, ...]
本质是:声音振动的采样值(时间序列)

用途: 人机交互
- "帮我拿杯子"
- 语音控制机器人
力传感(Force Sensor)
是:机器人"触觉" 比如:
- 抓东西时用了多大力
- 有没有压坏东西
常见文件格式:.csv、.json、protobuf

用途: 精细操作
- 抓取,抓鸡蛋不捏碎
- 装配、插拔任务
动作数据(控制信号)
动作数据 = 机器人接下来做了什么 本质上是:发给机器人执行器的指令 动作数据 = 控制下面这些"身体部件"的指令
执行器-机械臂关节(Joint)
关节是机械臂可以"弯曲、旋转"的地方
就像你的:肩膀、手肘、手腕
例子:一个6轴机械臂:
1
2
3
4
joint1 → 底座旋转
joint2 → 抬手
joint3 → 伸出去
joint4/5/6 → 手腕调整角度
控制关节 = 控制整个机械臂 例如:
1
2
joint1 = 30°
joint2 = 45°
机械臂姿态就完全变了
执行器-夹爪(Gripper)
是机器人最简单的"手",≈ 手指(简化版)
通常是:两个爪子、能开(张开)/合(抓住)(开合程度:0 ~ 1)

执行器-灵巧手(Dexterous Hand)
是高级版"机器人手":多个手指、每个手指有多个关节

执行器-轮子(Wheels)
是机器人"移动"的方式 常见控制:前进/后退/转弯
1
2
3
4
{
"vx": 0.5,
"wz": 0.2
}
表示:向前走、同时转弯
执行器-腿(Leg)
腿的结构(核心组成): 髋关节(Hip):大腿和身体连接的地方 作用:控制腿的方向、决定往哪走 膝关节(Knee):控制腿"伸直/弯曲" 作用:抬腿、跨步、缓冲冲击 踝关节(Ankle):即脚踝 作用:保持平衡(非常关键)、调整落地角度
一条腿 = 髋 + 膝 + 踝
每个都是"关节"(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 → 再决策