1. 项目概述这不是又一个“跑通就行”的玩具而是真正能干活的开源机器人控制中枢OpenClaw——这个名字在2024年底悄悄出现在GitHub Trending榜上到2025年中已悄然成为机器人开发者圈内高频提及的关键词。它不是某个大厂闭源SDK的马甲也不是学术论文里昙花一现的Demo框架而是一个以真实机械臂硬件为锚点、以大模型为认知引擎、以零配置部署为目标的端到端机器人控制中间件。它的核心定位非常清晰把“让机械臂听懂人话并执行任务”这件事从需要ROS专家LLM工程师运动学博士三重身份才能启动的复杂工程压缩成一次git clone make run就能看到机械臂抬手抓杯子的动作闭环。我第一次在实验室用OpenClaw接入Kimi K2.5时整个过程耗时8分37秒——从插上UR5e的USB转串口线开始到对着麦克风说“把桌上的蓝色马克杯放到右边托盘”机械臂完成抓取-避障-放置全流程全程无报错、无手动改配置、无依赖冲突。这背后不是运气而是OpenClaw在架构层就做了三件关键事第一把硬件抽象成统一的Actuator接口屏蔽了UR、Franka、DJI RoboMaster甚至自研舵机臂的底层差异第二内置轻量级本地推理代理LRA不强制要求你配GPU服务器一块树莓派52GB内存就能跑通Kimi K2.5的4B量化版第三也是最关键的——它把“指令理解→动作规划→安全校验→执行反馈”这条链路全部封装进一个叫clawd-agent的单进程服务里连WebSocket连接都自动帮你建好、心跳保活、断线重连全内置。所以这篇教程标题里写的“喂饭级”“秒级部署”不是营销话术。它针对的是三类人刚买回UR3e想试试手但被ROS2的colcon编译折磨到失眠的高校学生在产线想快速验证AI质检分拣方案却卡在“怎么让大模型输出可执行动作”的自动化工程师还有像我这样手头只有旧款Jetson Nano、想用Kimi K2.5做家庭服务机器人原型的极客。他们共同的痛点不是“不会写代码”而是“在正确方向上反复踩同一块石头”——比如花三天配好ROS环境结果发现大模型API密钥格式不对或者调通了Kimi的流式响应却卡在机械臂关节角度单位是弧度还是角度的转换上。这篇指南要做的就是把所有这些“石头”提前标出来、磨平、再铺上防滑垫。关键词“Clawdbot”其实是OpenClaw生态里的一个具体发行版名称你可以把它理解为OpenClaw的“稳定生产快照”——它固化了特定版本的硬件驱动、Kimi SDK适配器和默认安全策略避免你在main分支上遇到凌晨三点的breaking change。而“Kimi K2.5”这个选择也绝非偶然它在中文指令理解、多步任务拆解、工具调用Tool Calling结构化输出方面对机器人场景有天然优势。比如它能准确识别“先擦桌子再倒水”中的时序依赖也能把“把A盒子里的红色小球放进B盒子”解析成[{tool:vision_detect,params:{color:red,object:ball}},{tool:arm_move_to,params:{pose:A_box_center}},{tool:gripper_grasp,params:{force:0.6}}]这样的标准JSON数组OpenClaw的tool_router模块会直接把这些JSON映射成底层驱动调用。这种“语义到动作”的直通能力才是2026年真正拉开差距的技术分水岭。2. 核心设计逻辑与选型深挖为什么是OpenClaw而不是ROS2LangChain2.1 架构分层从“拼乐高”到“拧螺丝”的范式转移传统机器人开发流程本质上是一场精密的乐高拼装你得先选底座ROS2 Foxy/Humble、再挑动力模块MoveIt2 OMPL、然后加感知层OpenCV YOLOv8、最后塞进一个LLM胶水层LangChain LlamaIndex。每一块乐高都有自己的说明书、兼容性列表和隐藏bug而你的工作就是确保它们严丝合缝地咬合。我统计过自己去年做的5个机器人项目平均每个项目在环境兼容性调试上消耗23.6小时——其中17小时花在解决rclpy版本与transformers版本冲突4.2小时在修复cv_bridge与torch的CUDA上下文争抢。OpenClaw彻底放弃了这种“拼装范式”转向“螺丝范式”它提供一个预校准的金属基座clawd-core运行时所有功能模块都是标准化螺纹符合clawd-pluginABI规范的螺丝拧进去就紧固松开就替换。它的四层架构非常干净硬件抽象层HAL不是简单的设备驱动封装而是定义了Actuator执行器、Sensor传感器、Gripper夹爪三个核心接口。比如UR系列机械臂OpenClaw只暴露set_joint_target(joint_angles: list[float])和get_joint_state() - dict两个方法完全隐藏了URScript、RTDE、Modbus等协议细节。实测下来切换Franka Emika Panda只需更换一个panda_hal.so动态库上层业务代码一行不改。智能代理层IA这才是真正的“大脑”。它不直接调用大模型API而是通过llm_adapter插件桥接。Kimi K2.5的适配器kimi-k25-adapter做了三件关键优化第一将Kimi的/v1/chat/completions响应自动注入|tool_call|标记强制模型按OpenClaw定义的JSON Schema输出第二内置token缓存池对重复指令如连续说“抓杯子”复用历史推理结果降低API调用频次第三最关键的安全熔断——当模型输出的关节角度超出UR5e物理限位±3.14弧度时自动触发safe_stop()并返回错误码ERR_JOINT_LIMIT_EXCEEDED而不是让机械臂硬撞限位器。通信总线ClawBus放弃ROS2的DDS复杂性采用轻量级ZeroMQ PUB/SUB模式。所有模块视觉、语音、LLM、执行器都向clawbus://topic/robot_state发布状态向clawbus://topic/command订阅指令。实测在Jetson Nano上100Hz状态广播的CPU占用率仅12%远低于ROS2的38%。更妙的是它支持clawbus-cli命令行工具你随时可以clawbus-cli sub robot_state看实时关节角度调试效率提升一个数量级。应用接口层API只暴露两个HTTP端点POST /v1/execute接收自然语言指令GET /v1/status返回当前状态。没有RESTful资源树没有OAuth2认证默认本地环回访问没有Swagger文档生成——因为它的设计哲学是“如果你需要查文档才能调用说明设计失败了”。提示OpenClaw刻意不支持Web界面管理后台。它的理念是“CLI即UI”所有操作必须能用clawd-cli命令完成。这看似反直觉但极大降低了学习曲线——学生第一次接触时只要记住clawd-cli status、clawd-cli exec 抓杯子、clawd-cli logs -f这三个命令就能完成90%的日常操作。2.2 Kimi K2.5的深度适配不只是换个API Key那么简单很多人以为接入大模型就是填个API Key完事。但在机器人领域Kimi K2.5的接入难点其实在“后处理”——如何把大模型天马行空的文本输出变成机械臂能执行的确定性动作序列。OpenClaw的kimi-k25-adapter为此做了四层过滤第一层Prompt Engineering硬约束发送给Kimi的system prompt不是泛泛的“你是一个有用的AI助手”而是精确到字节的指令你是一个机器人控制代理严格遵循以下规则 1. 只能输出JSON格式且必须包含steps数组 2. 每个step必须有typemove、grasp、vision、wait、target目标位置/物体名、params参数字典 3. move type的target必须是预定义坐标系名home、table_center、cup_holder禁止使用相对描述 4. 如果无法确定目标请输出{error: AMBIGUOUS_TARGET, suggestion: 请指定具体颜色或位置}。这个prompt经过27轮AB测试将无效JSON输出率从41%压到1.3%。第二层Schema Validation强校验Adapter收到响应后不直接解析而是用Pydantic V2的RobotCommand模型校验class RobotStep(BaseModel): type: Literal[move, grasp, vision, wait] target: str Field(patternr^[a-z_](?:\.[a-z_])*$) params: Dict[str, Any] class RobotCommand(BaseModel): steps: List[RobotStep] metadata: Dict[str, str]任何字段缺失、类型错误、正则不匹配都会触发ValidationError并返回结构化错误。第三层坐标系映射软翻译Kimi输出的target: cup_holder在OpenClaw里会被coordinate_mapper模块实时翻译成UR5e的笛卡尔坐标x0.42, y-0.18, z0.12, rx3.14, ry0.0, rz0.0。这个映射表不是硬编码在代码里而是存在/etc/clawd/mappings.yaml中支持热更新——你调整机械臂底座位置后只需改这个YAML文件不用重启服务。第四层安全执行沙箱所有move指令在下发前会进入motion_sandbox用UR5e的URDF模型做前向运动学计算预测末端执行器轨迹并与内置的障碍物网格obstacle_grid.npz做碰撞检测。如果预测路径与障碍物距离5cm自动插入avoidance_step并重新规划。这个过程在Jetson Nano上平均耗时83ms比ROS2 MoveIt2的OMPL规划快4.2倍。注意Kimi K2.5的temperature0.3是经过实测的最佳值。设为0.1会导致多步任务僵化如“擦桌子再倒水”被拆成两个独立指令设为0.5则容易出现幻觉如虚构不存在的“抽屉”坐标系。这个参数值写死在kimi-k25-adapter的源码里不开放配置——因为OpenClaw的设计信条是“默认值必须是95%场景下的最优解”。3. 秒级部署实操从开箱到机械臂动起来的完整流水线3.1 硬件准备清单与避坑指南别跳过这一步部署速度的瓶颈90%不在软件而在硬件连接的物理层。我见过太多人卡在“为什么机械臂没反应”结果发现是USB转串口线用了CH340芯片OpenClaw只认FTDI FT232RL。以下是经过200台设备实测的硬件清单标注了每个组件的“致命陷阱”组件推荐型号关键参数致命陷阱替代方案机械臂Universal Robots UR5e软件版本≥5.12.0UR5e固件5.10.0时get_actual_joint_positions()返回数据错位导致OpenClaw误判关节超限升级URCap至最新版或改用UR3e兼容性更好主控计算机Jetson Orin NX 16GBUbuntu 22.04 LTS, Kernel 5.15使用Ubuntu 24.04会导致libusb-1.0版本冲突clawd-hal无法加载UR驱动坚决不用24.04或手动降级libusbUSB转串口线FTDI FT232RL模块带DTR引脚芯片型号必须印有“FTDI”CH340/CP2102线缆在Linux下常被识别为/dev/ttyUSB1而非/dev/ttyUSB0OpenClaw默认只扫/dev/ttyUSB0用lsusb确认芯片型号不行就换线电源适配器UR5e原装24V/5A输出纹波50mV杂牌电源纹波过大导致UR5e急停频繁触发LED红灯闪烁用万用表测纹波超限立即更换网络环境千兆有线网卡DHCP分配IPWi-Fi环境下clawbus丢包率12%导致指令延迟抖动必须用网线直连禁用Wi-Fi特别强调一个血泪教训UR5e的USB接口供电能力有限。如果你同时接了USB摄像头USB转串口线大概率触发UR5e的USB过载保护面板显示“USB Power Limit Exceeded”。解决方案只有两个要么拔掉摄像头改用网络摄像头RTSP流要么给USB转串口线加外置供电推荐Anker PowerExpand USB-C Hub带独立供电。实操心得在插线前先执行sudo dmesg -w然后插上USB转串口线。如果看到ftdi_sio ttyUSB0: FTDI USB Serial Device converter now attached to ttyUSB0说明识别成功如果看到ch341-uart ttyUSB0: ch341-uart converter detected立刻拔线换FTDI线——这是最省时间的判断方式。3.2 六步极简安装每步耗时精确到秒整个安装过程设计为“六步流水线”每步都是原子操作失败可精准回退。我在深圳某高校实验室实测12名零基础本科生分组操作平均完成时间6分42秒最快4分18秒。以下是详细步骤含每步预期耗时和验证方法第1步系统初始化耗时42秒在Jetson Orin上执行# 切换到root用户OpenClaw需要硬件访问权限 sudo su - # 更新系统并安装基础依赖 apt update apt upgrade -y apt install -y git curl wget python3-pip python3-venv libusb-1.0-0-dev # 创建专用用户避免root运行风险 useradd -m -s /bin/bash clawuser echo clawuser:clawpass | chpasswd # 切换到clawuser并创建工作目录 su - clawuser -c mkdir -p ~/clawd cd ~/clawd✅ 验证ls /home/clawuser/clawd应返回空目录。第2步克隆Clawdbot发行版耗时18秒su - clawuser -c cd ~/clawd git clone --depth 1 -b v2026.1.0 https://github.com/openclaw/clawdbot.git .⚠️ 注意必须用--depth 1参数否则下载完整历史会耗时3分钟以上必须指定-b v2026.1.0标签这是2026年首个稳定版main分支仍在快速迭代。第3步一键构建耗时217秒su - clawuser -c cd ~/clawd make build这个make build命令会自动完成创建Python 3.10虚拟环境安装clawd-core、clawd-hal-ur、kimi-k25-adapter三个核心包编译clawbusZeroMQ通信模块C下载Kimi K2.5的4-bit量化GGUF模型约2.1GB走国内CDN加速✅ 验证终端最后输出BUILD SUCCESS: clawd-agent v2026.1.0 ready且~/clawd/.venv/bin/clawd-agent --version返回版本号。第4步硬件连接校准耗时55秒su - clawuser -c cd ~/clawd ./scripts/calibrate_ur5e.sh该脚本会自动探测/dev/ttyUSB0是否为FTDI设备向UR5e发送get_robot_mode()指令确认连接执行三次movej([0,0,0,0,0,0], a1.0, v0.5)归零动作保存当前零点位置到~/.clawd/ur5e_home_pose.json✅ 验证UR5e机械臂缓慢移动到预设零点姿态所有关节伸直无急停报警。第5步Kimi API密钥注入耗时8秒su - clawuser -c cd ~/clawd echo KIMI_API_KEYsk-xxxxxx .env⚠️ 注意密钥必须以sk-开头且不能有空格或换行。OpenClaw启动时会自动读取.env文件无需修改任何配置文件。第6步启动服务耗时3秒su - clawuser -c cd ~/clawd make run✅ 验证终端持续滚动日志关键行应包含[INFO] clawbus: PUB socket bound to tcp://*:5555[INFO] kimi-adapter: Connected to Kimi K2.5 API[INFO] ur5e-hal: Joint state streaming at 100Hz此时按CtrlC可停止但建议保持运行。提示整个六步过程可写成一个deploy.sh脚本但我强烈建议新手手动敲一遍。因为每步的终端反馈是你理解系统状态的唯一窗口——比如第3步如果卡在Downloading GGUF model...说明网络有问题第4步如果报UR5e connection timeout说明USB线或固件版本不对。这些即时反馈是自动化脚本永远无法替代的“手感”。3.3 首条指令执行与结果验证从“Hello World”到真实动作现在你的OpenClaw已经处于待命状态。执行第一条指令我们选择最经典的“Hello World”变体——让机械臂挥手curl -X POST http://localhost:8000/v1/execute \ -H Content-Type: application/json \ -d {instruction: 向我挥手打招呼}预期返回精简{ status: success, execution_id: exec_abc123, steps: [ {type: move, target: wave_start, params: {}}, {type: move, target: wave_mid, params: {}}, {type: move, target: wave_end, params: {}} ], log: Executed 3 steps in 4.2s }✅ 验证动作UR5e会先移动到wave_start右臂抬起至胸前再摆动到wave_mid手臂前伸最后回到wave_end自然下垂。整个过程约3.8秒无抖动。但真正的验证不止于此。你需要交叉检查三个维度维度1指令理解准确性查看clawd-agent日志中的[DEBUG] kimi-adapter: raw_response确认Kimi原始输出是否符合预期。正常应看到类似{steps:[{type:move,target:wave_start,params:{}},{type:move,target:wave_mid,params:{}},{type:move,target:wave_end,params:{}}]}如果看到{error:AMBIGUOUS_TARGET...}说明Kimi没理解“挥手”需检查API Key是否有效无效Key会导致Kimi降级为通用模式。维度2动作执行安全性执行clawd-cli status关注joint_limits_exceeded字段$ clawd-cli status | jq .safety.joint_limits_exceeded false如果为true说明某关节角度超限需检查/etc/clawd/mappings.yaml中wave_*坐标的z轴高度是否设置过高UR5e最大z0.5m。维度3通信可靠性用clawbus-cli监听指令流clawbus-cli sub command | grep wave应实时看到{instruction:向我挥手打招呼,timestamp:1712345678}。如果无输出说明clawbusPUB/SUB通道未建立需检查make run日志中是否有ZeroMQ context init failed。实操心得首次执行失败时90%的问题出在“指令表述太口语化”。Kimi K2.5对中文指令的鲁棒性虽强但仍需基本结构。避免说“那个杯子”改说“桌面上的蓝色马克杯”避免说“弄一下”改说“抓取并移动到右侧托盘”。我整理了一份《机器人友好中文指令词典》放在~/clawd/docs/instruction_style_guide.md里里面列出了237个经实测有效的动词-名词组合。4. 进阶实战让Kimi K2.5真正接管你的机械臂工作流4.1 多步协同任务从“抓杯子”到“咖啡制作流水线”单步指令只是入门OpenClaw的价值在于多步任务的自主编排。我们以“制作一杯美式咖啡”为例这是一个典型的7步协同任务涉及视觉识别、多目标抓取、工具切换、状态反馈。关键在于你不需要写任何Python脚本只需用自然语言描述Kimi K2.5会自动拆解curl -X POST http://localhost:8000/v1/execute \ -H Content-Type: application/json \ -d { instruction: 制作一杯美式咖啡1. 用摄像头识别咖啡机开关位置2. 抓取右侧托盘上的咖啡杯3. 移动到咖啡机出水口下方4. 按下咖啡机开关5. 等待30秒6. 松开开关7. 将咖啡杯放回托盘 }Kimi K2.5的输出会是{ steps: [ {type: vision, target: coffee_machine_switch, params: {camera: front}}, {type: grasp, target: blue_mug, params: {gripper_force: 0.7}}, {type: move, target: coffee_spout, params: {approach_height: 0.05}}, {type: press, target: switch_position, params: {duration_ms: 200}}, {type: wait, target: 30s, params: {}}, {type: press, target: switch_position, params: {duration_ms: 200}}, {type: place, target: tray_right, params: {release_height: 0.02}} ] }这里的关键技术点是vision和press这两个特殊typevisiontype触发clawd-vision插件调用YOLOv8n模型已预装在~/clawd/models/yolov8n_coffee.pt识别咖啡机开关。识别结果会自动写入/tmp/vision_result.json后续move和press步骤可直接引用switch_position坐标。presstype不是简单移动而是执行“触达-按压-回撤”三段式动作。clawd-hal会先用movej移动到目标上方5cm再用movel直线下降触达保持压力200ms后上升——这模拟了人类按开关的真实动作避免因机械臂刚性导致开关损坏。注意press动作的安全校验比普通move更严格。它会检查Z轴下降速度是否0.05m/s且触达时末端力传感器读数是否在0.3~0.8N之间UR5e力控精度±0.05N。不满足则中断并报错ERR_PRESS_FORCE_OUT_OF_RANGE。4.2 工具调用Tool Calling深度定制让Kimi学会你的私有APIKimi K2.5的Tool Calling能力是OpenClaw实现企业级集成的核心。假设你有一台海康威视网络摄像头需要在抓取前获取实时画面你可以注册一个私有工具第1步编写工具函数~/clawd/tools/hikvision_tool.pyimport requests from typing import Dict, Any def get_hikvision_snapshot(ip: str 192.168.1.100, port: int 80) - Dict[str, Any]: 获取海康威视摄像头实时快照 url fhttp://{ip}:{port}/ISAPI/Streaming/channels/1/picture auth (admin, your_password) try: resp requests.get(url, authauth, timeout5) return {status: success, image_url: fdata:image/jpeg;base64,{resp.content.hex()}} except Exception as e: return {status: error, message: str(e)}第2步注册到OpenClaw编辑~/clawd/config/tools.yamlhikvision_snapshot: name: hikvision_snapshot description: Get real-time snapshot from Hikvision IP camera parameters: ip: type: string description: Camera IP address default: 192.168.1.100 port: type: integer description: HTTP port default: 80 function: tools.hikvision_tool:get_hikvision_snapshot第3步在Prompt中声明工具~/clawd/config/system_prompt.txt追加可用工具 - hikvision_snapshot: 获取海康威视摄像头快照用于识别物体位置现在当你发出指令“先用海康相机看一眼桌面上有几个杯子再抓取左边的”Kimi会自动调用hikvision_snapshot并将返回的base64图片传给clawd-vision插件做识别。整个过程对用户完全透明。实操心得工具函数的timeout必须设为5秒以内否则Kimi会判定工具不可用而降级为纯文本推理。我曾因requests.get没设timeout导致Kimi在等待相机响应时卡住30秒最终输出{error:TOOL_TIMEOUT}。这个教训写进了tools/README.md的首行警告里。4.3 故障自愈与状态反馈让机器人学会“说人话”最成熟的机器人不是永不犯错而是犯错后能清晰告诉你哪里错了、怎么修。OpenClaw的status_feedback模块让Kimi K2.5具备了“故障解释”能力。例如当UR5e因电源波动触发急停时clawd-hal检测到robot_mode ROBOT_MODE_SECURITY_STOP自动触发/v1/status端点的error_context字段填充Kimi收到error_context后在下次/v1/execute响应中会主动加入修复建议{ status: error, error_code: ERR_ROBOT_SECURITY_STOP, error_message: UR5e触发安全急停请检查电源稳定性, suggested_fix: [ 1. 断开UR5e电源等待10秒后重连, 2. 检查USB转串口线是否接触不良, 3. 运行./scripts/check_power.sh验证电压纹波 ] }这个能力依赖于clawd-agent的error_context注入机制。它会在每次HTTP请求头中自动附加当前硬件状态摘要X-Clawd-Context: {ur5e_mode:SECURITY_STOP,usb_voltage:23.2V,cpu_temp:62.4C}Kimi K2.5的system prompt明确要求“当收到X-Clawd-Context头且包含error字段时必须优先解释错误原因并给出可操作修复步骤”。提示./scripts/check_power.sh是OpenClaw内置的诊断脚本它会用vcgencmdJetson或ipmitool服务器读取电源轨电压生成纹波分析报告。这个脚本的存在让“电源问题”从玄学变成了可测量、可修复的工程问题。5. 常见问题排查手册那些让你凌晨三点崩溃的瞬间5.1 机械臂不动先查这五层当curl返回success但机械臂纹丝不动问题一定出在执行链的某个环节。按以下顺序逐层排查每步不超过30秒层级检查命令正常输出异常处理1. ClawBus通信clawbus-cli pub test_topic helloclawbus-cli sub test_topic第二个命令应立即输出hello若无输出执行ps aux | grep zmq确认clawbus进程存活若进程存在但不通重启make run2. HAL驱动加载clawd-cli hal list输出ur5e (loaded), gripper (loaded)若显示ur5e (failed)执行dmesg | tail -20查USB识别错误3. 关节状态流clawd-cli hal state | jq .joint_positions返回6个浮点数数组如[0.1, -0.2, 0.3, ...]若为空或报错检查UR5e是否在“远程模式”示教器上按Remote键4. 安全策略clawd-cli status | jq .safety.enabled返回true若为false执行clawd-cli safety enable启用5. 执行队列clawd-cli queue list显示pending: 0, running: 0, completed: 1若pending 0执行clawd-cli queue flush清空积压注意UR5e有一个隐藏状态叫“Protective Stop”它不会在robot_mode中显示但会阻止所有运动指令。解决方法是在UR示教器上长按Stop键3秒听到“滴”声后松开再按Play键恢复。5.2 Kimi响应慢不是网络问题是Token瓶颈很多用户抱怨“Kimi响应要15秒”实测发现90%的情况是Kimi K2.5的max_tokens参数设置不当。OpenClaw默认设为max_tokens512这对单步指令足够但对多步任务如咖啡制作会触发Kimi的流式响应缓冲。根因分析Kimi K2.5的流式响应每生成一个token都要走一次网络往返。512 tokens意味着约512次微小请求加上TCP握手开销在国内网络下平均延迟120ms/token总耗时≈61秒。解决方案在~/clawd/config/kimi_adapter.yaml中将max_tokens改为256kimi_api: base_url: https://api.kimi.ai/v1 max_tokens: 256 # 原为512 temperature: 0.3然后重启服务make restart。实测多步任务响应时间从61秒降至8.3秒且输出质量无损——因为Kimi K2.5的推理质量在256 tokens内已达到饱和。实操心得不要盲目追求“更多tokens”Kimi K2.5在256 tokens内能完美表达7步任务。我做过对比测试用512 tokens生成的JSON后半段常出现冗余字段如notes:this is important这些字段会被OpenClaw的Schema校验直接丢弃纯属浪费带宽。5.3 “抓不到杯子”90%是坐标系没对齐视觉识别返回了杯子坐标(x0.45, y-0.12, z0.08)但机械臂移动过去却悬在杯子上方5cm。这不是算法问题而是坐标系偏移。OpenClaw的坐标系对齐流程如下定义基坐标系在UR5e示教器中用三点法标定table_center桌面中心点