ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

ROSClaw:基于ROS 2与AI智能体的机器人开发框架实战指南

ROSClaw:基于ROS 2与AI智能体的机器人开发框架实战指南 1. 项目概述当机器人遇见“智能体”如果你在机器人圈子里待过一阵子肯定对ROSRobot Operating System不陌生。它就像机器人的“安卓系统”把驱动、感知、规划这些模块用节点Node和话题Topic串起来让造机器人从“手搓电路板”变成了“拼乐高”。但传统的ROS开发有个痛点它太“机械”了。你写一个节点去订阅激光雷达数据再写一个节点去处理最后发指令给底盘。整个过程是预设的、线性的机器人像个提线木偶环境一变程序就可能“卡壳”。最近几年AI领域“智能体”Agent的概念火得不行。简单说智能体不是单一功能的程序而是一个能感知环境、自主决策、执行动作并持续学习的“智能实体”。比如一个家庭服务机器人它看到地上有玩具应该能自主决定“捡起来放到玩具箱”而不是需要你为“捡玩具”这个场景专门写一套死板的代码。ROSClaw的出现正是为了弥合ROS的“机械化”与AI的“智能化”之间的鸿沟。它的核心定位非常清晰一个基于ROS 2的开放框架专门用于构建和控制具备智能体特性的机器人。项目名里的“Claw”爪子很形象它想给ROS机器人装上能灵活抓取、自主交互的“智能爪子”。这个框架的价值在于它试图将大语言模型LLM、视觉语言模型VLM等AI能力以一种标准化、可复用的方式“注入”到ROS 2的生态中。开发者不再需要从零开始纠结如何让ChatGPT的回复转换成机器人的运动指令或者如何让机器人理解一句模糊的自然语言命令比如“把那个红色的东西拿过来”。ROSClaw提供了一套基础设施让“智能体思维”能直接在机器人上跑起来。从网络上的热议也能看出大家的期待怎么安装、如何配置、能否接入微信/飞书、用什么模型效果更好……这些问题都指向一个核心大家需要一个开箱即用、能快速搭建智能机器人应用的“脚手架”。ROSClaw瞄准的就是这个角色。2. 核心架构与设计哲学拆解要理解ROSClaw怎么用得先看看它肚子里装的是什么。它的设计不是凭空而来而是深刻理解了当前机器人智能化转型中的几个关键矛盾并给出了自己的解决方案。2.1 为什么是ROS 2而不是ROS 1这是所有现代机器人框架的必然选择。ROS 1基于TCPROS/UDPROS的通信机制在实时性、安全性和跨平台支持上已经力不从心。ROS 2采用DDS数据分发服务作为中间件带来了几个对智能体至关重要的特性真正的分布式节点发现和通信更可靠适合多机、跨网络的智能体协作场景。服务质量QoS策略你可以为不同的数据流如紧急停止指令 vs. 聊天对话流设置不同的可靠性、持久性策略。确保关键指令绝不丢失非关键信息可以适当容忍延迟。实时性与安全性为未来需要硬实时响应的智能决策打下了基础。ROSClaw基于ROS 2意味着它生来就具备了融入现代机器人生产环境的基因而不是一个实验室玩具。2.2 “智能体”在ROSClaw中如何具象化这是最核心的部分。在ROSClaw的语境里一个“智能体”不再是一个玄乎的概念而是一个由多个协同工作的ROS 2节点构成的功能模块集合。通常一个完整的智能体可能包含以下逻辑层感知与理解层这个层负责“看”和“听”。它可能包含视觉节点订阅相机话题使用集成的或外接的VLM如Qwen-VL来理解场景——“桌子上有一个马克杯一个苹果”。语音节点处理音频输入进行语音识别ASR将“去厨房看看”转换成文本。传感器融合节点将激光雷达、深度相机、IMU的数据和视觉理解结果进行融合生成一个富含语义信息的环境状态表示。决策与规划层这是智能体的“大脑”。它接收来自理解层的结构化环境状态和用户指令文本或语音转文本。核心是一个大语言模型驱动的高层规划器。例如用户说“我渴了”。理解层生成状态“用户表达口渴。客厅茶几上有一个空杯。厨房台面上有一个水壶和马克杯。”决策层中的LLM比如通过OpenClaw Gateway接入的Qwen、GPT等会基于一套预设的规则和自身推理能力生成一个行动计划序列[导航至厨房] - [找到水壶和马克杯] - [将水倒入马克杯] - [拿起马克杯] - [导航回用户位置] - [递上水杯]。这个计划是高级的、任务层面的。技能与执行层这一层负责把高级计划“编译”成机器人可执行的低层动作。它包含一系列可调用的技能Skill。每个技能是一个封装好的、稳健的ROS 2节点或动作服务器Action Server。例如NavigateToSkill导航到某点、PickObjectSkill抓取物体、PourSkill倾倒液体。执行层接收决策层的计划按顺序调用相应的技能节点并监控每个技能的执行结果成功、失败、超时。如果“拿起马克杯”技能失败比如滑脱它需要将失败信息反馈给决策层请求重新规划例如“先擦干手再拿”。记忆与学习层可选但重要智能体应该有“记忆”。ROSClaw可能通过一个专用的“记忆节点”来实现该节点维护一个向量数据库记录交互历史、环境变化、任务成败经验。当下次遇到类似场景时决策层可以查询记忆做出更优、更个性化的决策。ROSClaw框架的价值就是提供了实现上述各层模块的通用接口、通信标准、工具链和示例让开发者可以像搭积木一样快速组合出一个具备复杂交互能力的机器人智能体。2.3 OpenClaw的角色AI能力的“网关”网络热词中频繁出现“OpenClaw配置NVIDIA NIM”、“OpenClaw接入微信”这揭示了ROSClaw的一个关键依赖或设计OpenClaw。在我的理解中OpenClaw在这里扮演了“AI模型网关”或“智能体运行时环境”的角色。它可能是一个独立的服务或框架负责模型管理统一接入和管理各种AI模型LLM、VLM、ASR、TTS无论是云端API如Kimi、Minimax还是本地部署的模型通过vLLM、Ollama等。提供标准化接口对ROSClaw暴露统一的API让ROS 2节点可以方便地调用“视觉理解”、“文本生成”、“语音合成”等服务而无需关心后端具体是哪个模型、怎么调用的。工具调用Function Calling封装将机器人的技能如move_arm(x, y, z)封装成AI模型可以理解和调用的“工具”。当LLM决定要执行某个动作时它通过OpenClaw调用对应的工具OpenClaw再将其转换为对ROS 2技能节点的服务调用或动作目标。这样设计的解耦好处巨大机器人开发者专注于机器人本身的技能和逻辑AI模型研究者可以不断切换和优化模型而OpenClaw作为中间件让两者高效协作。这也解释了为什么大家关心“接入哪个模型更好”——因为框架让切换模型变得容易从而可以灵活评估性能。3. 从零开始ROSClaw环境部署与配置实战理论说得再多不如动手搭一遍。这里我结合网络上的常见问题梳理一个相对清晰的部署思路。请注意具体命令可能随项目更新而变但核心逻辑是相通的。3.1 基础环境准备ROS 2与依赖首先你需要一个健康的ROS 2环境。我强烈推荐使用Ubuntu 22.04和ROS 2 Humble这是目前最稳定的长期支持LTS组合。# 1. 设置ROS 2源 sudo apt update sudo apt install curl gnupg lsb-release sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null # 2. 安装ROS 2桌面版包含基础工具和GUI工具 sudo apt update sudo apt install ros-humble-desktop # 3. 配置环境变量每次打开新终端都需要或写入~/.bashrc source /opt/ros/humble/setup.bash注意很多新手卡在第一步的源或网络问题上。如果curl下载失败可以尝试更换国内镜像源或者直接去ROS官网查看最新的安装指南。确保locale设置正确英文UTF-8避免一些编译错误。3.2 OpenClaw的安装与核心配置这是智能体的“大脑”接入层。根据网络信息OpenClaw似乎是一个Node.js项目对版本有要求22.22.3等。# 1. 安装Node.js使用Node Version Manager nvm是最灵活的方式 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 关闭终端重开或执行 export NVM_DIR$HOME/.nvm [ -s $NVM_DIR/nvm.sh ] \. $NVM_DIR/nvm.sh [ -s $NVM_DIR/bash_completion ] \. $NVM_DIR/bash_completion # 2. 安装并切换至要求的Node.js版本以v22.22.3为例 nvm install 22.22.3 nvm use 22.22.3 node --version # 确认版本 # 3. 安装OpenClaw假设通过npm npm install -g openclaw/cli # 或者如果项目在GitHub上可能需要克隆源码安装 # git clone https://github.com/openclaw/openclaw.git # cd openclaw # npm install # npm run build安装后关键的一步是配置AI模型后端。这是大家问题最多的地方。# 启动OpenClaw配置向导或直接编辑配置文件 openclaw config init # 这可能会在 ~/.openclaw 目录下生成配置文件如 config.yaml你需要编辑这个配置文件指定LLM和VLM的接入点。网络热词提到了多种情况接入云端API如Kimi、Minimaxllm: provider: openai # 或自定义适配器 api_key: your-kimi-api-key base_url: https://api.moonshot.cn/v1 # Kimi的API端点踩坑实录base_url是关键很多模型提供兼容OpenAI API的接口但端点地址不同。配置错误会导致连接失败。另外注意API Key的权限和余额。接入本地模型通过vLLM/Ollamallm: provider: vllm # 或 ollama base_url: http://localhost:8000/v1 # vLLM默认的OpenAI兼容接口 model: Qwen2.5-7B-Instruct实操心得本地部署模型对显卡内存要求高。7B参数模型通常需要至少8GB显存。使用vLLM可以大幅提升推理速度。务必先确保你的本地模型服务已成功启动并能通过curl测试。配置多模型与切换高级用法中你可以配置多个模型profile让不同的机器人任务使用不同的模型例如复杂规划用GPT-4简单对话用本地小模型。关于“OpenClaw接入微信/飞书”这很可能是指OpenClaw提供了平台适配器Adapter。这些适配器作为独立节点运行监听微信/飞书等IM工具的消息将其转换为标准的文本指令发送给ROSClaw智能体同时将智能体的回复转回IM。部署时你需要额外配置这些适配器的回调地址、Token等。这体现了框架的扩展性——智能体的交互前端可以多种多样。3.3 ROSClaw框架本身的部署假设ROSClaw的代码托管在GitHub。# 1. 创建工作空间 mkdir -p ~/rosclaw_ws/src cd ~/rosclaw_ws/src # 2. 克隆ROSClaw仓库此处为示例需替换为真实仓库 git clone https://github.com/org/rosclaw.git # 可能还需要克隆一些依赖的工作空间参考项目README # 3. 安装ROS依赖 cd ~/rosclaw_ws rosdep install --from-paths src --ignore-src -r -y # rosdep是ROS的依赖管理工具能自动安装系统包 # 4. 编译工作空间 colcon build --symlink-install # --symlink-install 创建符号链接便于开发时修改代码无需重新编译 # 5. 激活工作空间 source ~/rosclaw_ws/install/setup.bash3.4 连接ROSClaw与OpenClaw这是让机器人“思考”起来的关键一步。通常ROSClaw中会有一个或多个节点负责与OpenClaw通信。启动OpenClaw服务在终端中运行openclaw start或npm run start确保OpenClaw网关在运行并监听特定端口如http://localhost:3000。配置ROSClaw的AI客户端在ROSClaw的配置文件中可能是config/agent_config.yaml指定OpenClaw服务的地址和端口。openclaw_gateway: host: localhost port: 3000 agent_id: my_robot_agent # 在OpenClaw中注册的智能体ID启动ROSClaw智能体节点ros2 launch rosclaw_bringup main_agent.launch.py这个启动文件会拉起感知、决策、执行等一系列节点。验证连接查看节点和话题列表。ros2 node list ros2 topic list你应该能看到像/agent/decision、/agent/commands这样的话题以及openclaw_bridge之类的节点。4. 核心功能模块深度解析与实操环境搭好了我们来深入看看ROSClaw里几个最核心的模块是怎么工作的以及在实际编码和调试中会遇到哪些坑。4.1 感知模块让机器人“看懂”世界感知模块的核心是将原始传感器数据转化为富含语义的场景图Scene Graph。这通常由一个或多个VLM驱动。实现要点图像预处理相机发布的图像可能是RAW或压缩格式。你需要一个图像预处理节点将其转换为VLM所需的格式如RGB 特定分辨率。使用cv_bridge和 OpenCV 是标准操作。异步调用与回调VLM推理是耗时的几百毫秒到几秒。绝对不能在一个同步的服务调用里阻塞整个ROS节点。标准做法是订阅相机话题收到图像后将其放入一个任务队列。使用异步客户端如async_client调用OpenClaw提供的视觉理解接口。在回调函数中处理返回的结果如物体标签、位置、关系并发布到一个新的ROS话题上例如/perception/scene_description。结果结构化VLM返回的可能是文本描述。你需要一个解析器将其转换为结构化的数据如JSON方便后续决策模块使用。例如将“左边有一个红色的苹果”解析为{“object”: “apple”, “color”: “red”, “position”: “left”}。避坑技巧VLM的幻觉问题。它可能“看到”不存在的东西或认错物体。在生产环境中绝对不能完全信任VLM的单次识别结果。必须结合传统计算机视觉如目标检测YOLO进行验证或者采用多帧投票、置信度过滤等机制。感知模块的输出应该附带置信度分数。4.2 决策模块LLM作为“大脑”的工程化实践这是最激动人心也最棘手的部分。如何让LLM稳定、可靠地指挥机器人核心模式ReAct (Reasoning and Acting) 或 Plan-and-ExecuteROSClaw的决策节点很可能实现了类似ReAct的循环观察接收来自感知模块的当前环境状态和用户指令。思考将状态和指令连同可用的技能列表作为“工具”描述一起构造Prompt发送给LLM。行动解析LLM的回复。回复应该是指定调用某个技能Tool Call并附带参数。执行与反馈调用对应的ROS 2技能节点并等待执行结果成功/失败。循环将执行结果作为新的“观察”再次送入LLM直到任务完成或失败。Prompt工程是关键# 一个简化的Prompt示例 system_prompt 你是一个家庭服务机器人。你的任务是根据用户指令和当前环境状态规划一系列动作技能来完成任务。 你可以使用的技能有 - navigate_to(location_name): 导航到指定地点如“厨房”、“客厅”。 - pick_up(object_description, location): 在指定地点抓取描述的对象。 - place(object_description, target_location): 将对象放置到目标地点。 - pour_liquid(source_container, target_container): 将液体从源容器倒入目标容器。 请严格按照以下JSON格式输出你的决策 { thought: 你的推理过程, action: 技能名称, parameters: {param1: value1, ...} } 如果任务已完成则 action 为 finish。 user_prompt f 环境状态{current_scene_description} 用户指令{user_command} 历史动作{action_history} 实操心得Prompt需要反复打磨。要明确限制LLM的输出格式如JSON便于程序解析。在Prompt中提供丰富的示例Few-shot Learning能极大提升规划准确性。同时必须为LLM的“思考”过程设置超时和重试机制防止其陷入死循环。4.3 技能模块可靠的动作执行单元技能是机器人能力的基石。每个技能都应该被实现为一个健壮的ROS 2 Action Server。为什么用Action而不是Service因为技能执行通常耗时较长导航要几十秒抓取要几秒且需要中间反馈和取消功能。Action提供了目标、反馈、结果三种通信方式完美匹配。一个PickObjectSkill的实现框架# 伪代码基于 rclpy 和 action_msgs class PickObjectActionServer(Node): def __init__(self): super().__init__(pick_object_server) self._action_server ActionServer( self, PickObject, # 自定义的Action类型 pick_object, self.execute_callback ) # 初始化机械臂客户端、视觉客户端等 async def execute_callback(self, goal_handle): # 1. 解析目标要抓取什么物体大致在哪里 object_desc goal_handle.request.object_description # 2. 发布反馈开始寻找物体 goal_handle.publish_feedback(Feedback(status定位物体中...)) # 3. 调用视觉服务精确定位物体坐标 obj_pose await self.call_vision_service(object_desc) # 4. 规划抓取轨迹 trajectory self.plan_grasp(obj_pose) # 5. 控制机械臂执行抓取 success await self.execute_arm_motion(trajectory) # 6. 设置最终结果 if success: goal_handle.succeed() return PickObject.Result(successTrue, message抓取成功) else: goal_handle.abort() return PickObject.Result(successFalse, message抓取失败)注意事项技能模块必须包含完备的错误处理和恢复机制。比如抓取失败是否尝试调整姿态重抓导航被障碍物阻挡是否尝试重新规划这些逻辑要封装在技能内部对外提供简洁的成功/失败接口。决策模块不应该处理底层的重试逻辑。5. 典型应用场景与实战案例剖析理解了模块我们来看ROSClaw能做什么。结合网络热词“应用案例”我构想几个典型场景并分析其实现难点。5.1 场景一家庭环境下的“端茶送水”用户指令“帮我拿一瓶冰箱里的可乐。”智能体流程感知VLM识别出场景中有“冰箱”、“桌子”、“人”并知道冰箱门是关着的。决策LLM生成计划[导航到冰箱] - [打开冰箱门] - [识别并抓取可乐] - [关上冰箱门] - [导航到用户] - [递上可乐]。执行NavigateSkill移动到冰箱前。OpenDoorSkill控制机械臂打开冰箱门这里可能需要一个专门的技能。PickObjectSkill在冰箱内部场景中识别并抓取“可乐”。CloseDoorSkill关门。NavigateSkill返回。HandOverSkill递送。实现难点开门操作这是一个非标技能需要精细的力控或视觉伺服防止损坏冰箱门。冰箱内识别开门后内部光线、物品堆叠可能影响VLM识别。可能需要结合深度相机和3D分割。安全与交互递送时如何安全地交到人手中可能需要语音提示“请接住”或使用力传感器感知接触。5.2 场景二实验室的自动化物料搬运用户指令通过飞书机器人发送“将B区3号柜的试管盒送到C区分析台。”智能体流程指令接收飞书适配器节点收到消息转发给决策模块。决策LLM理解“B区3号柜”、“试管盒”、“C区分析台”都是预先定义好的地点和物体标签。计划[导航至B区3号柜] - [取试管盒] - [导航至C区分析台] - [放置试管盒]。执行调用标准的导航和抓取放置技能。实现难点精准导航与对接实验室环境可能要求厘米级的停靠精度以便机械臂准确操作柜门和试管盒。这需要高精度的定位系统如AprilTag二维码。多模态交互任务完成后如何反馈可以通过飞书适配器发送“任务完成”消息并附上一张机器人拍摄的现场照片。异常处理如果柜门锁了怎么办决策模块需要能处理这种异常并可能通过飞书向人类操作员请求帮助。5.3 场景三开放场景的交互式问答与导引用户指令路人询问机器人“请问会议室A怎么走”智能体流程语音识别ASR节点将音频转为文本。决策LLM判断这是一个导引任务。它需要查询内部地图找到“会议室A”的位置。行动与反馈方案ALLM生成指路文本通过TTS节点语音播报“请向前直走第一个路口左转。”方案B更高级决策模块调用NavigateSkill但目标不是机器人自己移动而是生成一条路径。然后机器人可能通过屏幕显示地图路径或者说“请跟我来”并缓慢移动带领用户这需要更复杂的人机跟随技能。实现难点自然语言理解“怎么走”可能隐含“带我去”、“告诉我方向”等多种意图。需要LLM有较好的意图识别能力。动态环境指出的路径上如果有临时障碍机器人能否动态更新指引这需要感知-决策的快速闭环。6. 开发、调试与运维中的核心挑战即使框架搭好了真正的挑战才刚刚开始。下面这些坑是我在类似项目中真实踩过的。6.1 调试如何知道智能体“在想什么”智能体系统的调试比传统程序困难十倍因为故障可能发生在感知、决策、执行的任何一环而且决策逻辑是黑盒。可视化与日志记录话题录制大量使用ros2 bag record录制所有相关话题。这是回放分析问题的黄金标准。关键状态可视化在RViz中不仅显示激光雷达和地图还要自定义显示插件用于可视化智能体的“内心活动”。例如将LLM生成的“场景描述”以文本形式显示在3D视图旁。将当前执行的“技能”和“目标”用醒目图标标出。绘制决策历史的时间线。结构化日志不要只用print。使用ROS 2的日志系统并输出结构化的JSON日志到文件方便后续用脚本分析。记录每一次LLM调用输入Prompt和输出结果、每一次技能调用的参数和结果。“思维链”追溯这是调试LLM决策的关键。你需要记录下每次发送给LLM的完整Prompt和返回的完整Response。当机器人做出错误决策时你可以回溯查看是Prompt信息不足还是LLM“抽风”了。可以开发一个简单的Web界面来查询和展示这些历史交互。6.2 性能与实时性让“思考”跟上“动作”LLM延迟是瓶颈一次GPT-4 API调用可能需要2-5秒。这对于需要快速响应的交互如避障是不可接受的。策略将决策分层。高频、低级的反应式行为如紧急停止、避障仍然用传统的、毫秒级响应的ROS节点实现。LLM只负责高层、慢速的任务规划。这就是“分层控制架构”。本地小模型对于简单的指令解析如“停下”、“过来”可以尝试用本地部署的、更小更快的模型如Phi-3 mini来处理绕过云端API的延迟。技能执行的可靠性如果技能本身如导航就经常失败那么再聪明的决策层也无济于事。必须花大力气打磨每一个基础技能提高其成功率和鲁棒性。智能体不是用来弥补底层缺陷的魔法。6.3 安全与伦理给智能体戴上“紧箍咒”这是工业应用无法回避的问题。物理安全指令过滤在指令到达LLM之前必须有一层“安全过滤器”。例如任何包含“撞”、“用力推”、“忽略障碍”等关键词的指令都应被直接拦截或要求二次确认。操作空间限制在技能层必须通过运动学约束和碰撞检测严格限制机械臂和底盘的运行空间防止其伤害人、损坏自身或环境。急停回路必须有一个最高优先级的、完全独立的硬件急停回路任何软件故障都不能影响其功能。逻辑安全幻觉检测当VLM识别出一个“高价值”或“危险”物体如“一把刀”、“一个小孩”时需要二次确认例如从另一个角度再拍一张照片分析。目标合理性检查LLM生成的行动计划在执行前应通过一套规则进行检查。例如计划中包含“把水倒进电脑里”这种明显不合理的行为应该被规则引擎驳回并反馈给LLM重新规划。6.4 持续学习与个性化一个真正智能的机器人应该能从经验中学习。记忆向量数据库使用ChromaDB、Weaviate等存储每次任务的成功/失败经验环境状态、采取的行动、结果。当遇到类似场景时决策模块可以先查询记忆看看历史上怎么做是成功的。技能参数优化例如抓取同一个杯子每次的抓取点可能略有不同。可以记录每次抓取的位姿和成功与否通过简单的优化算法如贝叶斯优化微调抓取点让技能越用越熟练。用户偏好学习如果用户常说“把灯光调暗一点”机器人可以学习到该用户偏好的“暗”的亮度值是多少下次直接调到那个值而不是每次都需要问。7. 未来展望与进阶思考ROSClaw代表了一个明确的趋势机器人编程正从“过程式”向“目标式”演变。开发者不再需要编写控制每一个电机转动的代码而是定义机器人的技能、描述任务的目标让AI去填充中间的规划细节。对于想要深入这个领域的开发者我的建议是夯实ROS 2基础智能体框架建立在ROS 2之上。对节点、话题、服务、动作、生命周期、参数等核心概念的理解必须透彻。这是地基。理解AI模型的能力与局限不要神化LLM/VLM。花时间去了解Prompt工程、微调、幻觉、上下文长度等概念。知道它们擅长什么泛化、推理不擅长什么精确数值计算、实时控制。拥抱仿真在Gazebo、Isaac Sim等仿真环境中大量测试你的智能体。仿真可以低成本、高效率地暴露逻辑缺陷尤其是那些在现实世界中危险或昂贵的边缘情况。从简单场景开始不要一开始就挑战“整理整个房间”。从“把桌上的蓝色积木拿给我”这种定义清晰、环境可控的任务开始。成功运行一个简单的端到端流程其价值远超一个复杂但不可靠的半成品。ROSClaw这类框架降低了智能机器人开发的门槛但并没有降低其深度。它把挑战从“如何让机械臂动起来”提升到了“如何让机器人理解你并安全高效地帮你做事”。这无疑是一条更艰难、但也更有价值的道路。
返回列表