不确定微分几何:机器人的几何大脑,与大模型如何分工 上周和一位做移动机器人底盘的同事聊到很晚他说现在接项目的口头禅已经变了客户一上来就问能不能上大模型好像机器人不接一个大模型就成了落后产能。但等到真正拆需求会发现九成问题根本不是“懂不懂语义”而是“车子现在在哪儿、面前有没有障碍、下一步往哪走、这个估计到底有多可信”。我当时回了一句如果只盯着注意力机制和参数规模你解释不了机器人在瓷砖缝儿前面为什么会犹豫如果换成不确定微分几何的思路这套困惑反而能被拆成状态、坐标、协方差和约束。大模型给了机器人一种“拟人”的接口而几何加不确定性给了机器人一个“能落地”的决策结构。与其跟着全行业卷大模型不如先把后一件事做扎实。这篇想聊的就是为什么“用不确定微分几何给机器人做大脑”不是玄学以及它和大模型在真实机器人系统里到底怎么分工。1. 先搞清楚机器人到底需不需要“大模型大脑”1.1 大模型擅长的是编辑符号不是活在物理世界大模型在文本、代码、多模态理解上的能力确实强但机器人控制闭环里的核心问题并不是“这段话是什么意思”而是“当前状态是什么、下一步动作是否安全、动作执行后状态会变成什么”。这两个问题有一个本质区别语言世界的因果关系是松散的物理世界的因果关系是连续的、带约束的。举个例子。你让大模型写一段 Python 排序代码它能写得很完整。但你让机器人从客厅穿过一条窄门走进卧室这里需要的不是一段代码而是一套关于空间、几何、动力学和误差的决策机制。大模型可以生成“先直行再右转”这样的高层指令但它不会告诉你轮子打滑 2 厘米时路径要不要修正激光雷达被阳光干扰时置信度应该降到多少走廊宽度只有 1.2 米机身转弯半径是 0.8 米这个动作到底能不能安全完成。这些问题的答案不在语言模型里在状态估计、运动学、微分几何和不确定性传播里。1.2 机器人要的不是“像人说话”而是“可计算的下一步”很多产品演示里机器人能听懂对话、能回答天气、能生成一句“好的我马上过去”看起来好像有大脑。但真正决定机器人能不能干活的不是它说得多好而是它能不能把“马上去”翻译成一条可执行、可监控、可修正的运动轨迹。一个机器人要有“大脑”至少要做三件事知道自己在哪里以及这个估计有多确定知道目标在哪里以及目标相对于自身坐标系的位姿知道动作执行后状态会怎么变化会出现哪些风险。这三个问题全部依赖几何和概率。大模型可以帮你拆任务、做规划、理解用户意图但它不太适合承担毫秒级的位置推理和动作生成。用不确定微分几何给机器人做大脑针对的正是这一层把物理空间中的状态、姿态和不确定性变成一个可以实时计算、可以证明边界、可以调试的决策内核。所以这里想给出一个比较明确的主判断在机器人真正需要和物理世界打交道的那一层大模型不是大脑的替代品不确定微分几何才是那个“决策骨架”大模型更适合放在骨架之上做语义层。2. 为什么“不确定微分几何”是一条被低估的路径2.1 微分几何解决的是空间里的“语法”很多人听到“微分几何”会先想到理论物理觉得离工程太远。但机器人的运动本质上就发生在流形上而不是普通的三维欧氏空间里。车轮机器人有位置和朝向机械臂有关节角度四足机器人有躯干姿态和足端位置。这些量不是各自独立的。你不可能在不改变朝向的情况下让两轮差速机器人横着平移你也不可能把一个关节角随便拆成三个独立坐标还希望运动学方程仍然成立。微分几何做的就是把这些“不能随便拆”的约束统一成一套语言。它会告诉你机器人的状态属于哪个空间速度应该如何表示是在局部坐标系还是全局坐标系姿态更新时为什么不能简单地把旋转矩阵逐元素相加轨迹规划时为什么需要避开奇异点。表面上看这些是数学细节实际落地时这些细节决定了机器人动得稳不稳、定位准不准、规划出来的路径能不能被控制器执行。2.2 不确定性的本质把未知变成可计算的量光有几何还不够。真实机器人面对的所有信息都有误差。激光雷达有噪声轮式里程计会打滑IMU 会漂移相机视野可能被遮挡。如果把这些误差当作“坏运气”那问题没办法工程化。真正务实的做法是把误差建模成分布、协方差、粒子集合或区间然后在运动过程中不断传播和更新。不确定微分几何的核心恰恰是“在流形上如何处理不确定性”。它要解决的不只是“机器人大致在哪个位置”而是“这个位置有多可信”“哪些方向的可信度在快速下降”“当不确定性超过阈值时应该减速、重规划还是停下来”。这是一种完全不同于大模型的推理方式。大模型生成答案时通常不携带可度量的置信度即使有 logits也很难直接对应到物理安全性。而几何脑每一步都可以给出一个协方差矩阵或概率分布控制器可以在危险发生之前提前介入。2.3 不是放弃学习而是给学习一个几何容器这里想特别强调一下用不确定微分几何做机器人大脑不是要否定大模型和深度学习。真正合理的态度是把神经网络当作感知和语义模块同时让它输出的信息进入一个带有几何结构和不确定性表示的状态空间。比如视觉目标检测深度学习负责从图像里识别出“前面有一个人”这个结果很有价值。但机器人不能只靠一个矩形框去运动。它还需要知道这个人在哪个坐标系下、距离多远、相对速度是多少、检测置信度是多少。这些信息最终会被写成障碍物在代价地图里的分布或者被投影到机器人周围的安全约束里。深度学习负责“看懂”不确定几何负责“不撞上”。两者不是竞争关系而是分层关系。可一旦没人做后一层机器人就永远只能停留在“能感知、不能安全行动”的状态。3. 一个可落地的框架几何、预测、决策、更新如果要给“几何脑”画一个可落地结构我一般会建议先按四步来做几何建模、不确定预测、带约束决策、观测更新。这个框架可以用于轮式机器人、机械臂也能扩展到四足和无人机。3.1 第一步把问题写进状态空间而不只是写“机器人向前走”机器人决策的第一步不是写一句“往前走”而是定义状态向量。常见轮式机器人可以这样定义状态 [x, y, theta, v, w]其中 x、y 是平面位置theta 是朝向v 是线速度w 是角速度。如果是机械臂状态可能是关节角度和角速度如果是四足机器人还会加入躯干姿态和足端接触信息。这里的关键不是把变量列出来而是要明确状态所在的几何空间。平面轮式机器人通常工作在 SE(2) 上机械臂末端姿态工作在 SE(3) 上。状态更新、噪声注入、观测投影都必须遵守这个空间的运算规则。很多人一开始跳过了这一步直接接一个大模型生成速度指令结果就是模型偶尔输出一个“看起来像模像样”的动作但一旦遇到真实传感器噪声系统立刻就不稳定。原因很简单——你没有一个结构化的状态空间所以任何误差都无处安放。3.2 第二步用不确定传播做预判单次状态估计不够机器人必须知道“如果按照当前速度继续走下一秒我可能在哪里、有多大的不确定性”。这一步在概率机器人学里通常叫预测常见写法像这样x_pred f(x_last, u) # 根据运动模型预测状态 P_pred F P_last F^T Q # 传播协方差这里的F是运动模型对状态的雅可比矩阵Q是过程噪声协方差。它回答的不是“机器人一定会去哪儿”而是“机器人最可能去哪儿以及这个估计的扩散范围有多大”。实际工程里我更建议先把这个预测过程用可视化工具打出来。不要只看轨迹曲线还要看协方差椭圆。如果椭圆在某一方向上迅速变大说明这个方向的运动信息极不可靠系统可能在退化。常见典型场景就是机器人直行时朝前方向的位置估计会逐渐变差因为激光雷达和里程计对“正前方距离”的约束弱于对“侧面距离”的约束。3.3 第三步把决策看作“带协方差约束的优化”机器人路径规划不应该只找一条避开障碍物的最短路径而应该找一条“在几何上可行、在不确定性上可接受”的路径。这里可以引入两个常用概念代价地图或符号距离场用来表示障碍物信息协方差椭圆用来表示机器人在某个位置的不确定性。决策算法在搜索路径时会把这两个信息同时考虑进去。如果一个区域的协方差椭圆太大算法会选择绕行如果必须穿过一条窄道那轨迹要保证机器人的包络加上不确定性边界不会碰到障碍物。大模型在这个阶段也可以参与。比如大模型负责把用户需求翻译成“去厨房拿杯子”这样的目标而几何脑负责把目标转换成“末端位置 允许误差范围 避障安全约束”。这样既保留了语义理解的灵活性又保留了底层执行的安全性。3.4 第四步用观测更新而不只是“失败重试”很多团队的机器人一旦走偏就只会重新规划路径。但真正的闭环系统会先修正自己的“世界模型”。这个过程在卡尔曼滤波和粒子滤波里都叫更新K P_pred H^T (H P_pred H^T R)^-1 x x_pred K (z - h(x_pred)) P (I - K H) P_predz是传感器观测h是观测模型R是观测噪声协方差。更新步骤的本质是让机器人用观测结果“确定自己现在到底在哪儿”而不是傻乎乎地重新算一条路。我见过不少新团队踩同一个坑感知已经给出了错误的里程计信息定位模块却一直信路径规划已经算出新轨迹但底层的状态估计没有修正导致规划始终基于一个错误的世界。一个健康的机器人大脑应该先问“状态是否需要修正”再问“路径是否需要重算”。这个顺序不能反。4. 从理论到工程最少要补哪几块拼图只讲数学框架没有意义真正难的是把理论接进现有工程生态。对大多数团队来说不需要从零实现微分几何库更不需要重写机器人操作系统。你需要做的是把常用组件和这套思维对齐。4.1 先跑通定位与建图再谈大脑不管你想给机器人上不上大模型第一步都应该先把定位和建图跑通。没有稳定的状态估计后面所有决策都是空中楼阁。在 ROS2 的常见组件里几个典型模块值得先熟悉导航框架比如 Nav2处理路径规划、速度采样、轨迹跟踪2D 粒子滤波定位比如 AMCL维护机器人在地图中的位置分布状态估计插件比如 robot_localization融合里程计、IMU、GPS 等传感器机械臂方向MoveIt 2 负责运动规划、碰撞检测和轨迹执行。我不建议一上来就写自定义的“不确定微分几何大脑”。先跑通一套现成导航系统观察它的协方差输出、代价地图和轨迹生成逻辑远比直接造轮子更有价值。等你已经能解释清楚“为什么机器人有时候会卡在走廊边缘”再考虑在某个模块里加入自己的几何不确定性模型。4.2 常见工程组合里的“几何脑”在哪一层很多组件看起来只是工具但它内置的恰恰是几何和不确定性思维。以导航为例Nav2 的代价地图里每个栅格有占据概率这是不确定性的一种离散表达。AMCL 用一簇粒子表示机器人位姿分布粒子越分散说明定位越不确定。MoveIt 2 的碰撞检测会自动把机器人模型和障碍物模型做几何求交。你不需要看到公式但你已经在用几何脑的工程化版本。真正值得做的是理解这些组件背后的假设粒子滤波器假设传感器噪声可以用随机样本近似粒子太少时会退化代价地图假设障碍物在栅格空间内可表示动态障碍物则会带来快速变化运动规划通常假设模型参数准确真实执行误差要由反馈控制来补偿。我在实际项目里通常会建议先不要改算法先把话题、坐标系、数据流画清楚。机器人从传感器到执行器是一条完整链路感知 - 状态估计 - 代价地图 - 路径规划 - 控制。任何一层出现几何错位都会表现为“明明有地图却撞墙”。4.3 把“语义层”和“几何层”分开是架构设计的关键最怕的是把大模型输出的语义信息直接接到运动控制里。比如大模型识别出“桌上有杯子”如果直接把杯子在图像里的坐标当作机械臂抓取坐标大概率会抓空。中间至少缺两个转换从像素坐标到相机坐标系再到机器人基座坐标系从二维检测框到三维抓取位姿再到位姿不确定性。这就是几何层的作用。一个合理的系统架构应该是分层合作层级主要任务典型技术语义层理解任务、拆解目标、生成高层指令大模型、多模态模型几何层位姿估计、状态更新、占据图、轨迹约束微分几何、概率机器人学、状态估计执行层底层速度控制、力矩控制、跟踪轨迹运动学、动力学、PID / MPC如果语义层直接跳过几何层去控制执行器系统短期内可能“能看能动”但长期就是不稳定、不可解释、不可维护。语义层负责回答“做什么”几何层负责回答“怎么安全地做”执行层负责回答“现在立刻怎么做”。5. 最容易翻车的四个位置以及排查顺序就算理解了框架工程里还是有不少容易翻车的地方。我不打算给一堆参数而是想把最常见的四类问题说清楚因为它们会直接影响“大脑”是否可靠。5.1 协方差爆炸不是“数据不够”而是模型结构出了问题很多团队第一次看到定位协方差椭圆非常大时会下意识地加传感器、加数据。但协方差爆炸往往不是数据量问题而是无观测方向或模型不一致问题。比如机器人只靠轮式里程计定位很多方向都会漂移机器人转动机身时如果 IMU 和里程计的时间戳没对齐融合后协方差也会异常增大。排查这类问题不要急着调滤波参数。先检查运动模型是否匹配当前机器人底盘传感器观测是否覆盖被漂移的自由度雅可比矩阵是否计算正确过程噪声和观测噪声是否量级合理。5.2 坐标系和“零位”错了后面的推理全都白做这是机器人领域最朴素又最容易踩的坑。一个base_link和一个odom之间的 TF 关系错了所有路径规划都会偏相机外参标定错一点视觉引导就会抓偏机械臂关节零位偏移即使运动学算法正确末端位姿也会错得离谱。我的建议是每次跑系统之前先打印当前 TF 树确认坐标系层级关系。再单独执行一次“位置回归验证”让机器人回到已知点看估计位姿和真实位姿的偏差。这个习惯比任何高级算法都管用。5.3 输入和时间戳不同步几何再漂亮也白搭不确定性模型非常依赖输入时间一致性。如果里程计是 30Hz激光雷达是 10HzIMU 是 50Hz融合节点里却没有时间同步那么“不确定性”就不是真实感知滞后而是一个数据流错位造成的假噪声。实际调试时可以先看话题的发布频率和时间戳分布。不要只看平均频率要看单条消息的时间戳是否正常、边沿是否抖动。时间戳差 20 毫秒可能看不出来差 100 毫秒机器人速度稍快就会撞上误差边界。5.4 不要一上来就调参数先检查模型结构是否匹配场景很多项目组遇到“机器人表现不稳定”第一反应是调 PID、调粒子数量、调代价地图膨胀半径。这些可以调但更值得先问一句当前用的算法模型真的适合这个场景吗室内仓库里用 2D 激光和 AMCL通常合适室外不平地形还用纯 2D 定位可能就会出问题机械臂在狭小空间作业只做路径规划不做避障就很可能碰撞。模型结构不匹配调参数只是在缓解症状不是修复原因。5.5 统一的排查顺序真出了问题我一般按这个顺序查看现象是定位漂移、规划失败还是执行抖动看输入传感器数据是否有效、频率是否稳定、时间戳是否对齐看坐标TF 树、外参、零位是否一致看参数噪声方差、协方差阈值、膨胀半径是否合理看模型算法假设能不能覆盖当前场景这个顺序的意义在于先排除最廉价、最容易出问题的数据层问题再进入算法和假设层。很多所谓“算法烂”的项目最后查下来只是某个传感器话题发布频率被降到了 2Hz。6. 到底该用几何脑还是该用大模型讨论到最后几乎所有人都会问同一个问题如果只能选一个我应该押哪边我的答案很直接如果做的是物理机器人先押不确定微分几何这个“几何脑”。不是因为大模型没有价值而是因为机器人和物理世界之间的最后一道防线必须建立在可计算、可验证、可回滚的几何和不确定性关系上。大模型适合做上层决策它可以把复杂任务拆成“先移动到门口、再进入房间、最后抓取杯子”这样的规划也可以帮助机器人理解自然语言指令甚至对多模态感知结果做异常判断。但大模型目前还不太适合承担毫秒级、高安全性、需要连续状态更新的控制决策。对比维度大模型 / 语义层不确定微分几何 / 几何脑输入文本、图像、语音、结构化任务描述传感器数据、状态向量、地图、位姿输出任务序列、代码、文本、目标描述位置估计、协方差、轨迹、控制指令实时性受推理延迟影响通常不是毫秒级可在毫秒级完成状态更新与优化安全边界通过提示词和规则间接约束难证明通过碰撞约束和协方差阈值直接约束可解释性可通过注意力解释但难以对应物理误差状态、雅可比、协方差均可检查资源占用通常需要 GPU 和较大内存CPU、嵌入式平台也能支撑最合适场景任务规划、人机交互、语义理解导航、操控、运动控制、安全避障这不是一个“二选一”的问题而是一个“分层”的问题。大模型负责把人的模糊意图翻译成机器人可执行的目标几何脑负责把目标变成带置信度、带边界、带反馈的高频动作。你把哪一层做扎实哪一层就能成为你的核心优势。如果让普通团队一步一步来我建议的顺序是先用现成框架跑通“定位 建图 路径规划 控制”然后把手放到状态估计上理解协方差和置信度接着尝试给决策模块加入几何约束最后在大脑上层接一个语义理解模块可以是规则系统也可以是大模型。前几步没做好接大模型只会让系统看起来聪明走起来仍然危险。回到开头那位同事的话。客户问能不能用大模型当然可以说能但心里要清楚真正让机器人在真实世界里安全干活的是一套能解释“我在哪、我要去哪、我有多大把握”的几何大脑。全行业卷大模型的时候愿意回到微分几何和不确定性建模上把地基夯实反而是一条更不容易被淘汰的路。