惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Forbes - Security
Forbes - Security
Cisco Talos Blog
Cisco Talos Blog
Latest news
Latest news
P
Proofpoint News Feed
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
S
Securelist
T
Tor Project blog
P
Palo Alto Networks Blog
G
GRAHAM CLULEY
NISL@THU
NISL@THU
C
CERT Recently Published Vulnerability Notes
L
LINUX DO - 热门话题
V
Vulnerabilities – Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
AWS News Blog
AWS News Blog
T
The Blog of Author Tim Ferriss
Security Latest
Security Latest
P
Proofpoint News Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tenable Blog
博客园_首页
TaoSecurity Blog
TaoSecurity Blog
Attack and Defense Labs
Attack and Defense Labs
Project Zero
Project Zero
The Hacker News
The Hacker News
M
MIT News - Artificial intelligence
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Application and Cybersecurity Blog
Application and Cybersecurity Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
K
Kaspersky official blog
F
Full Disclosure
WordPress大学
WordPress大学
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
宝玉的分享
宝玉的分享
GbyAI
GbyAI
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
博客园 - 叶小钗
Webroot Blog
Webroot Blog
Hacker News: Ask HN
Hacker News: Ask HN

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
一个外行,半年搞定机械臂:我的从0到1踩坑实录
zhenjing · 2026-05-24 · via 博客园_首页

公众号:珍敬AI日志,专注于AI领域,如AI原生、AI工具、AI赋能等。

qrcode_for_gh_59f945268ef7_258


零:写在前面

写这篇文章,两个目的。

第一,给自己半年的从0到1做一次复盘。

第二,给想做机械臂的普通人一点参考。不是给科班生看的技术文章——不讲URDF怎么定义、雅可比矩阵怎么推。只讲一件事:一个base在厦门、出差6次48天、连URDF是什么都不知道的软件人,怎么一个人把行李搬运机械臂的整套软件系统跑通了。

这半年,AI帮了我大忙——但也给了不少错误答案。一个外行怎么判断AI说的对不对?这个话题,可能比你想象的重要。


一:学了1个月,我跑去跟公司说"我能搞定"

2024年11月之前,我在做行李抓取位姿算法,对控制机器人是天边的事。

2024年5月,公司启动行李搬运项目,同事搞了半年,不理想。高管想法很直接:招有经验的机器人工程师,项目从头开始。

我当时在干嘛?我在搞闸机。11月,直属领导让我转来熟悉机械臂控制,学moveit2。

公司需要就是工作,我抱着"先看看这东西到底是什么"的心态,花了一个月:搭环境、读文档、跑仿真、看MoveIt2教程。一台远程服务器,一个Ubuntu系统,一个AI——看不懂的贴给AI问"这是什么",遇到报错把error贴过去让它解释。

一个月后,我对技术栈有了一个初步判断:ROS2生态成熟,MoveIt2有完整的仿真链路,Gazebo能跑机械臂模型。软件侧这条路走得通。

于是我做了一个决定。跑去跟公司说:我有把握搞定机械臂操作的软件部分。

说这话的时候,我连真机都没摸过。

我不知道仿真和真机的差异有多大,对接一个机械臂厂商需要近1个月,Gazebo新版和旧版控制器不兼容。更不知道四个月后会连续加班到凌晨,只为赶4月26号的节点。

初生牛犊不怕虎。不是因为它勇敢,是因为它没看见虎有多大。


二:仿真跑通了,真机跑不通

公司同事写过一个demo(rwarm_ws),能在Gazebo仿真里跑通抓取放置流程——虚拟世界里看起来像模像样。但在真机上跑不了。

我拿它当起点。一个文件一个文件读代码,搞清MTC任务构造怎么把"拾取"和"放置"串起来,控制器的配置逻辑是什么。配合MoveIt2官方教程和examples,来回对照着啃。大概三周,把核心逻辑吃透了。

然后在仿真里反复跑:改参数,换规划器,对比RRTConnect和LazyPRMstar的轨迹质量,测试TRAC-IK比KDL快多少。仿真里一切正常,规划路径合理,碰撞检测也没问题。我当时甚至觉得:诶,好像也没传说中那么难?

后来才知道,"仿真跑通"和"真机能跑"之间,隔的东西比想象的多得多。

仿真不会告诉你ros2_control和新版Gazebo硬件接口不兼容。仿真不会告诉你不同品牌的SDK接口完全不一样,换机器人就得重新适配控制器。仿真更不会告诉你真机有"碰撞保护性停止"——你的代码在仿真里飞快,到了真机上安全机制直接锁定系统。

仿真像个驾校模拟器。你能学会踩油门、打方向、过S弯。但上路之后才发现,模拟器没教你怎么应对突然冲出来的电动车。

真正让我意识到"上路了"的,是选定了节卡Zu 18之后。


三:把模糊目标拆成确定性问题

起步阶段花了很多时间在仿真上,不是无用功。仿真阶段最大的价值,不是"跑通了一个demo",而是帮我对整个建立了概念

"行李搬运"这四个字,一开始对我来说就是个巨大的模糊目标。我甚至不知道从哪里问问题。但仿真跑下来后,逐渐能拆开了:

  • 行李在哪?→ 相机标定 + 点云 + 行李检测 + 抓取位姿估计
  • 怎么规划路径?→ 环境建模 + 碰撞检测 + MeshLab简化模型
  • 怎么抓怎么放?→ MTC任务构造 + 求解器选择(KDL vs TRAC-IK vs IKFast)
  • 行李怎么堆垛?→ 对行李建模,建立堆垛模型 (算法同事提供)
  • 仿真怎么切真机?→ ros2_control + 厂商SDK适配 + 控制器参数调试

这中间,每冒出一个问题,我的第一反应就是把问题抛给AI。AI不一定每次都答对,但它帮我在几分钟内建立起对新概念的基本认知——然后我带着这个认知去看官方文档、翻GitHub issue、搜ROS Discourse。

这半年我的学习节奏固定下来了:遇到新概念→问AI建立认知→看官方文档做交叉验证→写代码跑测试→跑不通再回去问AI。 这个循环,比任何"系统学习路径"都高效。

跨入完全陌生的领域,第一个里程碑不是"做出能用的东西",而是"知道有哪些问题需要解决"。


四:AI是个好导游,但不是好地图

AI帮了我大忙。但这个"帮忙"不是很多人想象的那样——AI写好了代码,我复制粘贴就完事。不是。真正有用的是:AI帮我缩小了搜索空间。

刚接触MoveIt2的运动规划器时,面前摆着OMPL二十几种算法、CHOMP、STOMP——怎么选?问AI,几分钟就理清了框架:RRTConnect快但不渐进最优,LazyPRMstar渐进最优但慢几倍,CHOMP能加约束但规划时间长。带着这个框架再去看官方文档和benchmark,效率完全不一样。

但AI也经常给我错误答案。

一个外行,怎么判断AI说的对不对? 这半年我摸出了几条办法:

第一,AI的答案必须有官方文档或GitHub issue交叉验证。 找不到出处的答案就是不可靠的。

第二,优先相信跑通的代码,不是AI说的"应该可以"。 工程问题上,现实世界永远是对的。

第三,同一个问题问不同AI模型。 两个答案不一样,说明AI也不确定,你得自己搞清楚。

第四,社区论坛比AI更可靠——但AI能帮你找到它们。 ROS Discourse、Robotics Stack Exchange上的回答经过真实项目检验。AI的价值是帮你知道该用什么关键词去搜。

AI是好导游,能帮你快速到达一个地方。但它不是好地图——真正的路,是你自己一步步踩出来的。


五:真机对接——隔着一整个深圳

硬件在深圳,我在厦门。每次真机调试都要出差。半年下来,出差6次,累计48天。

选定节卡Zu 18后,真正的工作开始。

从ROS1迁移到ROS2。节卡官方SDK是ROS1版本,要移植到ROS2——驱动层重写,控制器接口适配moveit2框架,仿真模型重新配置。一步就花了一周多。

仿真跑通了,该上真机了。飞到深圳,第一次把代码部署到真实机器人上。然后问题挨个来:

速度问题。 moveit2设速度scale为0.2,机械臂频繁报错——仿真里设多少都正常,真机上反而出问题。根本原因是SDK移动接口和moveit2控制频率不匹配,仿真世界里没有"接口失效"这回事。

安全的代价。 碰撞保护性停止是个安全机制,检测异常就强制锁定系统。但在调试阶段这玩意频繁触发——代码没问题,速度参数稍大它就停。停了必须重连,一上午调不了几次。

节奏问题。 用APP移动机械臂从一个位姿到另一个位姿,居然要5秒。按这个速度,搬一次行李要15秒以上,对真实场景太慢了。加速又触发前面的问题。平衡速度和稳定性,来来回回调了很多次。

这些都不是技术上最难的问题。但它们是真正消耗时间的问题。

对接节卡一个品牌,从移植SDK到稳定运行,实际用了约1个月。 而我最初的计划里只留了1-2周。

节卡的技术支持一直很配合,有问题能很快拉通。真正的问题在于:仿真和真机的差距,比我预估的大了一个数量级。 仿真里跑通了,真机上总有你没想到的事——通讯协议、PID参数、机械臂物理限制——每一个都要花时间定位和修复。而每次需要真机验证时,就得从厦门飞到深圳。


六:4月26日——计划永远赶不上变化

3月初我制定了一份开发计划,表格列得清清楚楚:ROS1迁移到ROS2,4天;控制器真机测试,2天;抓取任务测试,2天;手眼标定,2天……

回头看,计划的问题不是"不够详细",而是它假设每一步都能顺利走通。

真实情况呢?

新增了三个功能需求——展示大屏、平板APP、PLC外设控制(地轨移动、真空吸盘、行李滚筒、安全激光雷达)。完全不在原计划里。

手眼标定比预想复杂——到了现场发现相机支架都没准备好。行李检测和抓取位姿集成,每一步都有意料之外的坑:相机要连两路,点云精度要反复调,抓取点计算逻辑要适配不同行李。

4月下旬出差深圳,目标很明确:4月26号,完整行李搬运流程要跑通。

那段时间:整天在实验室调试整个系统,基本都10点后下班。出现问题→定位→修复→验证,这个循环一天转好几轮。记得,行李能搬运后,偶尔会出现moveit2规划轨迹报碰撞,但是从Rviz上看,无明显碰撞,前后调了3天,中间甚至怀疑moveit2有问题。因为系统测试中还有其他bug要修复,在修复其他bug后,就排查这个问题,最终发现moveit2报碰撞是对,是因为抓取位姿的处理有问题:z轴旋转180° 采用yaw+180,正确做法:绕 z 轴旋转 180° 后,ZYX欧拉角的变换规则为:(a**′,b′,c′)*= (a+180°,−b,−c)

4月26号,跑通了。

不完美。抓取成功率不够高,偶尔规划会失败。但流程闭环了:相机识别行李→计算抓取位姿→机械臂规划路径→抓取→放置→回到初始位姿→等下一个行李。

跑通了,但不是终点。 之后又做了半个月稳定性测试。5月16日,系统才正式向投资人开放。

现在回看3月那份计划书,最大的价值不是"指导执行",而是逼着我动手前把整个链条在脑子里走了一遍。 计划在执行第一周就过时了,但做计划这件事仍然值得做——它让你在偏离计划时,知道自己偏离了多远,下一步该往哪走。


七:半年,一个人,几点心得

回头看,这半年没有任何一个单点是高不可攀的。ROS2有完整文档,MoveIt2有丰富教程,节卡有技术支持,遇到问题有社区和AI。没有哪个门槛真的过不去。

真正难的是:很多事情只有上手做了,才知道是什么样。 看再多资料,只要没在真机上跑过,你就不知道仿真和真机的差距,你就不知道对接一个品牌要留多少时间,你就不知道哪些看起来很简单的事最消耗精力。

五条心得,是一个过来人的复盘:

1. 先跑起来,再谈精通。

第一个月别试图理解一切。不知道URDF标签干嘛的?先照着教程把模型跑起来。信心来自看见东西在动,不是看懂了原理。

2. 把模糊问题拆成确定性问题。

"搬行李"没法执行。"从A点抓取到B点,规划时间从2s降到0.8s"——可以操作。能写清到这个程度的问题,已经解决了一半。

3. 真机对接时间,至少按2倍预估。

仿真跑通只完成30%。剩70%在真机上,且这70%的大部份时间不是"写代码"而是"定位问题"。"顺利"在这个领域是一种意外,不是常态。

4. AI是好导游,不是好地图。

用它加速学习、建立新概念的认知框架——这是它擅长的。但重要的技术决策、要上真机的每一行代码,必须用官方文档和实际测试来验证。

5. 没看见虎有多大,反而是幸运。

如果2024年11月就知道后面要学多少东西、飞多少次深圳、加多少天班——我不会主动请缨说"我能搞定"。但也正是因为不知道,所以去了。去了之后发现:那些看起来很吓人的东西,拆开来,一件一件做,也就做完了。


八:写在最后

半年前,一个连URDF都不知道的软件人,在一台连ROS2都没装的服务器前,敲下第一个ros2 run

半年后,行李搬运机械臂在展厅里连续运行。

中间发生了很多。在仿真里跑了无数条规划轨迹。对着看不懂的C++代码一行行问AI。在深圳实验室,因为碰撞保护反复重连机器人,调PID调到不知道哪组最优。半夜改完代码,第二天早上看到机械臂按预期运动时的那种感觉。

然后呢?然后就继续往前走了。

初生牛犊不怕虎。等真的看见了虎长什么样,你已经站在它面前了。那时候只有一件事可以做——往前走。

如果你也想做机械臂,或者你也有一个"完全不懂但想试试"的领域——先迈第一步吧。装个ROS2,跑个仿真demo,让机械臂动起来。

这一步花不了你一周。做完了,你自己就知道答案了。

重新写文章,专注于AI领域,如AI原生、AI工具、AI赋能等,主阵地是公众号,欢迎关注。

原文链接:https://mp.weixin.qq.com/s/1HndisZZu1izYkj80TCivw