干了几年机械臂视觉对位,最深的体会是:网上讲视觉抓取的教程不少,但大多要么只讲标定板怎么摆放,要么只给一段Halcon识别圆点的代码,真正把“从相机标定到机械臂抓准”这条链路捋清楚、把中间每一步的坑都填上的内容,少之又少。很多朋友照着教程做,九点标定跑了,坐标也发了,一抓却偏出好几毫米甚至一两厘米,然后就开始怀疑是标定板不好、相机解析力不够,其实八成是流程里某个环节的坐标系没搞清楚。
这篇文章我把整套流程按实操顺序拆开讲。不管你是做流水线定位抓取、桌面级上下料,还是做视觉引导装配,只要是用“固定相机(Eye-to-Hand)配合机械臂抓取平面或其他方向摆放的工件”,这套方法论基本都通用。内容会覆盖相机内参标定、手眼标定、九点标定、图像坐标到机器人坐标的转换、抓取策略,还有我踩过的一些典型坑。
1. 动工之前,先想清楚视觉对位这套系统怎么搭
很多人一上来就装驱动、跑例程,结果抓不准了才回头考虑系统结构,这是最浪费时间的路径。视觉对位看似是“相机看到了,机械臂就抓了”,实际上是从像素到物理坐标再到关节角度的一条坐标系转换链,任何一个环节定义不清楚,后面全白搭。
1.1 两种经典的相机安装方式:眼在手上 vs 眼在手外
机械臂视觉系统里,相机和机械臂的相对位姿关系决定了你要做哪类标定,很多教程一上来就讲标定方法,却没先问最关键的问题:你的相机是装在机械臂末端跟着动,还是固定在工作台上方的?
| 安装方式 | 英文叫法 | 特点 | 典型场景 |
|---|---|---|---|
| 相机固定在机械臂外部 | Eye-to-Hand | 视野固定、标定一次可用很长时间 | 流水线定位、上下料、扫码定位 |
| 相机装在机械臂末端 | Eye-in-Hand | 视野随机械臂移动,可近距离拍清小目标 | 装配对位、引导纠偏、狭小空间作业 |
标题里提到CCD视觉对位,最常见也最适合入门的是Eye-to-Hand(眼在手外)方案。相机固定在机械臂基座附近的高处,视野覆盖整个抓取区域,机械臂把姿态摆好,直接往相机给的坐标位置抓就行。
这个方案的逻辑链路是:
相机标定(内参) → 手眼标定(相机到机械臂基座的位姿) → 九点标定(像素平面到机器人XY平面的缩放/旋转/平移) → 视觉识别(目标像素坐标) → 坐标换算 → 机械臂抓取这里有一个比较容易混淆的点:手眼标定和九点标定有什么区别?简单说,手眼标定解的是两个立体坐标系之间的6自由度位姿关系(3平移+3旋转),而九点标定解的是图像像素坐标和机械臂基座平面坐标之间的2D映射关系。有些平面抓取场景只做九点标定就能工作,但如果是倾斜面、多高度、需要相机跟机械臂保持精确空间关系的场景,九点标定就不够用了,必须做完整的手眼标定。
1.2 硬件选型:不是随便一台相机就能用
做视觉抓取的相机,核心参数并不是分辨率越高越好,而是单位像素对应的实际物理尺寸要匹配你的精度需求。比如你要抓一个公差±0.5mm的工件,视野是300mm×300mm,用500万像素相机(2448×2048),那么每个像素大约对应300/2448≈0.122mm,理论上像素级精度足够。但你要是视野拉到600mm,同样500万像素,像素分辨力就降到0.245mm,加上算法亚像素定位一般能到0.1到0.3像素精度,勉强可用,但如果目标特征小、对比度差,就未必稳。
镜头方面,固定工作距离抓取用定焦镜头加延长环调节对焦距离是性价比最高的方案。工业场景建议用靶面匹配目标的定焦镜头,配C接口或者CS接口,注意法兰距别选错。光圈不要开到最大,收两档能有效减少边缘畸变和色差,对精度有正面帮助。
光源是很多新手忽视但影响极大的变量。CCD对位最常见的坑不是算法烂,而是光照不稳定导致边缘检测抖动。优先选同轴光源或低角度环形光,把目标轮廓和背景的对比度拉开,后期做阈值分割会轻松很多。要是现场没有暗室条件,加遮光罩比换算法更管用。
还有一点,如果你用的是USB相机(比如常见的工业USB口或者消费级摄像头),尽量把相机的自动曝光、自动增益、自动白平衡全部关掉,锁定固定值。原因是自动曝光的细微变化会让同一个工件的灰度值每次都不一样,阈值分割参数就要不断调,视觉定位的重复精度会被光照波动直接拖垮。
2. 相机内参标定与手眼标定:坐标系统一是全部前提
视觉抓取的第一步永远是先把相机自身的“内参”搞清楚。内参是什么?它描述的是三维空间点投影到二维像素平面的数学关系,包括焦距(fx、fy)、主点(cx、cy,即光轴和成像平面交点的像素坐标)以及畸变系数。
2.1 内参标定用张正友法:棋盘格还是圆点阵列
现在工业视觉基本都采用张正友标定法,它是用一个平面标定板在相机前变换不同姿态,然后通过多张图求解内参和畸变系数。标定板分两种主流:棋盘格和圆点阵列。
- 棋盘格:角点提取精度高,OpenCV/Halcon自带角点检测,适合大多数场景。缺点是半张棋盘格出现在视场边缘时容易识别失败,需要保证整块板都完整在视野内。
- 圆点阵列:对失焦、运动模糊鲁棒性更好,适合在光照复杂的情况下使用,而且圆的中心可以通过椭圆拟合达到亚像素精度。Halcon里最常见的标定板就是圆点阵列。
实操中我的建议是:初学者先用棋盘格,因为OpenCV文档最全,出错了排查方便;等流程跑通再换圆点板优化稳定性。
拍标定图的时候有几句口诀:不同高度拍、不同角度拍、不要总放在视野中央、让标定板占据视场1/3到1/2以上。我一般拍15到20张,涵盖正对、左右倾斜、上下俯仰、四角区域。注意不要旋转过快导致运动模糊,不要用手按着标定板边缘造成弯曲——平面度是标定的隐含前提。
2.2 手眼标定的数学逻辑:Eye-to-Hand的AX=XB
手眼标定要解的是一个经典的齐次变换方程AX=XB。这里A矩阵描述的是机械臂末端在机器人基坐标系下的位姿(通常叫正解或Teach Pendant上的位姿),B矩阵描述的是标定板在相机坐标系下的位姿(通过拍标定板求得)。X就是相机坐标系到机械臂基座坐标系的变换关系。
求解这个方程需要至少3组末端姿态和对应的标定板位姿。实际操作中,我一般让机械臂末端带着标定板(注意,标定板装在末端,不是放在桌上,这样才方便形成足够的姿态变化),在相机视野内走9到15个不同姿态,每次都记录下两部分数据:机械臂示教器或控制SDK返回的末端位姿,以及相机图像解算出的标定板位姿。
这套操作有个很重要的细节:**标定板必须在相机视野内保持清晰可见,同时末端姿态变化要足够大,否则手眼标定的求解矩阵会病态,结果精度很差。**我见过有同事把标定板放在工作台不动、只让机械臂换姿势对着拍,结果解出来的X误差很大,原因就是标定板没动、等效姿态变化不足,数学上约束不够。
手眼标定工具方面,OpenCV的cv2.calibrateHandEye用起来非常方便,支持Tsai、Park、Horaud等几种方法,一般用CALIB_HAND_EYE_PARK或者默认的Tsai就行。Halcon则提供了calibrate_hand_eye算子,会把相机内参和手眼外参一起优化,精度通常比OpenCV略好,但调试门槛也更高。
2.3 标定结果怎么评估
很多人标完就急着开始抓取,这是又一个容易踩坑的点。你应该先做一次“重投影验证”:
- 拿标定板在机械臂工作范围内的几个位置摆放,分别记录机械臂末端实际位姿和图像解算位姿。
- 用手眼标定结果X把末端位姿转换成相机坐标系下的理论位置,再和图像直接解算出的标定板位姿比较。
- 如果平移误差在0.5mm以内、旋转误差在0.1°以内,说明手眼标定质量不错;如果差了几毫米,就得回到上面重新拍。
这个过程就是热门搜索词里“安川机器人验证标定结果”这类需求对应的核心操作——标定得再热闹,不上数据验证都是空的。
3. 九点标定的实操细节:2D场景里最实用的快速方案
如果你只需要在固定高度抓取平面摆放的工件,九点标定是效率最高的方法。它本质上是一种二维坐标映射,把图像坐标系和机械臂基座坐标系用一个仿射变换关联起来。
3.1 九点标定vs手眼标定:什么时候够、什么时候不够
九点标定的数学模型是:
X_robot = a0 + a1 * u + a2 * v Y_robot = b0 + b1 * u + b2 * v六个未知数,理论上至少需要3个点就能解,但实际中为了抑制误差通常用9个点做最小二乘。OpenCV里对应的就是cv2.estimateAffine2D或者cv2.getPerspectiveTransform(9点用仿射,4点及以上带畸变明显时用透视/单应矩阵更稳)。
这个方案隐含了一个重要前提:**被抓目标始终在一个固定高度平面内,相机光轴尽量垂直于该平面。**如果工件高度变化较大,九点标定的映射会引入系统性误差,因为同一个像素位置对应到不同高度的物理位置是不同的(哪怕是视差很小的远心镜头也有轻微差异)。所以当你的场景有多个高度层、或者机械臂末端还挂着一个相机做近距离对位时,老老实实做完整的手眼标定。
3.2 机器人走九个点的完整操作流程
做九点标定的经典流程是这样的:
- 在机械臂工作平面上固定一个带精密刻度的标定板,或者用一个末端装了尖锐针尖/吸嘴的治具。
- 手动或通过程序让机械臂末端依次走到标定板上9个已知位置(3×3的网格,间距可设在20-50mm)。
- 每走到一个点,记录下机械臂示教器上的基座坐标(Xr, Yr),同时在相机图像里找到对应特征点的像素坐标(u, v)。
- 收集9组对应点,用最小二乘求解投影变换矩阵。
关键细节在于:**机械臂末端特征点和图像特征点必须严格对应同一个物理点。**我常用的做法是机械臂末端装一根尖针,针尖对准标定板上的圆心或棋盘格角点,通过对针操作保证重复定位;相机侧则检测标定板上对应圆心/角点的像素坐标。这个“对应”如果偏了1mm,后面整个映射都会偏。
还有一种更方便的自制方案:机械臂末端装一个高对比度的圆点标记(比如黑色底上的白色圆点),让机械臂按程序走9个位置,每到一个点,视觉系统自动检测图像中圆点的像素坐标,同时程序内部记录该点对应的机器人坐标。省去人工对针的繁琐操作,适合批量复现,精度完全够用。
3.3 标定结果验证与常见失误
九点标定做完,用同一组数据验证时往往显得很准,这很正常,因为是最小二乘拟合的自身数据。真正有效的验证方式是:**让机械臂移动到一个没有参与拟合的测试点,把相机检测到的像素坐标输进变换关系里,看算出来的机器人坐标跟实际位置的偏差。**一般偏差在0.5mm以内算合格,0.2mm以内算优秀。
常见失误方面,我列几个印象比较深的:
- 没有把畸变校正考虑进去。九点标定本身可以在一定程度上吸收镜头畸变造成的非线性,但如果畸变很严重、视野边缘误差大,最好先用相机内参对图像做一次undistort,再做九点标定,精度会明显改善。
- 标定平面和抓取平面不在同一个高度。比如标定板放在桌面上标定,但工件实际在料盘里,料盘底比桌面低3mm。这点高度差在相机斜视时会造成位置偏移,越高差越明显,必须尽量让标定平面和抓取平面一致。
- 移动机械臂时不小心改动工装,导致标定板或相机相对位置发生变化。九点标定得到的是一个固定的映射关系,相机、机械臂基座、工作平台三者有任何一个动了,之前的标定结果就必须重做。
4. 视觉识别与定位:从图像坐标到机械臂坐标的完整链路
标定搞定之后,才算真正进入“视觉”的环节。视觉识别部分的目标是从相机图像中稳定、可靠地找到目标工件,并输出它的像素坐标和角度。
4.1 基于形状特征的定位:模板匹配
工业视觉里,抓取场景最常用的是基于形状的模板匹配,Halcon的find_shape_model是标杆级实现,OpenCV里则可以用多尺度模板匹配或者特征点匹配替代。它的思路是提前制作一个工件轮廓的模板,然后在图像中搜索相似形状并返回位置和旋转角度。
这个方案的特点是只要轮廓清晰、形状一致,就能稳定定位,对灰度变化和光照不均有一定鲁棒性。但反过来,如果工件形态变化大(比如反光金属零件在不同角度的反光区不一致),匹配分数会很不稳定。这时候可以把单模板升级成多模板,覆盖不同反光状态或不同规格的工件,抓取前先通过粗分类选模板。
4.2 基于几何基元检测的方案:圆、直线、角点
如果工件本身带圆形特征(比如定位孔、圆柱端面、轴承),直接用find_circle或者Hough圆检测往往比模板匹配更稳,因为圆的几何参数少、冗余小,一旦检出就非常精确。关键操作是先用阈值分割把目标从背景里分离,必要时加形态学滤波(闭运算填孔、开运算去噪),再拟合圆。注意亚像素边缘提取这一步很重要,用Canny加亚像素轮廓拟合能得到比单纯像素级Hough高得多的定位稳定性。
4.3 坐标换算的完整链路:像素坐标→机械臂坐标
当我们拿到目标的像素坐标(u, v)和角度θ之后,最核心的换算分两步:
- 畸变校正:如果之前九点标定没有融合畸变,这一步要先通过相机内参对坐标做undistort,把(u, v)转换为无畸变坐标(u', v')。
- 像素到机器人坐标:用九点标定的单应矩阵H,或者手眼标定的位姿变换矩阵,把像素坐标映射到机械臂基座坐标系下的(Xw, Yw, Zw)。如果工件平面的高度Zw已知,就能直接生成目标抓取点。
角度信息也很关键。九点标定如果只用平移点,往往只能算XY位置,角度要单独标定。通常做法是:在标定板上沿着X方向放两个特征点(或直接用其中一个特征点加已知的方向向量),确定图像坐标系相对机械臂坐标系的旋转角偏移量。之后视觉识别出的工件角度,减去这个偏移量,才是机械臂末端应该补偿的旋转角。
我记得第一次做角度补偿时出了一个低级错误:相机视野坐标系的Y轴向下,机械臂坐标系的Y轴向上,直接在OpenCV里画出来的角度是正的,发到机器人就变成负的,结果工件抓起来全部转了10多度。后来我养成一个习惯:每个项目先在纸上画出两个坐标系的方向关系,再写角度换算代码,不凭感觉直接套公式。
4.4 视觉识别稳定性:从算法参数到工程手段
视觉算法调好之后,稳定性才是产线上最磨人的问题。几个经验供参考:
- 少用固定阈值,多用自适应阈值或相对阈值:如果现场光环境有波动,固定的灰度阈值迟早翻车。
- 区域限定:只要目标可能出现的区域不超过整个视野的1/3,就框一个ROI出来做检测,既提速又减误检。
- 连续采集防抖动:不要拿一帧就发指令,连续采集3-5帧,取位置平均值,能显著降低振动和噪声导致的随机误差。
- 加超时和置信度阈值:抓不到就报错停线,不要硬发给机械臂一个错误坐标,否则下一秒就是撞机或抓空事故。
5. 抓取执行:轨迹规划与末端工装的配合
坐标解决了,机械臂怎么过去也是学问。很多人一上来就做直线运动从当前位置直接怼到抓取点,结果要么撞到料盘边缘,要么姿态不对吸偏了。
5.1 抓取姿态怎么定
对平面抓取来说,机械臂末端通常用垂直于工作平面的姿态抓取,也就是法兰盘平行于工作台面。但这里有个细节:**相机识别出来的角度是工件在平面内的旋转角,终端执行器在Z轴方向上的旋转补偿可以直接用该角度,但在笛卡尔空间里机械臂末端只能保持一个固定的俯仰和偏航姿态。**所以在发送目标点时,你需要把姿态角固定下来,只变化XY和绕Z的旋转。
如果抓取点除了位置和角度,还涉及工件表面的倾斜,那就需要根据工件的法向量做姿态插补,这属于更难的三维视觉对位,本篇先不展开,单独说平面场景。平面场景最大的好处是姿态简单,你用欧拉角或者四元数固定末端姿态,只变更X、Y和绕Z的旋转角,调试量小很多。
5.2 吸取还是夹取:末端执行器决定抓取策略
抓取执行器的选择直接影响视觉系统的覆盖范围:
- 吸盘:适合平面、光滑、硬质工件的表面抓取。视觉只需要提供吸盘中心的XY和角度,允许多少偏差取决于吸盘直径和工件表面积,一般吸盘直径20mm时,±2mm以内的偏差都能接受。
- 气动夹爪:适合有一定厚度的零件。视觉需要同时提供抓取中心位置和夹爪开闭方向,角度精度要求更高,因为夹爪闭合时如果角度偏差大,工件会滑出去。
吸盘方案里有个典型的视觉配合细节:**吸盘中心不一定和相机看到的工件几何中心重合,因为吸盘可能偏心安装。**这时候就需要在末端执行器上做一个工具中心点(TCP)标定,把吸盘中心相对法兰盘的偏移量算出来,再换算到机器人坐标系。视觉识别出的抓取点必须对应吸盘中心位置,而不是相机看到的图像中心。
5.3 轨迹规划:如何让机械臂不撞机、不抖动
从拍照位置到抓取点的运动,我不建议直接用单段直线运动。原因是如果目标和机械臂当前姿态差异较大,直线插补可能会经过工作台边缘或料盘侧面,容易碰撞。
稳妥的做法是分成两段:
- 先做抬升运动到安全高度(比如Z轴抬高到比所有障碍物都高的平面);
- 再从安全高度垂直下降到抓取点。
这样避开了横跨途中可能存在的障碍。这里的Z安全高度值要根据现场工件堆叠高度、料盘边缘高度实测确定,多留5-10mm余量。
轨迹规划在实现层面可以用机械臂厂商SDK里的moveL(直线运动)和moveJ(关节运动)。空间范围大的转移段用moveJ快速到位,接近段用moveL保证路径可控和姿态平滑。对抓取抖动问题,可以在运动指令里设置较小的加速度和较大的平滑过渡参数(有些品牌叫Blend/Zone),避免到位瞬间的振动影响最后定位。
5.4 节拍优化:从1次5秒到1次3秒
抓取系统的节拍往往是产线瓶颈,也是视觉工程师最容易挨骂的环节。做过几套系统之后我总结了一个优化顺序:
- 先保证精度和稳定性,再压时间。不要一上来就把速度拉到最高,否则机器人振动加大、视觉图像模糊,定位误差也随之放大。
- 视觉拍照与机械臂运动并行。传统顺序是机械臂停稳→拍照→处理→运动,很慢。如果机械臂支持提前拍照(还在减速接近时就让相机提前触发),把视觉处理时间藏在机械臂运动时间里,单个循环能省不少。
- 压缩视觉处理时间。把分辨率降到刚好满足精度要求的程度,ROI小范围检测,模板金字塔层级充分利用,一般能把处理时间从百毫秒级降到二三十毫秒。
6. 精度排查与常见坑位:一台视觉对位系统最大的敌人
最后这部分是本文最有价值的地方——我把这些年遇到过的定位精度问题按类型拆开,每一个都说清楚问题现象、原因和排查思路,希望让你少走几周弯路。
6.1 总是偏一个固定方向的几毫米:基座标定或标定板松动
现象很典型:视觉给的坐标换算后偏了,但重复抓取时每次偏的方向、大小几乎一样。这时候大概率不是随机噪声,而是系统误差。按顺序排查:
- 确认标定板或相机支架没有松动。视觉系统的参照基准一旦移位,所有标定结果全部失效。
- 检查机械臂基座和工作平台的相对位置是否发生变化,比如调试过程中机器整体挪动过。
- 重新做一次九点标定,看映射参数变化是否明显。
固定方向的偏差,还有个隐蔽来源是机械臂本身TCP不准确。如果你的机械臂没有做过工具坐标标定,末端执行器(吸盘、相机)的实际空间位置和控制器认为的位置会有一致性偏差,而且这个偏差可能随姿态变化。先校好TCP,再谈视觉对位。
6.2 视野边缘准、中心不准,或者反过来:畸变没处理好
九点标定本身能吸收一部分畸变,但视野大、边缘畸变严重时,单纯一个仿射变换不够。处理方式是把相机内参标定里的畸变系数拿来做图像的undistort,或者做标定时直接用带畸变模型的单应矩阵优化(OpenCV的findHomography配合solvePnP思路)。
区分方法是:把九点标定的点留一部分不参与拟合,用拟合结果预测它们的坐标。如果预测残差在视野边缘显著大于中心,基本可以判定是畸变问题。改完undistort之后重新标定,边缘误差通常会明显下降。
6.3 时准时不准、同一位置抓取偏差波动大:光照和振动
时准时不准的随机性问题,90%出在图像前端。一个很经典的场景:工件表面有轻微反光,环形光一照,高光区像长在工件表面上会飘,导致边缘检测来回跳。排查方法很简单:把相机触发方式从自由采集改成软触发或硬触发,然后在抓取过程中连续拍几十帧,统计视觉输出坐标的方差。方差大,说明图像本身不稳定;方差小但抓取还是偏,问题就在后端的机械臂重复精度或标定。
振动源也值得关注。机械臂在高速运动急停时产生的振动会传递到相机支架,如果相机支架刚度不够,图像会模糊或抖动。处理方式:相机支架用重型铝型材固定,跟机械臂底座分离,拍照触发延时设在机械臂完全停稳之后,或者干脆加电子快门时间很短、再配合频闪光源把快门时间做短,利用频闪瞬间冻结图像。
6.4 角度对不准,平移没问题:角度标定被忽略了
很多九点标定教程只教位置不教角度。角度环节常见的错误是:没有把图像坐标系和机器人坐标系的Y轴方向差异考虑进去。因为图像坐标系Y轴向下,机械臂基座坐标系Y轴通常向上(依品牌而异),角度换算会出现反号。还有一部分机械臂的旋转角定义范围是-180°到180°,视觉输出的角度是0°到360°,需要做一次角度归一化和补偿修偏。
我的固定做法是:
- 在图像里放一个已知长度和方向的特征(标定板的一条边或两个圆心连线)。
- 用视觉算出该特征在图像中的角度。
- 在机器人示教器里查看该特征在机器人坐标系下的实际角度。
- 两者相减得到角度偏移量,后续识别角度统一减去这个偏移量后发送给机械臂。
每次运行前最好能用一个基准点做一次角度自检,防止调试过程中的手工偏移。
6.5 TCP标定不准确导致的“看起来标定没问题,抓起来偏”问题
视觉标定和手眼标定都做完、视觉输出坐标也看着合理,但机械臂就是抓不准,尤其是改变姿态后偏差更明显,这种情况我会优先怀疑机械臂的工具中心点(TCP)标定错误。
因为视觉最终给出的目标是工具(吸盘/夹爪)要到达的位置,如果工具坐标系跟法兰盘坐标系的关系不对,机械臂的姿态变化会直接把这个误差放大。TCP标定精度要求很高,通常用四点法或六点法去标定,标定误差控制在0.1mm以内才算合格。换过末端执行器、拆装过法兰的人几乎都吃过这个亏——换完吸盘忘重新标TCP,视觉怎么改都救不回来。
6.6 产线环境变化,标定悄悄失效了
还有一种最磨人的情况:每天早上开机都偏一点点,到下午又好了,或者夏天开机稳定、冬天冷机启动偏差大。这种几乎可以确定是热胀冷缩和机械结构刚性问题。
相机支架、机械臂底座安装在同一个架体上时,环境温度变化会改变架体的形变,导致相关坐标关系发生漂移。工业现场如果昼夜温差大,尤其要注意。解决思路是:选用低热膨胀系数的材料做支架,关键连接处加定位销防止微动,有条件的话在系统里加“标定自检基准件”,每班开机时自动检测一次,发现偏差自动补偿或提示重新标定。
我在做一套流水线项目时遇到过类似情况:上午九点开机抓得很准,到中午太阳照进车间,钢架一侧受热变形,Y方向偏差从0.3mm涨到1.5mm。最后就是在支架上加了一个基准标记块,每次换班自动跑一遍快速标定补偿,才彻底稳定下来。
写在最后:把这个流程跑通之后,你能得到什么
把上面这些环节完整跑通一遍之后,你手里就有一套“能用”的视觉对位系统了——相机能给坐标、机械臂能抓准、精度有验证数据支撑、偏差有排查链路可循。不要指望一步到位,视觉对位系统天然是一个需要反复调试迭代的系统,我第一次独立调试时光手眼标定就折腾了两周,后来熟练了半天就能出结果,差异全在方法论。
如果你要做3D抓取、移动抓取或者机械臂强化学习这类进阶方向,本篇的基础链路依然成立,只是坐标变换从2D升级成了3D,视觉从单目变成了双目/点云,流程的骨架没有变。先把平面抓取做扎实了,后面进阶就是加法题。