一、核心架构总览

分层架构

  1. 感知层:相机、激光雷达、IMU、力觉传感器、麦克风
  2. 智能体层MCP 智能体 / LangChain 智能体 / 自定义具身 Agent(决策、规划、工具调用)
  3. 大模型推理层:Ollama 端侧部署 LLM/VLA,提供语义理解与动作意图生成
  4. 中间调度层ROS2,负责消息流转、坐标变换、时序同步
  5. 底层控制层PID 三闭环、运动学、动力学、轨迹规划、硬件接口
  6. 硬件执行层电机、驱动器、机械臂、移动底盘

运行逻辑:传感器采集数据→智能体接收状态 + 用户指令→调用本地大模型推理→ 拆解任务 + 调用机器人技能Tools ROS2 下发轨迹 / 目标位姿底层闭环控制执行→状态回传形成闭环


二、前置环境部署

1. 基础依赖安装

bash

运行

# 1. 部署Ollama端侧大模型
ollama serve
ollama run qwen:7b
ollama run llava:7b  # 多模态视觉模型

# 2. 智能体框架
pip install langchain langchain-ollama mcp python-dotenv
# 3. ROS2通信依赖
pip install rclpy std_msgs geometry_msgs

2. 核心服务常驻

  • Ollama 11434 端口大模型 API 服务常驻
  • ROS2 核心节点启动(TF、底盘 / 机械臂控制器、传感器驱动)
  • PTP 时钟同步服务开启,保证全链路时序对齐

三、智能体选型与部署模式

模式 1:LangChain 轻量化具身智能体(入门首选)

适配端侧算力,专注任务拆解 + 技能调用 + 状态管理

1. 智能体核心能力
  • 解析自然语言指令,智能体最重要的能力之一,就是接受自然语言的指令!!当他自己不会解析指令的语义,只智能体负责把上下文+用户的自然语言,打包发给提供大模型服务的HTTP server。
  • 拆分多步骤机器人任务
  • 绑定机器人本地工具函数(导航、抓取、避障、调速)
  • 结合实时环境状态动态调整执行策略
2. 完整部署代码(ROS2 联动智能体)

python

运行

import rclpy
from rclpy.node import Node
from std_msgs.msg import String
from geometry_msgs.msg import PoseStamped
from langchain.agents import AgentExecutor, create_react_agent
from langchain_ollama import ChatOllama
from langchain.tools import tool
from langchain.prompts import PromptTemplate

# ========== 1. 定义机器人本地技能工具 ==========
class RobotSkillTools:
    def __init__(self, node):
        self.node = node
        self.nav_pub = node.create_publisher(PoseStamped, "/goal_pose", 10)
        self.cmd_vel_pub = node.create_publisher(String, "/robot_action", 10)

    @tool
    def robot_navigate(self, target_pos:str) -> str:
        """机器人自主导航移动
        参数:target_pos 目标位置坐标
        """
        self.node.get_logger().info(f"智能体下发导航指令:{target_pos}")
        msg = String()
        msg.data = f"NAV:{target_pos}"
        self.cmd_vel_pub.publish(msg)
        return f"已前往目标点位:{target_pos},执行中"

    @tool
    def robot_grasp(self, object_name:str) -> str:
        """机械臂抓取物体
        参数:object_name 物体名称
        """
        self.node.get_logger().info(f"智能体下发抓取指令:{object_name}")
        msg = String()
        msg.data = f"GRASP:{object_name}"
        self.cmd_vel_pub.publish(msg)
        return f"开始抓取:{object_name}"

    @tool
    def robot_obstacle_avoid(self) -> str:
        """机器人紧急避障"""
        self.cmd_vel_pub.publish(String(data="AVOID"))
        return "检测障碍物,启动自动避障"

# ========== 2. 构建具身智能体 ==========
class EmbodiedAgentNode(Node):
    def __init__(self):
        super().__init__("embodied_agent_node")
        self.tools = RobotSkillTools(self)
        self.tool_list = [
            self.tools.robot_navigate,
            self.tools.robot_grasp,
            self.tools.robot_obstacle_avoid
        ]
        # 连接本地Ollama大模型
        self.llm = ChatOllama(
            model="qwen:7b",
            base_url="http://localhost:11434/v1"
        )
        # 智能体提示词(具身专属)
        prompt = PromptTemplate.from_template("""
你是具身机器人智能体,只能调用指定工具完成任务,禁止编造动作。
任务指令:{input}
可用工具:{tools}
思考过程:{agent_scratchpad}
""")
        # 创建智能体
        agent = create_react_agent(self.llm, self.tool_list, prompt)
        self.agent_executor = AgentExecutor(agent=agent, tools=self.tool_list, verbose=True)
        # 订阅用户指令
        self.create_subscription(String, "/user_command", self.exec_task, 10)
        self.get_logger().info("具身智能体部署完成,等待指令")

    def exec_task(self, msg):
        user_cmd = msg.data
        self.get_logger().info(f"接收任务指令:{user_cmd}")
        # 智能体自主规划执行
        res = self.agent_executor.invoke({"input":user_cmd})
        self.get_logger().info(f"智能体执行结果:{res['output']}")

def main():
    rclpy.init()
    node = EmbodiedAgentNode()
    rclpy.spin(node)
    node.destroy_node()
    rclpy.shutdown()

if __name__ == "__main__":
    main()

模式 2:MCP 标准智能体部署(工业级标准化)

  1. 架构分工
  • MCP Host:端侧智能体主程序
  • MCP Client:对接 Ollama 大模型服务
  • MCP Server:封装机器人所有硬件能力(导航、运动、感知、力控):可以封装成ROS2节点,也可以是MCP Server自身是一个节点,其他硬件能力自身也是一个节点,MCP Server与其他能力节点之间通过ROS2 DDS通信。
  1. 核心优势
  • 工具即插即用,新增硬件无需改写智能体逻辑
  • 统一 JSON-RPC 通信,兼容所有大模型
  • 完美对接 ROS2 与底层控制层
  1. 部署流程
  • 把机器人运动、感知、控制功能封装为独立 MCP 服务端
  • 智能体通过 STDIO/HTTP 连接 MCP 服务
  • 智能体下发语义指令→MCP 转换为机器人标准控制指令→底层执行

模式 3:端到端 VLA 智能体部署(纯视觉行为智能体)

  1. 部署视觉 - 语言 - 动作模型(RT-2、GR00T)
  2. 智能体直接读取相机图像 + 机器人本体状态
  3. 跳过文字拆解,直接输出关节轨迹 / 底盘速度指令
  4. 适合高速动态交互、仿生运动场景

四、智能体与全层级打通部署流程

1. 数据流打通

  1. 传感器数据 → ROS2 话题发布 → 智能体订阅获取环境状态
  2. 用户语音 / 文本指令 → 话题下发 智能体解析
  3. 智能体规划任务 → 调用工具 发布动作指令话题
  4. 底层控制器订阅指令 → 轨迹规划 (S 曲线 / 梯形) → PID 三闭环执行
  5. 关节姿态、里程、力控数据回传 → 智能体实时修正决策

2. 实时性与安全部署规则

  1. 算力隔离智能体 + 大模型跑在 NPU / 工控非实时核;1kHz 控制环独立跑在 MCU/FPGA,互不抢占
  2. 指令过滤智能体输出的柔性意图指令,必须经过安全校验层,限制速度、力矩、活动边界
  3. 降级策略大模型推理超时、智能体异常 → 自动切换预设规则运动,保障设备与人安全
  4. 时钟对齐所有感知数据、智能体决策、控制指令统一打上 PTP 硬件时间戳,消除时序错位

3. 量产部署优化

  1. 大模型统一 INT4 量化压缩,降低端侧显存占用
  2. 智能体常用任务做成记忆缓存,减少重复推理
  3. 技能工具模块化封装,不同机器人快速适配移植
  4. 部署守护进程,异常自动重启智能体与大模型服务

五、部署执行步骤(实操顺序)

  1. 启动硬件驱动、传感器、ROS2 底层控制节点
  2. 开启 PTP 时钟同步,校准整机时序
  3. 启动 Ollama 本地大模型服务,确保 11434 接口正常调用
  4. 启动具身智能体主节点,绑定机器人技能工具
  5. 下发测试指令,验证:指令解析→任务规划→动作执行→状态反馈全流程
  6. 调试智能体决策逻辑、PID 参数、轨迹平滑度,完成落地

六、核心总结

  1. 具身智能体部署 = 智能体框架 + 本地端侧大模型 + 机器人技能封装 + ROS2 调度 + 底层实时控制
  2. 智能体不直接控制硬件,只负责思考、规划、调度任务,是连接高层智能与底层运动的中间核心
  3. 主流落地路线:LangChain 快速原型 → MCP 标准化量产 → VLA 端到端高阶仿生
  4. 本质:大模型提供智慧认知,智能体负责任务落地统筹,底层控制保障运动稳定安全
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐