机器人的决定是怎么冒出来的 系列:人形机器人大脑体系 · 架构篇 3/3
机器人的决定是怎么冒出来的系列人形机器人大脑体系 · 架构篇 3/3字数约 3000 字获取与部署⚠️ 重要说明软件包托管于我方阿里云 ECS 静态服务节点链接为配套文章专属访问地址。服务仅用于本次文稿配套评估试用链接会按需维护我方有权随时关停访问。文件禁止二次分发、转存商用如需商用正式包与持续技术支持请联系我方商务对接获取正式发布渠道。下载地址http://47.119.135.145:8080/lumina_pmd_v3.1.2_so_publish.tar.gz部署四步下载并校验总包 MD5md5sum lumina_pmd_v3.1.2_so_publish.tar.gz期望值eab169edc7a6d31ee636c8edc0f6c99c解压tar -xzf lumina_pmd_v3.1.2_so_publish.tar.gz执行安装脚本配置环境bash install.sh如提示 /etc/profile.d 权限不足改用用户级 PYTHONPATH 方案echo ‘export PYTHONPATHP W D / c o r e m o d u l e s : PWD/core_modules:PWD/coremodules:PWD/adapter:P W D / v t l a h a l : PWD/vtla_hal:PWD/vtlahal:PYTHONPATH’ ~/.bashrcsource ~/.bashrc执行冒烟测试验证模块导入与全链路功能cd lumina_pmd_v3.1.2_so_publishbash install.shinstall.sh 已内置核心模块导入自检全部通过时输出 OK: core modules loaded。环境要求Ubuntu 22.04 LTS · Python 3.10 · x86_64 · 内存 8GB 起推荐 16GB文件级验真包内附 md5_manifest.txt251 条文件级指纹可执行以下命令逐文件复核md5sum -c md5_manifest.txt --quiet全部条目无输出即代表一致若出现 FAILED请核对 Python 版本是否为 3.10编译产物与解释器版本绑定。摘要传统机器人做决策是一个人拍板一个规划器读完场景输出一条指令。这条路能走通但有两个死结——单点失效以及面对没见过的场景时无从下手。Lumina PMD 用的是另一种结构多个各自只看得见一小块的决策单元并行判断靠少数几条极简的协商规则让一个谁都没想到的解决方案自己长出来。 本文讲这套协商机制的三个约束条件以及为什么少规则比多规则更难做、也更可靠。一、两条路的对比1.1 集中式一个大脑说了算感知 ──► 规划器 ──► 一条动作序列 ──► 执行优点是简单、可预测、容易调试。缺点是死结 说明单点失效 规划器的判断错了整条链路全错没有任何内部纠错场景泛化差 没见过的组合要人工补规则规则越补越多最后互相冲突感知假设硬 默认感知输入是完整的一旦某个视角被遮挡规划器只能猜1.2 分布式协商多个小判断合起来感知分片 ──► 单元1 ┐单元2 ├──► 协商 ──► 一条动作序列 ──► 执行单元3 │… ┘每个单元只负责自己那一小块前方、身侧、脚下、目标物体、手臂可达域……各自给出一个倾向。协商层把这些倾向合成为一个决定。这不是把规划器拆碎而是换了一种决策模型从算出答案变成让答案收敛。图感知切成若干片每片由一个只看局部的小单元判断协商层把这些倾向收敛成一条动作序列。二、协商必须有约束否则就是混乱多单元并行最容易出的事是议论半天出不了结论或者结论来回摆动。所以协商不是自由讨论是带约束的收敛。我们只用三条约束约束一每个单元只跟直接相邻的单元交换意见不允许全局广播。理由是· 全局广播的通信量随单元数平方增长8 个单元还能扛32 个就崩了· 全局广播会把所有人的判断平均掉等于又退回了一个大脑局部交换才能保留差异。局部交换的额外好处某条链路断了影响的只是局部整体还能降级运行。约束二冲突到一定比例就直接淘汰不做折中当某两个倾向在同一处冲突达到一定比例直接判为不可行退出候选池而不是各让一步。为什么不做折中因为物理世界没有折中。要么撞上要么不撞。一个70% 往前走、30% 往左的决定执行出来是撞。折中在语义层是妥协在物理层是事故。约束三连续多轮稳定才算达成共识一次交换就定结论是不行的——那等于第一个说话的单元说了算。规则是同一结论连续保持若干轮不变才允许入池。轮数不需要多三轮就够。这条约束的作用是过滤掉瞬时抖动比如某个感知帧恰好有噪声单帧会让它误判三轮下来噪声自己会被稀释。三条约束的工程参数光讲有三条约束是不够的得能报出数字。我们把可公开的参数列出来参数 取值 含义决策单元数 8 并行判断的单元个数凝聚权重 0.6 向邻近单元的平均倾向靠拢的强度对齐权重 0.3 与邻近单元的方向一致程度分离权重 0.4 与邻近单元保持最小间隔的强度分离半径 0.35 低于此距离触发分离归一化单位吸引系数 0.9 向目标收敛的强度迭代轮数 24 单次协商的最大轮数时间步长 0.1 每轮推进的归一化时间最大速度 0.5 单元单轮可移动的上限保守阈值 0.45 协商置信度低于此值转入保守模式这十个数字合起来就是第一节说的三条约束的落地形态——凝聚/对齐/分离三组权重对应局部交换迭代 24 轮对应多轮稳定分离半径与保守阈值对应冲突处理。有个细节值得说分离权重0.4大于对齐权重0.3。 这个关系是刻意的——让单元别挤在一起比让单元想法一致更重要。如果反过来八个单元会很快收敛到同一个倾向等于退化成一个单元协商就失去意义了。这条不等式是整个参数集里最关键的一处。 调参调到最后真正决定系统有没有多样性的往往就是这一处权重的高低关系。三条约束合起来的效果单一约束 单独用会怎样只做局部交换 意见永远合不拢无法收敛只做冲突淘汰 有效选项被过早杀死退化成保守不动作只做多轮稳定 抖动过滤了但没有结构决定依旧是乱的三条必须同时在才构成一个能收敛、又不失多样性的协商机制。 这是这套结构的核心也是最难调的地方——调松了决议不出来调紧了所有单元给出同一个答案等于没有协商。三、这套结构解决什么集中式解决不了的问题3.1 没见过的新场景集中式的行为可以概括成见到过的场景有规则没见过的场景没规则。协商式的行为不一样没见过的场景单元们各自凭局部规则给出倾向合起来仍然能产出一条动作序列。举一个实测例子。给系统一个此前不在任何规则表里的场景它输出的决策过程记录是这样的判定全新场景未命中任何历史决策动作序列抓取 → 缓慢趋近目标 → 安全优先协商置信度0.09 —— 低于保守阈值自动转入保守模式降速 力上限收紧转成结构化输出后是这样的步骤 参数 说明APPROACH趋近 增益 0.786速度系数 1.0 先靠近正常速度TOUCH触碰 接触力 6.0 N速度系数 1.0 轻触确认力控制在 6 牛GRASP抓取 抓取力 12.0 N置信 0.586 确认后施力力值取自上一阶段实测注意这条序列不是任何一条预写规则的内容。它是几个单元各自判断后收敛出来的· 目标单元说要抓· 路径单元说前方不确定速度降下来· 安全单元说优先级压过速度· 三条倾向合成就是慢慢靠过去、轻碰确认、再施力抓。这就是决定自己长出来的意思——不是随机生成是局部判断在约束下收敛出的唯一合理路径。3.1.1 置信度低的时候会怎样这是这套机制里我最想强调的一处诚实设计。上面那次实测协商置信度只有 0.09。系统的处理不是照样输出而是低置信转入保守模式降速 力上限收紧这意味着两件事系统知道自己拿不准。 置信度不是一个用来炫耀的数字是一个内部判据拿不准时它不硬来。 降速、收紧力上限——动作还是那套动作但变得更谨慎。这比永远输出高置信度要有价值得多。 一个永远自信的系统在真出问题时不会告诉你它没把握。3.2 部分感知缺失多单元天生对缺失有容忍度某个单元的输入丢了它的倾向会被标为弱协商时权重自然下降其余单元照常工作。集中式没有这个能力——输入不完整规划器要么报错要么瞎猜。3.3 决策的可解释性协商式天然留下决策痕迹。当前版本记录到这一层记录项 内容决策次数 累计进入协商的次数记忆复用次数 命中历史决策的次数保守模式次数 协商置信度低、转入降速收紧的次数拒绝次数 输入不齐备被拦下的次数单次结果 动作序列、协商置信度、模式探索/保守、单元离散度、是否复用记忆其中模式这一项最有用它直接告诉你这次决策是有把握还是将就着做。 现场运维拿到这一项就能判断哪些动作需要重点盯。需要说明边界当前版本记录的是收敛结果与宏观状态不含逐单元每一轮的完整投票明细。这意味着你能知道这次决策收敛得好不好、走的哪条路但不能回放第三个单元在第 17 轮改了什么主意。为什么不做完整回放因为八个单元、24 轮迭代、每轮几十维状态的完整快照量级会超出端侧存储的合理预算。我们选择记决策结论 可信度 离散度这三个最有诊断价值的量而不是全量留痕。这是一个取舍不是能力缺失。集中式只有最终输出出了问题只能反推协商式至少能告诉你这次它有多确定。四、为什么规则少反而更难这一段是本文的核心论点值得展开。规则多不难规则少才难。规则多的时候每加一条就解决一个具体问题效果立刻可见工程师会有明确的成就感。但规则会互相冲突到某个量级之后加规则带来的收益小于它制造的冲突系统开始改一处坏一处。规则少的时候每条规则都必须在大量场景下同时成立。这需要把规则提到一个更高的抽象层——不是遇到 X 就做 Y而是任何情况下都得满足 Z。我们这三条约束全都是后一种形式· 局部交换是任何情况下通信不得超过邻接· 冲突淘汰是任何情况下不得用折中规避冲突· 多轮稳定是任何情况下不得以单次判断定案。它们不告诉你该做什么只告诉你不许做什么。剩下的空间留给场景自己填。这就是为什么它能覆盖规则表覆盖不了的场景。五、这套机制在系统里的位置它不是一个独立模块而是决策层的组织形式。它与上下层的关系层 它做什么 与本机制的关系语义层 解析指令给出任务目标 提供协商的初始目标协商层本机制 多单元判断收敛出一条动作序列 本体物理层 把动作序列变成关节物理量 消费协商结果值得强调的是协商层的输出是语义动作不是物理量。 它不知道电机怎么转也不需要知道。这条边界由物理智能核心模块守住两个模块各管一段互不越界。六、小结· 集中式规划有两个死结单点失效、新场景无从下手。· 协商式的代价是需要约束收益是能自我收敛出新解。· 三条约束必须同时成立少一条就退化。· 约束全是不许做什么的形式这是它能泛化的原因。· 协商层的输出止步于语义动作不下探到物理量。架构篇回顾篇目 主题| 1/3 让上层智能彻底不知道电机的存在 | 翻译层为什么独立、边界怎么划 || 2/3 缺一个物理量它就拒绝执行 | 物理校验门缺件为什么必须拒绝|3/3 机器人的决定是怎么冒出来的本篇 多单元协商新场景怎么自己长出解本系列架构篇到此结束。下一篇为压轴独立稿不靠遥控、不靠预写脚本机器人如何自主完成作业。获取与部署⚠️ 重要说明软件包托管于我方阿里云 ECS 静态服务节点链接为配套文章专属访问地址。服务仅用于本次文稿配套评估试用链接会按需维护我方有权随时关停访问。文件禁止二次分发、转存商用如需商用正式包与持续技术支持请联系我方商务对接获取正式发布渠道。下载地址http://47.119.135.145:8080/lumina_pmd_v3.1.2_so_publish.tar.gz部署四步下载并校验总包 MD5md5sum lumina_pmd_v3.1.2_so_publish.tar.gz期望值eab169edc7a6d31ee636c8edc0f6c99c解压tar -xzf lumina_pmd_v3.1.2_so_publish.tar.gz执行安装脚本配置环境bash install.sh如提示 /etc/profile.d 权限不足改用用户级 PYTHONPATH 方案echo ‘export PYTHONPATHP W D / c o r e m o d u l e s : PWD/core_modules:PWD/coremodules:PWD/adapter:P W D / v t l a h a l : PWD/vtla_hal:PWD/vtlahal:PYTHONPATH’ ~/.bashrcsource ~/.bashrc执行冒烟测试验证模块导入与全链路功能cd lumina_pmd_v3.1.2_so_publishbash install.shinstall.sh 已内置核心模块导入自检全部通过时输出 OK: core modules loaded。环境要求Ubuntu 22.04 LTS · Python 3.10 · x86_64 · 内存 8GB 起推荐 16GB文件级验真包内附 md5_manifest.txt251 条文件级指纹可执行以下命令逐文件复核md5sum -c md5_manifest.txt --quiet全部条目无输出即代表一致若出现 FAILED请核对 Python 版本是否为 3.10编译产物与解释器版本绑定。