当前位置: 首页 > news >正文

机器人的“大脑”:具身智能决策系统架构

系列导读
欢迎来到《具身智能与人形机器人——从原理到实战》系列的第4篇。前几篇文章中,我们探讨了具身智能的概念(第1篇),拆解了机器人的核心硬件(第2篇),并深入研究了运动控制这个“小脑”(第3篇)。今天,我们将目光投向机器人的**“大脑”——决策系统架构。如果说硬件是身体、控制是小脑,那么大脑就是负责理解环境、做出决策、规划行动的核心。我们将详细讲解感知-规划-控制闭环的工作原理,并介绍当前机器人领域的事实标准——ROS2行为树**,让你对机器人软件架构有一个全景式的认识。


1. 引言:从“能动的机器”到“智能的机器人”

在上一篇文章中,我们学会了如何让机器人稳定站立、平稳行走——这是“能动”的基础。但是,一个能走的机器人还不算“智能”。真正的智能体现在:

  • 它能不能理解自己身处何地?(厨房、客厅还是工厂?)
  • 它能不能听懂指令?(“去拿桌子上的苹果”)
  • 它能不能规划路径?(绕过地上的玩具,而不是直接碾过去)
  • 它能不能处理意外?(苹果被拿走了,怎么办?)

所有这些能力,都需要一个强大的“大脑”来支撑。这个大脑不是单一的算法,而是一整套软件架构,它将感知、决策、规划、控制等模块有机地组织起来,协同工作。

今天,我们就来拆解这个架构。


2. 感知-规划-控制闭环:机器人的核心循环

任何智能机器人的核心工作流程都可以概括为一个闭环:

传感器数据 世界模型 目标指令 ↓ ↓ ↓ [ 感 知 ] → [ 理 解 ] → [ 规 划 ] → [ 控 制 ] → 执行器 ↑ ↓ └───────────────────────────────────────┘ 反馈循环

这个闭环包含三个核心环节:

2.1 感知(Perception)

任务:将原始传感器数据转化为有意义的语义信息。

输入:摄像头图像、激光雷达点云、IMU数据、关节编码器、力矩传感器等。

输出

  • 物体检测与识别(“那里有一个红色的苹果”)
  • 机器人自身定位(“我在厨房的冰箱前面”)
  • 环境地图构建(“前方有障碍物”)
  • 人体姿态估计(“那个人伸出了手”)

关键技术:计算机视觉(CNN、Transformer)、SLAM(同步定位与地图构建)、多传感器融合。

2.2 规划(Planning)

任务:基于感知结果和目标任务,生成行动序列。

输入

  • 当前环境状态(物体位置、障碍物、地形)
  • 机器人自身状态(位置、姿态、剩余电量)
  • 高层任务指令(“把苹果拿到桌子上”)

输出:一系列离散的动作或连续的轨迹。

三个层次

  • 任务规划:将高层指令分解为子任务序列(如“走向桌子”→“抓取苹果”→“走向桌子”→“放置苹果”)
  • 路径规划:在环境中规划无碰撞的移动路径(A*、RRT、Dijkstra)
  • 运动规划:生成具体的关节轨迹(插值、优化)

2.3 控制(Control)

任务:将规划出的轨迹转化为具体的电机力矩指令。

输入:期望的关节位置/速度/力矩。

输出:PWM占空比、电流指令。

关键技术:PID控制、计算力矩控制、模型预测控制(MPC)、阻抗控制。

我们在第3篇文章中详细讨论的就是这一层。

2.4 闭环的意义

这个循环的关键在于“闭环”二字:

  • 控制执行后,新的传感器数据会立即反馈给感知模块
  • 如果抓取时苹果滑落了,感知模块会发现“手里空了”,规划模块需要重新规划抓取动作
  • 如果路径被突然出现的人挡住,感知模块会更新障碍物信息,规划模块重新规划路径

正是这种持续不断的循环,让机器人能够适应动态变化的真实世界。


3. ROS2:机器人操作系统的“事实标准”

要实现上述闭环,我们需要一个通信框架来连接各个模块。这就是ROS(Robot Operating System)的用武之地。

3.1 什么是ROS?

ROS不是真正的操作系统,而是一个分布式通信框架,它让机器人的各个模块(感知、规划、控制)能够像微服务一样独立运行、互相通信。

核心概念

  • 节点(Node):每个功能模块都是一个节点(如“相机驱动节点”“目标检测节点”“路径规划节点”)
  • 话题(Topic):节点之间通过话题发布/订阅数据流(如“/camera/image”话题发布图像数据)
  • 服务(Service):请求-响应的同步通信模式
  • 动作(Action):用于长时间执行的任务(如“导航到目标点”),支持进度反馈和取消

3.2 ROS1 vs. ROS2

2026年的今天,ROS2已经成为主流。它与ROS1的关键区别在于:

特性ROS1ROS2
通信中间件自定义TCPROS/UDPROSDDS(数据分发服务)
实时性支持有限原生支持实时内核
多机器人支持困难原生支持
安全性支持加密、认证
跨平台Linux为主Linux、Windows、macOS、RTOS
生命周期2025年5月停止维护持续演进

DDS的引入是ROS2最大的变革。DDS是一种发布-订阅中间件标准,具备以下优势:

  • 去中心化:没有ROS1的“主节点”,避免单点故障
  • QoS策略:可以配置通信质量(可靠/尽力而为、持久化等)
  • 自动发现:节点自动发现彼此,无需配置IP

3.3 典型ROS2系统架构

一个完整的人形机器人ROS2系统可能包含以下节点:

[硬件层] ├── /camera_node # 相机驱动,发布 /camera/image_raw ├── /lidar_node # 激光雷达驱动,发布 /scan ├── /imu_node # IMU驱动,发布 /imu/data ├── /joint_state_node # 关节状态,发布 /joint_states └── /motor_controller_node # 电机控制,订阅 /joint_commands [感知层] ├── /object_detection_node # 目标检测,订阅 /camera/image_raw,发布 /detected_objects ├── /slam_node # SLAM建图定位,订阅 /scan /imu,发布 /map /pose └── /human_pose_node # 人体姿态估计,订阅 /camera/image_raw,发布 /human_poses [规划层] ├── /navigation_node # 路径规划,订阅 /map /pose /goal,发布 /path ├── /task_planner_node # 任务规划,订阅 /detected_objects /goal,发布 /action_sequence └── /arm_planner_node # 机械臂运动规划,订阅 /action_sequence,发布 /arm_trajectory [控制层] ├── /walking_controller_node # 步态控制,订阅 /path /imu,发布 /joint_commands └── /arm_controller_node # 手臂控制,订阅 /arm_trajectory,发布 /joint_commands [交互层] ├── /speech_recognition_node # 语音识别,发布 /voice_command ├── /tts_node # 语音合成,订阅 /response_text └── /gui_node # 可视化界面

这些节点通过DDS进行通信,可以分布在不同的计算机上(例如感知层在边缘AI芯片上运行,控制层在实时内核上运行)。

3.4 ROS2开发快速上手

安装ROS2(以Humble Hawksbill为例):

# 设置localesudoaptupdate&&sudoaptinstalllocalessudolocale-gen en_US en_US.UTF-8# 添加ROS2源sudoaptinstallsoftware-properties-commonsudoadd-apt-repository universesudoaptupdate&&sudoaptinstallcurl-ysudocurl-sSLhttps://raw.githubusercontent.com/ros/rosdistro/master/ros.key-o/usr/share/keyrings/ros-archive-keyring.gpg# 安装ROS2sudoaptupdatesudoaptinstallros-humble-desktop

创建一个简单的发布-订阅节点(Python):

# publisher.pyimportrclpyfromrclpy.nodeimportNodefromstd_msgs.msgimportStringclassMinimalPublisher(Node):def__init__(self):super().__init__('minimal_publisher')self.publisher=self.create_publisher(String,'topic',10)timer_period=0.5# secondsself.timer=self.create_timer(timer_period,self.timer_callback)self.i=0deftimer_callback(self):msg=String()msg.data=f'Hello World:{self.i}'self.publisher.publish(msg)self.get_logger().info(f'Publishing:{msg.data}')self.i+=1defmain(args=None):rclpy.init(args=args)minimal_publisher=MinimalPublisher()rclpy.spin(minimal_publisher)minimal_publisher.destroy_node()rclpy.shutdown()if__name__=='__main__':main()
# subscriber.pyimportrclpyfromrclpy.nodeimportNodefromstd_msgs.msgimportStringclassMinimalSubscriber(Node):def__init__(self):super().__init__('minimal_subscriber')self.subscription=self.create_subscription(String,'topic',self.listener_callback,10)self.subscription# prevent unused variable warningdeflistener_callback(self,msg):self.get_logger().info(f'I heard:{msg.data}')defmain(args=None):rclpy.init(args=args)minimal_subscriber=MinimalSubscriber()rclpy.spin(minimal_subscriber)minimal_subscriber.destroy_node()rclpy.shutdown()if__name__=='__main__':main()

运行:

# 终端1ros2 run my_package publisher# 终端2ros2 run my_package subscriber

4. 行为树:组织复杂行为的利器

有了ROS2作为通信骨架,我们还需要一个行为组织框架来管理机器人的复杂任务流程。传统的有限状态机(FSM)在面对复杂行为时,会陷入“状态爆炸”的困境。于是,**行为树(Behavior Tree)**应运而生。

4.1 什么是行为树?

行为树是一种用于控制任务切换的树状结构,最初源于游戏AI,现在已成为机器人复杂行为建模的标准工具。它的核心思想是:将复杂任务分解为一系列简单、可复用的行为节点,通过组合节点控制执行流

4.2 行为树 vs. 有限状态机

特性有限状态机(FSM)行为树(BT)
结构平面化的状态转移图层次化的树状结构
复用性状态难以复用节点易于复用
调试难度状态爆炸后难以理解树结构直观清晰
并发处理困难原生支持并行节点
动态修改运行时修改困难支持运行时重新配置

4.3 行为树的核心节点类型

行为树由四种基本节点组成:

  1. 控制节点(Control Nodes):控制执行流

    • Sequence(序列):从左到右执行子节点,全部成功才返回成功
    • Fallback(回退):从左到右执行子节点,一个成功就返回成功
    • Parallel(并行):同时执行多个子节点,根据指定策略返回
  2. 装饰节点(Decorator Nodes):修改子节点的行为

    • Inverter:反转结果
    • Repeater:重复执行子节点
    • Timeout:给子节点设置超时
  3. 条件节点(Condition Nodes):检查条件,不修改状态

    • IsObjectDetected?IsBatteryLow?IsAtHome?
  4. 动作节点(Action Nodes):执行具体动作,可能运行多个周期

    • MoveToTargetGraspObjectSpeak

4.4 一个真实的例子:“去拿苹果”任务

[Sequence: 拿苹果] ├── [Fallback: 确保苹果位置已知] │ ├── [Condition: 是否知道苹果位置?] │ └── [Action: 寻找苹果] ├── [Parallel: 同时做两件事] │ ├── [Action: 导航到苹果位置] │ └── [Sequence: 准备抓取] │ ├── [Action: 伸出右手] │ └── [Action: 张开手爪] ├── [Action: 抓取苹果] ├── [Fallback: 检查抓取成功] │ ├── [Condition: 手爪是否抓到物体?] │ └── [Action: 重新尝试抓取] └── [Action: 返回起始位置]

这个行为树清晰表达了任务的层级结构和备选方案。如果“寻找苹果”失败,整个任务可以优雅地终止或进入错误处理。

4.5 常用行为树框架

  • BehaviorTree.CPP:C++实现,最流行的机器人行为树库,ROS2集成良好
  • PyTrees:Python实现,适合快速原型
  • Unreal Engine Behavior Tree:游戏领域标准

4.6 BehaviorTree.CPP快速示例

// 定义一个简单动作节点classSayHello:publicBT::SyncActionNode{public:SayHello(conststd::string&name):BT::SyncActionNode(name,{}){}BT::NodeStatustick()override{std::cout<<"Hello, I'm a robot!"<<std::endl;returnBT::NodeStatus::SUCCESS;}};// 构建行为树intmain(){BT::BehaviorTreeFactory factory;factory.registerNodeType<SayHello>("SayHello");// 从XML描述创建树autotree=factory.createTreeFromText(R"( <root main_tree_to_execute="MainTree"> <BehaviorTree ID="MainTree"> <Sequence> <SayHello/> <SayHello/> <SayHello/> </Sequence> </BehaviorTree> </root> )");// 执行树tree.tickWhileRunning();return0;}

5. 大脑的硬件:从CPU到NPU

理解了软件架构,我们再来看支撑这个“大脑”的硬件平台。人形机器人的算力需求呈指数级增长,不同任务对硬件的要求各不相同:

5.1 算力需求分层

任务类型示例算力需求典型硬件
底层控制电机PID控制、安全监控低(MHz级)MCU(STM32、Infineon)
中层感知目标检测、SLAM中等(TOPs级)边缘NPU(旭日X3、Jetson Orin)
高层决策大模型推理、任务规划极高(100+TOPs)GPU/NPU(NVIDIA Thor、华为昇腾)

5.2 异构计算架构

2026年的主流人形机器人通常采用异构计算架构

[云端/边缘服务器] ← 5G/WiFi 7 → [中央计算单元] ← 高速总线 → [节点控制器] (NVIDIA Thor) (STM32H7) ↓ ↓ [大模型推理] [关节控制] [任务规划] [安全监控] [全局SLAM] [IMU融合]

中央计算单元(如NVIDIA Thor、地平线征程6)负责大模型推理和全局规划,节点控制器(如STM32、Infineon TC4)负责关节级的实时控制和安全监控。

5.3 2025-2026年最新进展

  • NVIDIA Thor:2000 TOPS算力,单芯片可运行多个大模型,已应用于Figure 02、特斯拉Optimus Gen3
  • 地平线征程6:专为机器人设计,集成BPU(Brain Processing Unit),能效比提升3倍
  • AMD Versal AI Edge:自适应计算加速平台,支持从传感器到控制的端到端加速

6. 大脑的软件栈:从驱动到智能

将硬件、ROS2、行为树、AI模型整合起来,就构成了完整的机器人软件栈:

┌─────────────────────────────────────────────────────┐ │ 智能应用层 │ │ (任务规划、人机交互、多机协作) │ ├─────────────────────────────────────────────────────┤ │ 行为管理层 │ │ (行为树/状态机,任务调度) │ ├─────────────────────────────────────────────────────┤ │ 功能模块层 │ │ (导航、抓取、SLAM、目标检测、语音交互) │ ├─────────────────────────────────────────────────────┤ │ 通信中间件 │ │ (ROS2 / DDS) │ ├─────────────────────────────────────────────────────┤ │ 硬件抽象层 │ │ (机器人硬件抽象层,驱动程序) │ ├─────────────────────────────────────────────────────┤ │ 硬件平台 │ │ (CPU/GPU/NPU + 传感器 + 执行器) │ └─────────────────────────────────────────────────────┘

每一层的职责

  • 硬件抽象层:封装硬件差异,提供统一的API
  • 通信中间件:连接各模块,支持分布式部署
  • 功能模块层:实现具体的感知、规划、控制算法
  • 行为管理层:组织复杂任务,处理异常和中断
  • 智能应用层:实现高层智能,如大模型驱动的对话和决策

7. 实战:用ROS2+行为树实现简单任务

让我们通过一个简单的实战示例,感受一下ROS2和行为树是如何协同工作的。我们将实现一个任务:机器人检测到人后,走过去并打招呼

7.1 系统设计

  • 感知节点:运行YOLOv8,发布检测到的人的位置
  • 导航节点:接收目标点,发布控制指令
  • 语音节点:播放语音
  • 行为树:协调上述节点,决定何时做什么

7.2 关键代码片段

行为树XML定义

<rootmain_tree_to_execute="MainTree"><BehaviorTreeID="MainTree"><Sequence><!-- 等待检测到人 --><WaitForPerson/><!-- 导航到人附近 --><NavigateToPoseperson_target="{person_pose}"/><!-- 打招呼 --><Saytext="Hello, nice to meet you!"/></Sequence></BehaviorTree></root>

WaitForPerson动作节点(Python)

importrclpyfromrclpy.nodeimportNodefrombt_nodesimportBTNodefromperson_msgs.msgimportPersonDetectedclassWaitForPerson(BTNode):def__init__(self,name):super().__init__(name)self.person_detected=Noneself.sub=self.node.create_subscription(PersonDetected,'/detected_person',self.person_callback,10)defperson_callback(self,msg):self.person_detected=msg# 将检测结果保存到黑板(Blackboard),供其他节点使用self.blackboard().set('person_pose',msg.pose)deftick(self):ifself.person_detected:returnBTNode.SUCCESSreturnBTNode.RUNNING

NavigateToPose动作节点

classNavigateToPose(BTNode):def__init__(self,name):super().__init__(name)self.client=self.node.create_client(NavigateToPose,'/navigate_to_pose')self.goal_sent=Falsedeftick(self):target_pose=self.blackboard().get('person_pose')ifnottarget_pose:returnBTNode.FAILUREifnotself.goal_sent:# 发送导航请求request=NavigateToPose.Request()request.pose=target_pose self.client.send_goal_async(request)self.goal_sent=TruereturnBTNode.RUNNING# 检查导航是否完成ifself.client.is_goal_done():ifself.client.get_result().success:returnBTNode.SUCCESSelse:returnBTNode.FAILUREreturnBTNode.RUNNING

主程序

importrclpyfrompy_trees_rosimportRosNodeimportpy_treesdefcreate_root():root=py_trees.composites.Sequence("MainSequence",memory=True)root.add_child(WaitForPerson("WaitForPerson"))root.add_child(NavigateToPose("NavigateToPose"))root.add_child(Say("SayHello"))returnrootif__name__=='__main__':rclpy.init()root=create_root()tree=py_trees.trees.BehaviourTree(root)# 创建ROS2节点包装器ros_node=RosNode()# 主循环whilerclpy.ok():tree.tick()rclpy.spin_once(ros_node,timeout_sec=0.1)time.sleep(0.1)

这个示例展示了感知-规划-控制的完整闭环,以及行为树如何优雅地组织任务流程。


8. 2026年最新趋势:大模型与机器人架构的融合

2025-2026年,机器人软件架构正在经历一场深刻的变革——大模型正在从“云端大脑”下沉到“端侧大脑”

8.1 VLA模型:视觉-语言-动作一体化

VLA(Vision-Language-Action)模型将感知、理解、规划、控制融为一体,用一个统一的神经网络完成从视觉输入到动作输出的端到端映射。

代表性工作:

  • Google RT-2:2023年提出,将机器人动作编码为文本token,与大模型统一训练
  • Figure Helix 02:2026年发布,三层架构(System2/1/0),实现行走、操作与平衡的一体化协同
  • OpenAI Figure:结合GPT-4V,实现自然语言指令到复杂操作序列的转换

8.2 对软件架构的影响

VLA模型的出现,正在改变传统分层架构:

传统架构:感知节点 → 规划节点 → 控制节点 → 执行 ↓ VLA架构:一个神经网络端到端输出动作

但这并不意味着分层架构的消失。目前的主流做法是混合架构

  • System2(7B参数VLM):场景理解、任务规划(运行在云端或中央计算单元)
  • System1(80M参数Transformer):高速决策,200Hz输出全身关节运动目标(运行在边缘NPU)
  • System0(10M参数神经网络):底层平衡维持,1kHz频率(运行在MCU)

这种分层既发挥了大模型的泛化能力,又保证了底层控制的实时性和安全性。


9. 总结与下期预告

今天,我们系统地拆解了人形机器人的“大脑”——决策系统架构:

  • 感知-规划-控制闭环是机器人的核心工作循环
  • ROS2作为通信中间件,连接各个功能模块,成为行业标准
  • 行为树替代传统状态机,优雅地组织复杂任务
  • 异构计算硬件支撑不同层次的算力需求
  • 大模型正在从云端下沉,重塑机器人软件栈

通过本篇文章,你应该对人形机器人的软件架构有了全景式的认识。在接下来的文章中,我们将深入每一个子模块,从环境感知、仿真训练到具体的ROS2开发,一步步带你走入实战。

下期预告:机器人要理解世界,首先得“看见”世界。下一篇文章,我们将深入环境感知技术,讲解多传感器融合、SLAM定位与建图、以及目标检测算法在机器人上的部署。敬请期待!


互动话题
你认为未来机器人软件架构会是端到端大模型一统天下,还是分层架构继续存在?欢迎在评论区分享你的观点。


(本文完)


参考资料

  1. ROS.org. ROS2 Documentation [EB/OL]. https://docs.ros.org/, 2026
  2. BehaviorTree.CPP. BehaviorTree.CPP Documentation [EB/OL]. https://www.behaviortree.dev/, 2026
  3. Open Robotics. ROS2 Humble Hawksbill [EB/OL]. 2025
  4. OFweek机器人网. Helix 02:移动+操作融合,解锁人形机器人全身控制的VLA模型 [EB/OL]. 2026-02-01
  5. Google DeepMind. RT-2: Vision-Language-Action Models for Robot Manipulation [J]. arXiv:2307.15818, 2023
  6. NVIDIA. NVIDIA Thor: The Central Computer for Next-Gen Robotics [EB/OL]. 2025
  7. 地平线. 征程6:专为机器人设计的AI芯片 [EB/OL]. 2025
  8. 中国机器人网. 人形机器人操作系统发展现状与趋势 [EB/OL]. 2025-12-15
  9. Pyo Y, et al. ROS Robot Programming [M]. 2024
  10. Colledanchise M, Ögren P. Behavior Trees in Robotics and AI: An Introduction [M]. CRC Press, 2024
http://www.cnnetsun.cn/news/1265142.html

相关文章:

  • 【深度学习代码流程】李宏毅机器学习HW-1:预测美国COVID-19阳性病率
  • Linux系统编程(5)——网络协议
  • VS Code 只有 Ask、没有 Agent 选项的处理记录
  • 问题解决:npm 无法加载文件 D:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本
  • Simulink双三相永磁同步电机控制仿真! 1.矢量控制,包括两种电机建模,VSD模型和双d...
  • 一款轻量高效的 M3U8 在线播放工具,开发者调试必备
  • ROS基础学习4-发布者publisher编程实现
  • 基于协同过滤的房屋租赁推荐系统:打造便捷租房体验
  • (实战篇)手把手实战:利用永恒之蓝(MS17-010)漏洞深入理解渗透测试+修复方法
  • 最新全工具版本Qt+OpenCV通用视觉框架全套源码。 工具可扩展。 除了opencv和相机s...
  • 最近在捣鼓信号异常检测的时候,发现有个挺有意思的方法。不需要复杂的深度学习框架,直接在MATLAB里用传统信号处理+图像处理思路就能搞定。咱们先看个实际案例
  • AI应用架构师总结:智能搜索系统优化的8个核心指标与提升方法
  • 序列线性规划(SLP)在可再生能源系统优化中的应用与挑战
  • 提示工程架构师必学:Agentic AI中的强化学习结合策略
  • Qwen3-VL-8B与STM32的跨界实践:嵌入式设备视觉问答原型开发
  • 轻松抓取虫虫钢琴在线音频的实用技巧
  • GLM-4V-9B开源大模型应用:科研论文插图智能解读+方法复现提示生成
  • SpringBoot Jar包热更新秘籍:零停机修改配置文件的运维技巧
  • postgresql链接详解
  • 深夜还在敲代码?别硬撑,你已经很辛苦了
  • Python实战:身份证OCR识别与结构化数据提取全攻略
  • MLX90614红外测温传感器在天空星HC32F4A0开发板上的SMBus驱动移植与实战
  • Heron Handoff 插件:Figma 设计标注的离线革命与跨平台协作新体验
  • Qwen3-ASR-1.7B模型安全教程:防御对抗样本攻击
  • Mac 上高效编写 LaTeX:VSCode + LaTeX Workshop 完全配置指南
  • SillyTavern进阶配置指南:打造个性化AI对话体验
  • 从零到上线:基于快马平台实战构建可部署的trae国际版音乐应用
  • 【bypass-paywalls-chrome-clean】:开源内容访问优化工具的核心价值与实战指南
  • 模电实战:从比例到积分,运算电路的工程设计与避坑指南
  • GD32实战:用485和Ymodem协议实现远程固件升级(含完整代码解析)