小陈是一名刚入职的实习工程师,第一天走进快递分拣中心,就被眼前的景象震住了:一条飞速运转的传送带旁,六轴机械臂正伸出“手腕”,精准地把一个个歪歪扭扭的包裹从带子上“拎”起来,翻个面,送入对应的分拣格口。他忍不住问师傅:“机械臂是怎么知道该抓哪里、怎么转手的?”师傅笑着指了指架在传送带上方的一个黑色小盒子:“因为它有一双眼睛。而这双眼睛,是被配过眼镜、练过左右互搏、又学会了看平面和立体之后,才真正上岗的。” 这就是机器视觉引导(2D/3D)的全部秘密。想让机器人像人一样“看见并抓住”,需要完成四件事:给相机校正好“视力”(相机标定)、让眼睛与手臂的坐标“对齐”(手眼标定)、用一张平面照片定位(2D 视觉)、再用立体信息判断姿态(3D 位姿估计)。最后,把这一切装进产线,才能实现无序分拣和柔性制造。本文将用分拣中心的故事,带你从零看懂这条完整的“机器视觉引导”链路。
视觉引导是工业机器人从“盲操作”升级为“智能操作”的关键感知能力。掌握 2D/3D 视觉引导的标定、匹配与位姿估计方法,是机器人系统集成与产业化领域从业者的核心工程技能,直接决定自动化产线的柔性化与可靠性。
可视化演示
展示五级流水线指令执行过程,检测数据冒险并通过前递技术解决依赖冲突,动态演示流水线停顿与旁路转发机制。
本节配有交互动效(进入视口后自动加载,约 3KB)。
五级流水线执行 指令分5级执行:取指→译码→执行→访存→写回,每个时钟周期推进一级 理想情况下每个周期完成一条指令,CPI=1 IF → ID → EX → MEM → WB
相机标定
小陈跟着师傅来到传送带上方的摄像头前,师傅说:“这台相机刚出厂时,就像一个人没配过眼镜——看东西是花的、比例是歪的。你得先带它去'配眼镜',才能准确告诉你包裹的位置。” 这个“配眼镜”的过程,在机器视觉里就叫相机标定。它要解决两件事:一是镜头本身的“近视散光”(内参,包括焦距、主点、畸变),二是这双眼睛在空间里站在哪、朝哪看(外参,即相机坐标系与世界坐标系的旋转和平移关系)。
仔细拆开来看,相机的成像过程可以用一个经典的数学模型描述——针孔模型。世界空间里一个三维点,先通过外参变换到相机坐标系,再被内参矩阵投影到像素平面。这个过程就像阳光穿过小孔,在底片上倒映出景物的影子;内参决定了“底片”的刻度,外参决定了“小孔”的位置。
1. 世界坐标→相机坐标:外参矩阵 [R|t] 描述相机在世界空间里的位姿(旋转 R 和平移 t),把三维世界点变换到以相机光心为原点的坐标系。
2. 透视投影:将相机坐标除以深度 Z_c,完成从三维到二维的“缩放到焦平面”,这是针孔成像的灵魂一步。
3. 像素离散化:内参矩阵把焦平面上的连续坐标映射到像素网格——f_x、f_y 是焦距的像素刻度(决定“近视度数”),c_x、c_y 是光轴与成像平面的交点主点(决定“视线中心”)。
实际标定时,工程师会让相机拍摄不同姿态的棋盘格标定板,利用已知方格的角点坐标,反解出内参与畸变系数。畸变校正则是把“鱼眼”般弯曲的画面拉回正常——就像把哈哈镜换回平面镜。分拣中心的机械臂之所以敢精准下抓,靠的就是这一副配得一丝不苟的“刻度眼镜”。
手眼标定
眼镜配好了,小陈又问:“可相机看到的是相机坐标,机械臂动的是机械臂坐标,两套语言怎么对得上?” 师傅点头:“这就要练'左右互搏'了——让眼睛和手反复配合,找出两者的固定关系。” 在机器人学里,这个工序叫手眼标定,它的产物是一个 4×4 的齐次变换矩阵 X,描述相机(或工具)与机械臂末端法兰之间的固定位姿关系。
根据相机的安装位置,手眼系统分为两类:眼在手上(Eye-in-Hand)——相机装在机械臂末端,跟着手臂一起动,像手上长了一只眼睛;眼在手外(Eye-to-Hand)——相机固定在外界支架上,像墙上挂了一只监视眼。两种方式都归结为同一个数学难题:已知机械臂两段运动之间的变换 A,和相机观察到标定板两段运动之间的变换 B,求固定的手眼关系 X,使得它们满足方程:
1. 定义两次运动:让机械臂在两个不同姿态下拍摄静止的标定板。机械臂的示教器会记录两次运动间的变换 A;同时,相机通过分析标定板角点在图像中的位置变化,得到变换 B。
2. 建立手眼方程:无论手怎么动,相机与机械臂末端的固定变换 X 始终不变,因此同一物理点在两种坐标系的映射绕一圈后应回原点,得到矩阵方程 AX = XB。
3. 分离旋转与平移:把 A、B、X 展开成旋转与平移块,先解旋转方程 R_A R_X = R_X R_B(用四元数线性方程求解),再代回解平移 t_X,最终拼出完整变换。
小陈恍然大悟:“原来机械臂能精准下抓,是因为工程师事先让眼睛和手反复确认过'你看到的每一处,我都知道怎么够到'。” 手眼标定完成之后,相机检测到的任意目标位姿,都能换算到机械臂基坐标系下,成为可执行的抓取指令。
2D视觉引导
分拣传送带上路过的包裹大多平放,标签朝上。师傅指着一个贴着破损面单的纸箱说:“这种情况不需要知道它的立体姿态,只要在平面照片里找到它'长得像谁、歪了多少'就够了。” 这就是2D 视觉引导——从二维图像里提取目标的位置 (x, y) 与面内旋转角 θ,不涉及深度。
最经典的方法是模板匹配:先把一个标准工件拍成“证件照”(模板),然后在图像上滑窗比对,计算每个位置的相似度。职业资格证上的照片与本人比对、二维码识别的角点定位,用的都是同一思路。相似度最常用的度量是归一化互相关(NCC),它衡量模板与图像局部区域的“步调一致性”:
1. 图像与模板取差:在每个候选位置 (u,v),把图像中那一小块减去自身平均亮度,模板也减去模板平均亮度。这一步去掉了“整体明暗”的干扰。
2. 点乘求和:把去均值后的图像块与模板逐像素相乘再累加。如果两者“谷峰形状”一致,乘积为正且大;若相反,乘积为负。
3. 归一化:除以各自的能量(标准差)之积,把相似度缩放到 [-1, 1],避免高亮度区域天然得分高。
2D 引导的工程实现还要配合边缘特征提取(如 Canny 算子找出工件轮廓)与几何定位(通过直线拟合求旋转角)。当像素坐标算出来后,必须乘上“像素→物理”的换算比例(像素当量),即在标定时量出每个像素对应的实际毫米数。这就像分拣员看一眼照片,不仅认出是哪个包裹,还估出它大概在传送带的哪个位置、偏转了多少度——足以指挥吸盘平行吸取。
3D位姿估计
传送带尽头是一箱堆得乱七八糟的物料,小陈皱起眉头:“这种歪七扭八的盒子,2D 照片里都叠成一团,怎么抓?” 师傅打开工控屏,屏幕上出现了一团密密麻麻的点云,像夜空中的星星一样勾勒出箱内物品的立体轮廓:“这就要给机器换上'立体眼睛'了——3D 位姿估计,不仅要告诉机械臂'抓哪里',还要告诉它'以什么角度伸进去'。”
3D 视觉的核心问题,是从深度信息中求解目标的六自由度位姿(X、Y、Z 和绕三轴的转角)。获取深度的主流方案有两种:激光三角法利用激光线照射物面,相机观察光斑的偏移量来反算距离——像用手指在眼前晃,近大远小;结构光投影则向物体投射编码光栅条纹,通过条纹形变解算深度,像电影院里 3D 眼镜看到的立体画面。有了点云或深度图,再通过与 CAD 模型或模板点云的匹配,最终把目标的 6DoF 位姿解算出来——这一优化问题的经典形式是PnP(Perspective-n-Point):
1. 建立对应点对:在目标模型的表面选取 N 个特征点,并从 3D 点云或图像中找出它们的对应投影像素点 p_i。
2. 投影预测:假设一组 R、t,把每个模型点变换到相机坐标,再用针孔模型投影到像素平面,得到预测位置。
3. 最小化重投影误差:计算所有预测位置与实际位置的像素距离平方和,用迭代优化算法(如 Levenberg-Marquardt)不断调整 R、t 直至收敛。
小陈看着屏幕上旋转的六自由度坐标系,理解了为什么 3D 引导能应对乱堆:它先“看出”每个物件的立体姿态,再由算法判定哪个面适合吸、从哪个角度伸进去不会碰。立体眼睛让机械臂从“平面找物”升级为“空间取物”——就像人闭上一只眼后无法判断距离,睁开双眼才能稳稳接住抛来的球。
无序分拣应用
“真正考验技术的,是这一筐。” 师傅带小陈来到一个料筐前,里面堆着几十个形状各异的金属零件,彼此交叠,完全没有规律。这正是机器视觉引导最硬核的战场——无序分拣。视觉系统在这里扮演“侦察兵”:从整体点云中分割出每个独立个体,识别类型,估算位姿,再挑出“最好抓”的那一个。
“最好抓”是一个工程权衡问题。机械臂从四面八方伸进料筐,可能碰到筐壁或其他零件,所以抓取规划与碰撞避免必须联动。视觉系统为每个候选目标计算一个可抓取性评分 Q:评分要考虑该目标表面的朝向(吸盘需要垂直贴合平面)、被抓取后是否会带起旁边的零件、以及机械臂到达该姿态时是否会与周边障碍碰撞:
1. 求表面法向角:用点云局部平面拟合估计目标表面的法向量,与机械臂预设接近方向做点积,得到 cosθ。
\displaystyle \cos\theta = \frac{\vec{n}_{\text{目标}} \cdot \vec{n}_{\text{臂}}}{\|\vec{n}_{\text{目标}}\| \|\vec{n}_{\臂}\|}
2. 距离惩罚:计算目标中心到机械臂当前末端位置的距离 d,并与标定的特征尺度 d_0 比较,距离越大评分越低,避免机械臂频繁满行程运动。
3. 综合排序:对筐内所有候选目标计算评分,取 Q 最大值作为下一次抓取目标,抓走后重新扫描,形成“感知-决策-执行”闭环。
分拣大厅里,机械臂每一次下抓前都先在空中“顿一顿”——那是视觉系统在重新确认位姿。节拍优化则让视觉计算与机械臂运动并行:机械臂刚放下上一个零件,新一帧点云已经计算完毕。至于吸盘选型,就像选合适的勺子舀汤:大吸盘吸大平面件效率高,小吸盘才能在密集缝隙中找准吸附点。无序分拣的终极目标,是让机器像熟练工人一样“眼疾手快地挑出该挑的”。
柔性产线集成
小陈站在整个分拣中心的高台上,看着十几条产线联动运转:视觉引导的机械臂、传送带、扫码枪、翻转台、料箱调度系统各司其职。师傅说:“单个机器人再聪明,也只是'单兵作战'。要让整个产线换一个产品也能快速调整,靠的是柔性集成——把视觉系统当成产线的一等公民,与机器人、PLC、MES 深度绑定。”
柔性产线对视觉引导提出了三个工程挑战:精度校准、光源设计和系统联调。精度校准要求视觉系统的测量误差与机械臂的重复定位误差在同一个数量级内——否则会出现“眼睛说抓这儿,手却抓偏了”。视觉误差、手眼标定误差、机械臂运动学误差就像普通测量中的多个独立误差源,它们共同构成一条“精度链路”,通常按平方和开根号的方式合成:
1. 误差源分解:把视觉引导全链路的误差拆成三份——相机标定与测量误差 δ_cam、手眼标定误差 δ_hand、机械臂运动学与重复定位误差 δ_robot。
2. 平方和开根号:假设各误差源相互独立且服从正态分布,总误差按正交合成,得出链路总精度。
3. 瓶颈定位:比较各项大小,最大的那项就是改进方向——若要整体精度翻倍,应优先减小最大误差源,而非精雕细琢本就很小的一项。
光源设计则是视觉工程师的“化妆术”:环形光源让冲压件的高光均匀,低角度光源让刻字凹痕显出阴影轮廓。系统联调要做的是通讯握手与节拍匹配:视觉工控机把抓取坐标通过 TCP/IP 发给机器人控制器,机器人完成后回传信号,触发下一帧拍照。异常处理则涵盖“没找到目标、位姿不收敛、抓取丢失”等预案——产线必须优雅地降级,而不是停机罢工。
柔性产线的精髓,是让视觉引导系统像一位经验丰富的领航员:换型时只需更换模板与参数,无需改动机械结构;节拍变化时自动调节拍照频率与运动速度。小陈终于明白,整座分拣中心之所以能同时处理成千上万种包裹,不是因为某个算法多神奇,而是从“配眼镜”到“排练指挥”的每一步,都织进了系统级的精度与鲁棒性。
AI 应用场景
物流分拣中心——包裹无序抓取
阶段:感知与定位(3D 视觉引导)
解决的问题:传统人工分拣效率低、易出错;纯机械传送带只能处理规则摆放的包裹。AI 视觉系统通过 3D 相机重建料筐内包裹的点云,结合无序分拣算法计算每个包裹的位姿与可抓取性评分,引导机械臂从乱堆中逐个抓取,识别率与抓取成功率远超人工。
具体案例:菜鸟/顺丰的智能分拣中心里,一台配有 3D 结构光相机和六轴机械臂的分拣工作站,可对每小时 800 件混杂包裹完成“识别—定位—抓取—投递”全流程。系统先通过 PnP 估计包裹位姿,再按可抓取性评分排序,优先抓取表面平整、无遮挡的包裹。
汽车制造——零部件装配引导
阶段:检测与对位(2D + 3D 混合视觉)
解决的问题:汽车底盘螺栓孔、发动机缸体定位等工序对位置精度要求达 ±0.5mm,人工目测无法稳定保证。2D 相机高速获取平面位置,3D 相机在关键工序补偿深度姿态,视觉引导机械臂将螺栓送到准确的孔位。
具体案例:某车企柔性装配线上,机器人通过“眼在手上”方式安装车门密封条。机械臂移动时,固定在末端的相机对车门框拍摄,实时计算密封条槽道的轨迹,引导臂端工具与车身保持恒定接触力与角度,换车型时只需切换模板库,无需机械改造。
3C 电子——柔性高速上料
阶段:识别与分拣(2D 模板匹配)
解决的问题:手机中板、耳机壳等小零件在振动盘上料时姿态随机,人工摆放跟不上节拍。2D 视觉用模板匹配与边缘特征在传送带上快速识别零件方向,引导机械臂在毫秒级内完成纠偏与抓取,柔性化应对多种型号混流生产。
具体案例:某 3C 代工厂引入视觉引导上料单元,针对 12 种不同型号的金属中板建立模板库。相机以每秒 30 帧的速度检测传送带图像,NCC 模板匹配定位零件中心与旋转角,机械臂通过吸盘直接吸取并放入治具,换型时间从 2 小时缩减到 10 分钟。
Python 演示
import numpy as np class TemplateMatcher: def __init__(self, template): self.template = template.astype(np.float64) self.template_mean = self.template.mean() def ncc_score(self, image, top, left): th, tw = self.template.shape patch = image[top:top+th, left:left+tw].astype(np.float64) patch_mean = patch.mean() num = ((patch - patch_mean) * (self.template - self.template_mean)).sum() den = np.sqrt( ((patch - patch_mean) ** 2).sum() * ((self.template - self.template_mean) ** 2).sum() ) if den < 1e-12: return 0.0 return num / den def match(self, image, stride=2): best_score = -1.0 best_pos = None H, W = image.shape th, tw = self.template.shape for top in range(0, H - th, stride): for left in range(0, W - tw, stride): score = self.ncc_score(image, top, left) if score > best_score: best_score = score best_pos = (left, top) return best_pos, best_score def simulate_scene(): rng = np.random.default_rng(42) img = np.zeros((240, 320), dtype=np.float64) + 0.2 th, tw = 28, 28 template = np.zeros((th, tw), dtype=np.float64) cv = 0.8 for i in range(th): for j in range(tw): if (i - th // 2) ** 2 + (j - tw // 2) ** 2 < (th // 2 - 2) ** 2: template[i, j] = cv cx, cy = 210, 120 img[cy - th // 2:cy + th // 2, cx - tw // 2:cx + tw // 2] = template return img, template def main(): img, template = simulate_scene() matcher = TemplateMatcher(template) pos, score = matcher.match(img, stride=2) print("最佳匹配位置:", pos) print("相似度分数: %.3f" % score) if __name__ == "__main__": main()
class TemplateMatcher:封装“取证件照(模板)→ 滑窗比对 → 输出最佳位置”的完整匹配器,对应正文中 2D 视觉引导的模板匹配模块。self.template_mean = template.mean()预先算好模板平均亮度,后续每步比较都会用到,避免重复计算。patch = image[top:top+th, left:left+tw]在候选位置截取与模板同尺寸的图像局部块,相当于把“候选区域照片”与“证件照”并排比对。num = ((patch - patch_mean) * (self.template - self.template_mean)).sum()对应 NCC 公式的分子:去均值后逐像素相乘再求和,衡量两幅图的“形状吻合度”。den = np.sqrt(... * ...)对应 NCC 公式的分母:两者能量之积开根号,把分数归一化到 [-1, 1],消除光照明暗影响。stride=2滑窗搜索的步长,步长越小越精确但越耗时,实际产线中会在精度与节拍间权衡。simulate_scene()造一张模拟图像:在深色背景的“传送带”上画一个高亮的圆形“工件”,并提取它作为模板,方便演示匹配流程。
常见误区
误区相机标定和手眼标定是安装时做一次的工作,之后只要不动相机,就永远不用再管了。很多初学者在实验室里标定一次后,直接在产线上跑几个月。
正解实际产线中,相机可能因振动、温度变化、更换镜头或机械臂碰撞而产生微小位移。哪怕只是松了一颗螺丝,标定参数就失效了。正规产线会设置定期复标周期(如每月或每季度),每次检修后也强制重新验证。就像人的眼镜戴久了会松,需要定期去眼镜店调校镜架。
为何常见:因为实验室环境稳定,标定误差短期内体现不出来;而产线是 24 小时连续运转的恶劣环境,累积的热胀冷缩和机械磨损会让误差逐渐放大,这种“慢性漂移”不易察觉。
误区3D 相机直接输出点云,里面自带深度信息,应该不需要像 2D 相机那样做标定和手眼标定。很多初学者认为“立体视觉=免标定”。
正解3D 相机只是用更先进的方式获得了深度数据(结构光、激光三角、ToF),但它同样有内参(投影变换、深度误差模型)需要出厂或现场校准;更关键的是,点云坐标同样在相机坐标系下,依然需要手眼标定才能换算到机械臂坐标系。3D 相机解决的是“深度怎么来”,标定解决的是“坐标怎么换”,两者是正交问题。
为何常见:3D 相机的标定过程常被厂商封装成“一键校准”或出厂预设,用户感知不到标定的存在,误以为“免维护”。但封装不等于不需要,换装位置、震动后依然要重新标定。
误区深度学习目标检测(如 YOLO)在公开数据集上精度碾压传统方法,所以工业视觉里模板匹配迟早被淘汰。初学者倾向在一切场景堆深度学习模型。
正解工业视觉讲究“够用、稳定、可解释、快”。模板匹配在纹理丰富、节拍要求高(毫秒级响应)、目标形态固定的场景中依然有不可替代的优势:它无需训练数据、计算量小、分数可解释(便于设置阈值)。深度学习擅长的是类别多、外观多变、遮挡严重的复杂场景,但其推理延迟和数据集维护成本在柔性产线中往往得不偿失。实际工程常是“模板匹配打底,深度学习补盲”。
为何常见:因为学术界的评测榜单以大数据集上的精度为核心指标,而工业界关注的是单点成本、鲁棒性和可维护性;初学者容易被 SOTA 论文带偏,忽略了工程约束。
误区买了更高分辨率的相机,视觉引导的抓取精度就会成比例提高。很多项目一上来就追求 1200 万像素工业相机,认为像素越高越准。
正解视觉引导的总误差是相机标定、手眼标定、畸变校正、机械臂重复定位精度等多环节的合成(如正文的误差链公式)。盲目堆像素只会增加数据量和计算耗时,实际精度提升有限,甚至因为畸变增大而变差。真正的精度提升要系统性做:先测出各环节误差,定位最大瓶颈,再针对性优化。就像把测距仪从毫米级换成微米级,但你用手去拿东西时抖动有几毫米,仪器再准也没用。
为何常见:因为“分辨率决定精度”是直觉判断,像素确实是视觉系统最直观的精度指标;而误差链是系统级的隐性概念,需要工程经验才能建立整体认知。
面试题
Q1. 相机标定中的“内参”不包括以下哪一项?
- A.焦距大小
- B.旋转平移← 正确答案
- C.主点坐标
- D.畸变系数
答案:B。内参描述相机内部光学性质,包括焦距(决定视场角)、主点(光轴与像面交点)和畸变系数(镜头弯曲程度),它们不随相机位置改变。而旋转和平移属于外参,描述相机在世界空间中的位姿——就像一副眼镜的度数和瞳距是“内参”,你把它戴在头上还是拿在手里是“外参”。
Q2. “眼在手上”(Eye-in-Hand)系统指的是哪种安装方式?
- A.相机固定在地面支架
- B.相机装在机械臂末端← 正确答案
- C.相机装在传送带上方
- D.相机安装在工件托盘下
答案:B。眼在手上是指相机固定在机械臂末端法兰上,跟随手臂运动,像“手上长了一只眼睛”。固定在地面或传送带上方属于眼在手外(Eye-to-Hand),相机与机械臂基座相对静止。区别就像“用头灯照明”(灯随头动)和“用路灯照明”(灯固定在地上)。
Q3. 2D 模板匹配最适合以下哪种工业场景?
- A.散乱堆叠的金属零件分拣
- B.平放标签的方向定位← 正确答案
- C.深料筐内多层物料的抓取
- D.需要六自由度位姿的装配
答案:B。2D 视觉只能提供平面内的位置和旋转,最适合目标平放、姿态单一的场景,如平放标签的方向定位。散乱堆叠和深料筐抓取需要深度信息来做位姿估计(3D 视觉);六自由度装配同样离不开 3D。就像看一张照片能认出“桌子上的杯子”,但判断不了杯子后面还有多深。
Q4. 下列哪些方法可以用于 3D 位姿估计?
- A.PnP 求解← 正确答案
- B.模板匹配
- C.结构光投影
- D.点云配准← 正确答案
答案:AD。PnP 通过 3D-2D 对应点反求位姿,点云配准(如 ICP)通过对齐模型点云与实测点云得到位姿,都是 3D 位姿估计的核心手段。结构光投影属于“深度获取”而非位姿估计——它解决“深度怎么来”,后续还要靠 PnP 或配准算“姿态是什么”。模板匹配是 2D 方法,只能给出平面位置与旋转角。
Q5. 激光三角法测量深度的基本原理是什么?
- A.记录激光往返飞行时间
- B.观察激光光斑的偏移量← 正确答案
- C.比较激光与环境的相位差
- D.利用激光条纹的衍射角
答案:B。激光三角法让激光器以固定角度照射物体表面,相机在另一角度观察激光光斑。物体高度变化时,光斑在相机中的像素位置发生偏移,按三角几何关系就能解算深度。它不像 ToF 那样测量飞行时间,而是“看偏了多少”——就像你眯起一只眼,用手指对准远处物体,手指位置会因为视差而变化。
Q6. 无序分拣场景中,视觉系统通常承担哪些任务?
- A.目标识别与分类← 正确答案
- B.六自由度位姿估计← 正确答案
- C.可抓取性排序← 正确答案
- D.零件表面喷漆
答案:ABC。无序分拣中视觉系统要完成“认出是什么”(识别分类)、“判断在什么姿态”(位姿估计)、“分析哪个好抓”(可抓取性排序),再交给机械臂执行。喷漆属于工艺执行环节,由机器人末端的喷枪完成,不归视觉系统管。可以类比快递分拣员先看清是哪个包裹、再判断怎么伸手最方便。
Q7. 手眼标定方程 AX = XB 中,X 代表什么?
- A.相机的内参矩阵
- B.相机与机械臂末端的固定变换← 正确答案
- C.机械臂两次运动的差
- D.待抓取工件的位姿
答案:B。X 是手眼关系的齐次变换矩阵,描述相机坐标系与机械臂末端坐标系之间的固定位姿关系,与机械臂当前姿态无关。A 是机械臂末端两次运动间的变换,B 是相机观察标定板两次运动间的变换。就像你和搭档背靠背站着,无论你怎么走动,你们之间的“相对位置关系”是固定的,那个关系就是 X。
Q8. 相机外参矩阵 [R|t] 描述的是哪两个坐标系之间的关系?
- A.像素坐标系与图像坐标系
- B.世界坐标系与相机坐标系← 正确答案
- C.相机坐标系与像素坐标系
- D.机械臂基座与末端坐标系
答案:B。外参把世界坐标系中的点变换到相机坐标系,表示相机在世界空间中的位置(t)和朝向(R)。像素与图像坐标系之间是内参中的缩放平移关系;相机与像素坐标系由内参矩阵完成;机械臂基座与末端的关系属于机器人运动学范畴。可以理解为外参回答“相机站在哪、朝哪看”,内参回答“看到的景象如何落到底片”。
Q9. 柔性产线对视觉引导系统有哪些工程要求?
- A.支持快速换型← 正确答案
- B.光源需与环境光隔离← 正确答案
- C.精度链路可量化← 正确答案
- D.仅支持单一固定产品
答案:ABC。柔性产线核心是“混流生产、快速换型”,因此视觉系统需要模板库切换、参数化配置;光源要尽量隔离环境光干扰,保证成像稳定;同时要量化标定、手眼、机械臂组成的精度链路,才谈得上系统级优化。产出单一固定品是刚性产线的特征,与柔性相悖——就像流水线餐厅只能做一道菜,而不是灵活点餐。
Q10. PnP 位姿求解至少需要几个非共线的 3D-2D 对应点?
- A.3 个← 正确答案
- B.5 个
- C.6 个
- D.8 个
答案:A。PnP 的经典 P3P 解法只需 3 个非共线对应点即可求解旋转和平移(共线会产生退化解),工程上为提升鲁棒性常使用 4 个及以上点做最小二乘优化。8 点是基础矩阵估计(对极几何)的需求,不是 PnP。就像三点确定一个平面,三点也就足够确定相机的空间姿态,但多点能让结果更稳。