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

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

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

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

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