跳转至

前置 2 · 机器人怎么看,怎么知道自己在哪

这一章替做机器学习的读者理清传感器原理与状态估计。写的是硬件选型和数学直觉,可里头每一条物理约束,后面的章节都要回过头来反复用。在机器人工程里,摸透这些传感特性,就像算法工程师吃透注意力机制一样,是绕不过去的基本功。


机器人的感知光谱

在机器学习里聊起“视觉”,大家默认的大概都是 ImageNet 那种 $224 \times 224$ 的标准 RGB 图像。可到了机器人这里,视觉感知切成了一道分层的物理光谱,不同的模态各自对付着特定的物理环境难题:

单目相机 (Monocular Camera):单通道 RGB 成像,硬件便宜,技术也最成熟。它在物理上最硬的局限,是缺少绝对尺度与深度信息。单幅 RGB 画面里的一只水杯,在纯几何投影里根本没法判定到底是在 30 厘米还是 80 厘米处。像 MiDaS、Depth Anything 这类单目深度估计模型,确实能从单张画面重建出相对深度场,可真要落实到毫米级的几何精度,依然没法充当确定性抓取的依据。家用机器人可以用单目大模型画出粗略的目标语义包围盒,但末端执行器碰到物体表面的那一瞬间,靠的依然是精准的物理测距。

双目相机 (Stereo Camera):靠两个已知基线距离(通常为 10–20 厘米)的传感器,通过视差三角测量来算出深度,代表产品包括 Intel RealSense D435/D455 和 Stereolabs ZED 2。双目的长处是能直接给出真实物理尺寸,软肋却在于太吃表面纹理:一旦面对没有纹理的纯白墙面或是光滑的金属台面,立体匹配算法就会退化成严重的高频噪声。

RGB-D 深度相机 (Active RGB-D):在彩色画面之外,加上了主动红外散斑投射(结构光)或者飞行时间测距(Time-of-Flight, ToF)模块。当年 Kinect v1 靠主动结构光带起了消费级 3D 感知,如今桌面协作机械臂上也普遍标配 RealSense D405/D435 这类传感器。只是这类设备都有个躲不开的近距离盲区,通常在 15 厘米以内数据就会发散:靠得太近,结构光的散斑会剧烈弥散,ToF 的接收端也会因为反射能量过强直接饱和溢出。

事件相机 (Event Camera):用的是像素级异步感光芯片,只有当单个像素的对数光强变化越过阈值,才会吐出一个带微秒级时间戳的事件,代表厂商有 Prophesee 和 iniVation。它的长处非常诱人:时间分辨率极高、没有运动模糊、动态范围极大,功耗还只有毫瓦级。只是它吐出来的东西不是规整的张量,而是一串离散异步的时空事件流(Event Stream)。现成的深度学习视觉主干根本套不上去,工业界迟迟难以真正落地,卡住它的正是标定工具链和通用算法生态的成熟度。

鱼眼与全景相机 (Fisheye / Panoramic Camera):扫地机器人和配送底盘常靠大视场的鱼眼镜头罩住整个环境。这种全向视野在物理上有代价:画面会有严重的桶形畸变,边缘视场的分辨率也会被大幅压缩。必须经过高精度的标定,把图像矫正回透视投影模型,下游的空间感知模块才认得出来。

不管用哪种相机,立足点都在两组参数上:一组是内参 (Intrinsics),包括焦距、主点坐标和多项式畸变系数;另一组是外参 (Extrinsics),也就是相机相对于机器人基座或末端的齐次变换位姿。做机器视觉工程,第一步永远是严谨的传感器标定。只要在这里放过一点标定误差,下游所有的几何推导都会跟着跑偏,连纠正的机会都没有。


激光雷达 (LIDAR):光脉冲飞行时间的物理度量

激光雷达(Light Detection And Ranging, LIDAR)测距离的方式很直接:发射纳秒级的激光脉冲,接收反射回来的信号,再由飞行时间(Time of Flight, ToF)算出空间距离。设备以每秒数十万到数百万点的速度源源不断吐出三维点云,每个点上都带着 $(x, y, z)$ 空间坐标和反射强度(Intensity)。

机器人学界对激光雷达情有独钟,看中的就是这种不可替代的确定性:激光雷达能给出厘米级的测距精度,靠的是物理光速和精密计时器,不是统计学习模型里的概率推断。碰上光照骤变、弱纹理或是大片复杂的阴影,视觉算法可能会漂得没边,激光测距却依然站得稳。当然,工程上总得做妥协:硬件成本贵,动态物体的点云偏稀疏,遇到高反光的透明玻璃会直接穿透或者折射畸变,雨雪和扬尘这些悬浮微粒也会把激光散射得七零八落。

按机械结构和扫描机制,大致可以分成这几类:

机械旋转式:早期的 Velodyne 经典系列(VLP-16, HDL-64)就是代表。它靠微型电机带着激光收发模组和反射镜以 5–20 Hz 的频率持续旋转,在垂直视场里覆盖 16 到 128 条扫描线。线数多寡直接决定了垂直方向的角分辨率。机械旋转构件存在长期磨损,轴承寿命摆在那里,真放到严苛的工业环境里,长期可靠性总成问题。

半固态与固态激光雷达 (Solid-State LIDAR):这里的代表包括 Livox(大疆体系)、禾赛科技(Hesai)、Innoviz 和 Luminar 等,采用微振镜(MEMS)、光学相控阵(OPA)或者旋镜式非重复扫描方案。这套结构紧凑,抗震耐用,寿命也长得多。像 Livox Mid-360 这种非重复扫描机制,静止停在原地就能随时间累积点云密度,如今已成了仓储 AMR 和具身机器人本体的标准配置。

2D 激光雷达 vs 3D 激光雷达:2D 雷达只在单个水平切面上做单线扫描,便宜,功耗极小,扫地机器人和低成本轮式底盘用得最多;缺陷是看不见悬空的桌面或者离地的障碍物。3D 激光雷达能给出完整的空间几何体素,代价则是更高的数据吞吐和硬件成本。

调频连续波激光雷达 (FMCW LIDAR):它发射线性调频连续激光信号,靠测量相干拍频,利用多普勒效应直接测出目标单点的瞬时径向速度。这种方案对外界同频激光干扰天然免疫,是高端自动驾驶正在探索的前沿演进方向。

站在机器学习的视角来看,激光雷达点云相当于一种无序、非定长、置换不变的三维空间标记序列(Token Sequence)。像 PointNet++、Point Transformer 这类网络结构,专门针对点云的非欧几何与稀疏特性量身设计,比起标准 NLP 里的注意力机制,在拓扑表征上有着很深的差异。


惯性测量单元 (IMU):角速度与线加速度的动态感知

惯性测量单元(Inertial Measurement Unit, IMU)由微机电系统(MEMS)工艺的多轴传感器集成而成:

六轴 IMU = 三轴加速度计 (Accelerometer) + 三轴陀螺仪 (Gyroscope):加速度计实时测量包含重力分量在内的合成线加速度,陀螺仪测量本体绕各轴的角速度。在理论力学上,把这两组读数在时间上做连续积分,就能推算出系统的速度、位移和姿态角。

九轴 IMU = 六轴 + 三轴磁力计 (Magnetometer):多出来的磁力计通过感知地磁矢量,给出绝对航向角(Yaw)的参考基准,用来抑制长时间积分带来的漂移。

然而在物理世界里,光靠 IMU 积分来做自主定位根本行不通。MEMS 惯导身上藏着几种致命的误差累积机制:

  • 零点偏置 (Bias):传感器即使静止不动,输出也绝不会刚好是零,总带着缓慢变化的时变偏置。要是把这个常值偏置在时间上积分两次,位置误差就会随时间按二次方发散,短短数分钟内就能累积出数米漂移。
  • 宽带高斯白噪声与随机游走 (Noise & Random Walk):高频采样带进来的噪声,经过积分之后,全转化成了速度和角度上的随机漂移。
  • 温度漂移 (Thermal Drift):机身电机的发热加上环境温差,会剧烈改变硅微结构的阻尼与偏置特性。
  • 重力分量耦合 (Gravity-Acceleration Entanglement):加速度计测出来的比力,实际上是运动加速度与重力矢量的矢量和。要想把真正的运动加速度剥离出来,必须靠精准的姿态估计来投影消除重力分量;偏偏姿态解算又高度依赖角速度积分,两者在数学上紧紧耦合在一起。

正因如此,IMU 绝不能单打独斗,必须与轮速计、视觉相机、激光雷达或 GPS 这类带着绝对物理参照的传感器做多源融合。拿外感受传感器低频的绝对观测,去死死扣住惯导高频发散的漂移,这正是状态估计(State Estimation)要解决的核心命题。

消费级和工业协作机器人大多采用 Bosch BMI088、TDK ICM-42688 这种高性价比芯片;而高动态四足和双足人形机器人,往往得上 Xsens 系列这种出厂就带温度补偿与高抗振能力的专业级惯导单元。硬件选什么档次,直接决定了高动态平衡控制回路的稳定性边界。


编码器:关节伺服的内感受基准

伺服电机的转子轴或减速机的输出端,通常都装着编码器(Encoder)。它时刻测量着轴向角位移,机器人想知道各个关节到底动到了什么位置,全靠它提供绝对基准:

  • 增量式编码器 (Incremental Encoder):靠光电或磁电刻线输出正交脉冲信号,它记录的只是相对位移变化。一旦断电,位置记忆便荡然无存,每次重新开机都必须去寻找物理限位开关,走一遍归零校准(Homing)。
  • 绝对式编码器 (Absolute Encoder):码盘上的离散编码或磁阻阵列,让它在通电那一刻就能直接读出当前物理绝对角度。多圈绝对值编码器还能靠备用电池或机械齿轮组,记下断电期间转过的圈数。如今的人形机器人与协作机械臂普遍采用双绝对值编码器方案,电机侧与连杆侧各装一颗,省去了开机回零的动作,也避开了归零过程中可能碰上的机械干涉与安全隐患。

工业级编码器的角分辨率通常在 17 到 23 位之间,换算下来,旋转一圈就能切出数十万乃至数千万个脉冲。反映到关节角上,读数精度足以压进 $0.001^\circ$ 的量级。

站在控制系统的视角来看,编码器构成了伺服驱动闭环里那处自监督的状态真值源。每一个控制周期给出的关节位置误差反馈,推着执行器去调节力矩,更是衡量 VLA 输出跟踪精度的最终标尺。


关节力矩传感器与高分辨率触觉

机器人与外部环境产生物理交互时,守在末端的是这几道防线:

关节力矩传感器 (Joint Torque Sensor):通常依靠高精度金属应变片或光学差分弹性形变原理设计,卡在减速机与输出连杆之间,时刻采集单关节承受的轴向扭矩。KUKA LBR iiwa 与 Franka Emika 把关节力矩传感器嵌进了所有关节,在毫秒级的时间里就能完成主动柔顺阻抗控制与碰撞冲击抑制。要是机械臂关节缺少连杆端的力矩传感,单凭电机电流去反推力矩,减速机齿轮摩擦与非线性背隙就会带来严重干扰。

末端六维力/力矩传感器 (6-Axis F/T Sensor):安装在机械臂法兰盘与夹爪之间,精确测定末端交互中的三维作用力 $(F_x, F_y, F_z)$ 与三维力矩 $(M_x, M_y, M_z)$,像 ATI Mini40 和 Robotiq FT300 都是常见型号。在精密装配、盲插拔销孔、恒力打磨这类高频刚性接触任务里,它始终挑着大梁。

视触觉与柔性触觉传感器 (Vision-Based & Soft Tactile Sensors):贴在指尖接触面上,测定接触局部的微观形变场、三维法向与切向力分布,连同动态滑移一并记录。代表方案包括 GelSight(利用弹性体表面散斑与内窥微型相机成像)、DIGIT、ReSkin 与 AnySkin。至于触觉表征如何填补视觉感知在遮挡与微观接触力学上的信息断层,第 4 章会展开详细拆解。


空间位姿表征:$SE(3)$ 李群几何

在三维空间中描述刚体的几何状态,标准形式是六自由度位姿(6-DoF Pose):三维空间平移向量与三维姿态旋转。

平移向量定义在欧氏空间之中:$\mathbf{t} = [x, y, z]^T \in \mathbb{R}^3$。

用来描述姿态旋转的数学工具,各自有不同的脾气与取舍:

  • 欧拉角 (Euler Angles):由横滚(Roll)、俯仰(Pitch)、偏航(Yaw)三个角度组合而成,最符合直观理解。但在俯仰角接近 $\pm 90^\circ$ 时,会遇上避无可避的奇异性,也就是万向节死锁(Gimbal Lock)。
  • 旋转矩阵 (Rotation Matrix):属于特殊正交群 $\mathbf{R} \in SO(3)$,满足 $\mathbf{R}^T \mathbf{R} = \mathbf{I}, \det(\mathbf{R}) = 1$。它包含 9 个矩阵元素,骨子里却只有 3 个自由度。它不存在奇异点,只是参数冗余,在优化算法里直接施加流形约束也相当棘手。
  • 单位四元数 (Unit Quaternion):由四个实数构成 $\mathbf{q} = [w, x, y, z]^T$,满足 $|\mathbf{q}| = 1$。它形式紧凑、没有奇异点,在球面线性插值(SLERP)与连续姿态微分中计算高效,是机器人姿态控制与轨迹生成领域通用的事实标准。
  • 旋转矢量与李代数 ($\mathfrak{so}(3)$ / Axis-Angle):以旋转轴单位矢量与旋转角的乘积表示,带有良好的可微性与局部切空间性质,广泛用于非线性优化与微分动力学推导。

做机器学习的人需要特别注意:刚体位姿流形 $SE(3)$ 并不是平坦的六维欧氏空间 $\mathbb{R}^6$。若是直接拿欧拉角做代数加减、算空间距离或跑均值回归,拓扑上的不连续性极易引发数值震荡。这正是为什么机器人在学习姿态回归时,往往转向连续 6D 旋转表征(Zhou et al. 2019),或者换用量身定制的四元数损失函数。


状态估计:多源异构传感器的概率图融合

状态估计(State Estimation)要解决的是机器人系统的核心认知命题:面对多路步调不一、带有噪声又存在传输时延的传感数据流,如何在运行中在线解算出系统运动状态的最优后验分布。

输入:包含高频 IMU、中频相机、低频激光雷达与关节编码器的异步传感流。 输出:机器人在连续时序上的全局位姿、线速度、角速度,连同时变传感器偏置向量。

卡尔曼滤波 (Kalman Filter, KF):作为现代控制论的基石算法,在线性高斯假设下,它通过状态预测与测量更新的交替递推,给出了最小均方误差意义下的最优贝叶斯状态估计。

扩展卡尔曼滤波 (Extended Kalman Filter, EKF):针对非线性动力学与观测方程,它在当前状态估计点处做一阶泰勒展开来完成局部线性化,是目前绝大多数开源机器人系统(如 ROS 的 robot_localization 功能包)底层的核心滤波引擎。

无迹卡尔曼滤波 (Unscented Kalman Filter, UKF):采用确定性采样策略(Sigma Points)捕获非线性分布的均值与协方差,省去了显式求导雅可比矩阵的麻烦,也拉高了非线性传播的精度。

粒子滤波 (Particle Filter, PF):通过非参数化的离散带权粒子群,直接逼近任意非线性、非高斯与多模态后验分布(如用于二维激光全局重定位的蒙特卡洛定位法 MCL)。不过它的代价不低:计算复杂度会随着状态空间维数的增加呈指数级暴涨。

因子图优化与最大后验估计 (Factor Graphs / Smoothing & Mapping):将连续时序上的位姿节点与多源传感器测量约束,统一建模为概率图模型里的变量节点与因子边。借助滑动窗口或全局图上的非线性最小二乘优化(如基于 GTSAM 库),把高精度回环检测(Loop Closure)与跨时间步长程几何约束牢牢嵌合在一起,代表着现代高精度位姿估计的核心演进范式。

在数学本质上,状态估计就是在线因果贝叶斯推断。高频先验由运动学与惯导积分驱动,低频似然由外部观测负责更新,整套数学体系与概率图模型完全同构。


同步定位与建图 (SLAM)

SLAM(Simultaneous Localization And Mapping)搭起了机器人在未知空间里自主摸索的底层闭环。

系统设定的开局空无一物:头顶没有绝对定位信号,手里没有现成的全局地图。机器人一头扎进陌生空间,必须一边推算自己的运动轨迹,一边同步建起周围环境的一致性几何地图。这成了一桩经典的鸡生蛋死结:手里要想握有一张准确的地图,得先知道自己在每个瞬间的确切位姿;可要想校正漂移的位姿,偏偏又指望着地图里的几何特征匹配。

经典的 SLAM 架构通常拆解为两大核心阶段:

前端视觉/激光里程计 (Front-End Odometry):在高频传感器数据流里抓取局部特征并做相邻帧匹配,比如视觉里靠 ORB 特征点跑光流跟踪,激光点云里跑 ICP 或 NDT 迭代最近点算法。它的任务是快速交出局部相对运动增量,频率虽高,步步累加的漂移却无可避免。

后端图优化与束调整 (Back-End Optimization / Bundle Adjustment):手里始终拉着一张全局关键帧拓扑图,用非线性最小二乘把相机位姿与三维空间路标点坐标绑在一起联合优化,把全局重投影误差或点面距离残差压到最低。

回环检测与拓扑闭环 (Loop Closure):当机器人兜兜转转重新撞见走过的旧地,算法靠全局特征描述子(如词袋模型 DBoW 或深度学习重定位网络)认出当年的关键帧,拉起一条跨越时空的约束边,顺势触发全局位姿图的松弛优化,把一路走来累积的漂移误差在全局上一并摊平。精准的回环检测能让扭曲变形的地图瞬间收敛,重新咬合成平整的几何世界;可一旦把两处不同的地方错认成了旧地,图优化就会把整张拓扑结构彻底撕裂。

主要技术流派:

  • 基于滤波的架构 (Filter-based):早期的 EKF-SLAM 是典型代表。由于协方差矩阵的维数会随特征点数量呈二次方膨胀,在稠密场景里算力很快见顶,如今已被图优化逐步取代。
  • 基于因子图的架构 (Graph-based):借助稀疏矩阵分解高效求解大规模全局位姿图,撑起了如今工业界的主流架构。
  • 直接法 vs 特征点法:前者直接咬住像素的光度不变性做优化(如 DSO、LSD-SLAM),在弱纹理区域更占优势;后者沿着特征的几何距离做优化(如 ORB-SLAM3),对动态光照变化更鲁棒。
  • 稀疏表征 vs 稠密重建:建图的表达形式从最初只维护稀疏特征点云,一路演进到 TSDF 体素网格,再到神经辐射场(NeRF-SLAM)与 3D 高斯泼溅(3DGS-SLAM)的连续稠密隐式表征。

第 5 章会深入拆解大模型时代的全局空间语义如何与经典 SLAM 底座融合重构。但有一件事要先想明白:基础模型并没有取代 SLAM 的底层机理,那些几何对齐、非线性优化与回环一致性约束,依然是机器人在物理世界里自主移动不可动摇的技术基石。


核心直觉提炼

  • 每种传感器都有其物理失效边界:视觉受制于光照与低纹理,激光雷达怕高反透射和几何退化,IMU 时间一长必然累积漂移,编码器则只能感知内部本体状态;多源异构互补融合是走向鲁棒的唯一生路。
  • 手眼标定与传感器外参标定是几何感知的门槛:只要忽略了标定误差,往后所有高级空间推理全会沦为空谈。
  • 空间位姿严格处于非欧氏 $SE(3)$ 李群流形之上:不可随手对旋转矩阵或欧拉角做盲目的线性加减。
  • 状态估计是机器人学里把在线贝叶斯后验推断做进工程的实际形态。
  • SLAM 的本质在于未知环境下的空间一致性图优化:大语言模型能递给它宏观语义先验,但底层的几何约束依然半点省不得。

练习

  1. 研读工业级深度相机的工程规格书:翻开 Intel RealSense D455 或同级别传感器的 Datasheet,仔细看它的最小测距盲区、测量噪声曲线、视场角(FOV)与曝光同步接口,算一算它能不能把特定机械臂工作空间完整覆盖。
  2. 解析 ROS2 TF 变换树机制:研读 tf2 坐标变换设计规范,在 RViz2 里把 world、odom、base_link、camera_link 与 tool0 之间的动态变换链可视化出来,亲眼看一看刚体运动学中坐标系树状拓扑究竟怎样逐级传递。
  3. 审视开源 SLAM 系统回环优化过程:观察经典视觉或激光 SLAM 系统在触发回环检测瞬间的因子图松弛过程,体会误差协方差矩阵在全局节点分布上的收敛机制。
  4. 动手做一次 IMU 自由积分漂移实验:采集一段静止 MEMS IMU 的原始数据,写个简单脚本对加速度计与陀螺仪做连续双重时间积分并画出位移轨迹,亲眼见证无外感受约束下系统状态如何在数分钟内发散的物理全貌。

下一章:前置 3 · 让机器人动起来、抓住东西