核心概念:什么是视觉追踪?
视觉追踪就是让机器人的“眼睛”(相机)和“手”(机械臂)协同工作,去跟随一个动态变化的目标。
传统工业机器人通常是执行预设的、固定路径的程序,而视觉追踪则打破了这种限制,赋予了机器人适应动态环境的能力。
工作流程如下:
- 示教: 操作员首先手动引导机器人到达一个理想的“目标位置”(对准传送带上的某个产品,或者抓取一个特定姿态的零件),这个位置就是机器人期望追踪的目标点。
- 启动追踪: 机器人将这个示教点作为参考,同时视觉系统开始持续监控目标物体。
- 实时反馈: 相机不断捕捉目标物体的当前位置和姿态,并将这些数据发送给机器人控制器。
- 动态调整: 机器人控制器接收到视觉数据后,会实时计算出机器人末端工具需要移动的偏移量,并立即调整机器人的运动,使其末端工具始终保持在相对于目标物体的那个理想示教位置上。
核心组件
要实现视觉追踪,需要以下几个关键部分的协同工作:
-
ABB 机器人控制器:
这是大脑,负责执行运动程序、处理视觉数据并发出运动指令,它需要支持相应的选项包。
-
视觉系统:
- 相机: 可以是ABB的集成相机(如FlexEye、Eye 500),也可以是第三方通过标准接口(如CIP协议)连接的相机,相机负责捕捉图像。
- 视觉软件: 运行在相机或独立PC上的视觉算法,用于在图像中识别、定位目标物体,并计算出其在相机坐标系下的位置和姿态。
-
通信接口:
- 这是连接“眼睛”和“大脑”的神经,ABB主要支持以下两种方式:
- PC SDK (Software Development Kit): 这是最灵活、最强大的方式,通常由系统集成商或开发者使用,一台PC运行视觉软件,通过以太网与机器人控制器通信,PC将计算出的目标坐标(X, Y, Z, Rx, Ry, Rz)发送给机器人。
- Integrated Vision (集成视觉): 这是ABB提供的“开箱即用”的解决方案,使用ABB自带的相机和视觉控制器(如IRC5控制器上的Vision选项),配置更简单,但对视觉算法的定制性稍差。
- 这是连接“眼睛”和“大脑”的神经,ABB主要支持以下两种方式:
-
机器人程序:
- 使用特定的指令来启动、监控和停止追踪过程,最核心的指令是
Track。
- 使用特定的指令来启动、监控和停止追踪过程,最核心的指令是
如何实现视觉追踪(基本步骤)
以最常用的 PC SDK 方式为例,实现追踪的基本步骤如下:
步骤 1:准备工作
- 硬件安装: 将相机牢固地安装在机器人工作范围内的一个固定位置,确保它能清晰地看到目标物体。
- 网络连接: 确保运行视觉软件的PC与机器人控制器在同一个局域网内,并配置好IP地址。
- 软件安装: 在PC上安装ABB RobotWebServices和PC SDK,在机器人控制器上安装相应的选项包(如PC SDK选项)。
步骤 2:示教目标位置
这是最关键的一步,它定义了“追踪成功”的标准。
- 手动慢速移动机器人。
- 将机器人末端工具(如夹爪)移动到你期望它相对于目标物体保持的位置和姿态。
- 你想让夹爪的中心正好对准产品中心,并且夹爪的平面与产品顶面平行。
- 在该位置,使用
pDisp指令(或类似功能)创建一个“位移”数据,这个数据记录了当前工具中心点相对于目标物体的理想关系。VAR robtarget pDisp; ! 声明一个robtarget变量来存储位移数据 ... pDisp := pDisp; ! 手动将机器人移动到目标位置后,执行此行来捕获当前TCP的位置和姿态
注意: 这里捕获的
pDisp是一个相对关系,而不是一个绝对的坐标,它代表的是“当目标物体在相机坐标系原点时,TCP应该在哪里”。
步骤 3:编写RAPID程序
RAPID程序负责与PC通信,并调用 Track 指令。
MODULE MainModule
! PERSISTENT VARIABLES (在程序重启后仍保留)
PERS persdata pcSDK PersPC := ["PC_IP_ADDRESS", "ROBOT_IP_ADDRESS", "PORT", "TIMEOUT"];
PERS persobject pcSDK PersObj;
! VARIABLES
VAR robtarget pDisp; ! 存储示教的位移数据
VAR bool bTrackingActive;
VAR num nX, nY, nZ, nRx, nRy, nRz; ! 用于接收PC发送的目标坐标
PROC Main()
! 1. 连接到视觉PC
TPWrite "Connecting to Vision PC...";
PersObj := pcSDKConnect(PersPC);
IF PersObj = NULL THEN
TPWrite "Connection failed!";
RETURN;
ELSE
TPWrite "Connected successfully.";
ENDIF
! 2. 启动追踪
! 假设pDisp已经通过示教程序填入了正确的值
bTrackingActive := TRUE;
Track Start pDisp, PersObj, bTrackingActive;
! 3. 主循环,持续追踪
WHILE bTrackingActive DO
! 从PC读取最新的目标位置数据
pcSDKReadPos(PersObj, nX, nY, nZ, nRx, nRy, nRz);
! 检查数据是否有效
IF pcSDKIsValid(PersObj) THEN
! 将读取到的数据转换为robtarget
! 注意:这里通常需要一个固定的参考点(如相机坐标系原点)
! 然后加上偏移量得到实际目标点
! 这是一个简化的示例,实际应用中会更复杂
! robtarget pTarget := [[nX, nY, nZ], [nRx, nRy, nRz]];
! MoveJ pTarget, v1000, z50, tool0; ! 这种方式不常用,通常Track指令内部处理
! Track指令会自动处理这些数据,机器人会自动移动
TPWrite "Tracking active. Target received.";
ELSE
TPWrite "No valid target from PC!";
ENDIF
WaitTime 0.05; ! 等待50ms,控制循环频率
ENDWHILE
! 4. 停止追踪
Track Stop;
pcSDKDisconnect(PersObj);
TPWrite "Tracking stopped and disconnected.";
ENDPROC
ENDMODULE
关键RAPID指令:
Track Start pDisp, obj, active_flag: 启动追踪。pDisp: 你在步骤2中示教的位移数据。obj: 通过PC SDK建立的对象连接。active_flag: 一个布尔变量,用于监控追踪状态,当PC连接断开或数据无效时,它会变为FALSE。
Track Stop: 停止追踪。pcSDKConnect(): 建立与PC的连接。pcSDKReadPos(): 从PC读取目标的位置和姿态数据。
典型应用场景
视觉追踪技术极大地扩展了机器人的应用边界。
-
码垛/卸垛:
- 场景: 货物在传送带上移动,机器人需要在传送带上方对每个包裹进行抓取,然后放到托盘上。
- 优势: 无需精确控制传送带速度,或为每个包裹创建固定的示教点,机器人可以“盯着”包裹,实时调整位置进行抓取。
-
焊接/涂胶:
- 场景: 在汽车制造中,车身骨架在流水线上移动,机器人需要沿着车身的接缝进行焊接或涂胶。
- 优势: 确保即使在生产线有轻微抖动或速度变化时,焊枪/胶枪也能精确地跟随接缝路径,保证质量。
-
装配:
- 场景: 操作员将一个零件放到工装台上,机器人需要实时找到该零件的位置,并抓取它进行下一步装配。
- 优势: 无需人工将零件精确地放置到固定位置,提高了生产效率和灵活性。
-
打磨/去毛刺:
- 场景: 铸件在输送带上移动,机器人需要跟随铸件的轮廓进行打磨。
- 优势: 适应铸件初始位置的不一致性,确保整个表面都被均匀处理。
挑战与注意事项
- 延迟: 整个系统(相机拍照 -> 图像处理 -> 数据传输 -> 机器人计算 -> 机器人运动)存在固有的延迟,这个延迟必须非常小(通常要求<100ms),否则机器人会“追丢”目标或反应滞后。
- 标定: 相机坐标系和机器人坐标系之间的标定必须非常精确,任何微小的标定误差都会在追踪过程中被放大,导致位置偏差。
- 视野: 相机的视野必须足够大,能够保证在目标移动时始终不丢失目标,这涉及到相机安装位置和焦距的选择。
- 目标特征: 视觉系统能否稳定、快速地识别目标,取决于目标物体是否有足够独特和清晰的特征(如颜色、形状、纹理等)。
- 速度与加速度: 追踪的目标移动速度和加速度不能超过机器人的物理极限和动态性能。
ABB机器人的视觉追踪功能是一项将机器人从“固定程序执行者”转变为“智能自适应操作者”的关键技术,它通过整合机器人控制器、视觉系统和强大的RAPID编程能力,实现了对动态目标的实时跟随,极大地提升了自动化生产线的灵活性、效率和鲁棒性,虽然实现起来需要仔细的配置和调试,但其带来的应用价值是巨大的。
标签: ABB机器人视觉追踪定位精度优化 ABB机器人视觉追踪实现精准定位方法 ABB机器人视觉追踪精准定位技术要点