工业相机引导ABB机器人抓取系统设计与实现

引言

在现代工业自动化中,视觉引导机器人(Vision-Guided Robotics, VGR)技术被广泛应用于物料抓取、装配、分拣等场景。本文将以工业相机引导ABB机器人抓取为例,详细介绍系统的设计思路、相机识别程序、机器人控制程序以及二者的协同工作流程。


系统概述

本系统由以下部分组成:

  1. 工业相机:用于识别物料的位置、姿态和类型。
  2. 视觉处理系统:运行图像处理算法,提取物料特征并计算坐标。
  3. ABB机器人:根据视觉系统的引导,完成物料的抓取和放置。
  4. PLC控制系统:协调相机、视觉系统和机器人的工作流程。
  5. 通信模块:实现相机、视觉系统、机器人和PLC之间的数据交互。

硬件配置

  • 工业相机:Basler ace 2(高分辨率、高帧率)
  • 视觉处理系统:PC运行Halcon图像处理库
  • 机器人:ABB IRB 120(6轴工业机器人)
  • PLC:三菱FX5U-64MT/ES
  • 通信模块:以太网通信(TCP/IP协议)

软件配置

  • 相机控制软件:Basler Pylon
  • 视觉处理软件:Halcon
  • 机器人控制软件:ABB RobotStudio
  • PLC编程软件:GX Works3
  • 通信协议:TCP/IP、Modbus TCP

系统工作流程

  1. 相机拍照:工业相机拍摄物料图像。
  2. 图像处理:视觉系统识别物料的位置、姿态和类型。
  3. 坐标转换:将图像坐标转换为机器人坐标系下的坐标。
  4. 机器人抓取:ABB机器人根据视觉系统的引导,抓取物料并放置到指定位置。
  5. 状态反馈:机器人完成动作后,反馈状态给PLC,触发下一步操作。

程序设计

1. 相机拍照与图像处理(Halcon程序)

以下是一个简单的Halcon程序示例,用于识别物料的位置和姿态。

* 读取图像
read_image(Image, 'part_image.png')

* 转换为灰度图像
rgb1_to_gray(Image, GrayImage)

* 阈值分割
threshold(GrayImage, Region, 128, 255)

* 形态学处理
closing_circle(Region, RegionClosing, 5.5)

* 提取轮廓
connection(RegionClosing, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 100, 1000)

* 计算物料中心坐标和角度
area_center(SelectedRegions, Area, Row, Column)
orientation_region(SelectedRegions, Phi)

* 输出结果
disp_message(3600, 'Part detected at (' + Row + ',' + Column + ')', 'window', 12, 12, 'black', 'true')

2. 坐标转换与通信(Python程序)

将Halcon计算的图像坐标转换为机器人坐标系下的坐标,并通过TCP/IP发送给机器人。

import socket

# 坐标转换函数
def image_to_robot_coords(row, col, phi):
    # 假设相机与机器人的标定参数已知
    scale_x = 0.1  # 像素到毫米的转换系数
    scale_y = 0.1
    offset_x = 100  # 相机坐标系与机器人坐标系的偏移
    offset_y = 50

    robot_x = col * scale_x + offset_x
    robot_y = row * scale_y + offset_y
    robot_phi = phi  # 角度直接传递

    return robot_x, robot_y, robot_phi

# 与机器人通信
def send_coords_to_robot(x, y, phi):
    robot_ip = '192.168.1.10'
    robot_port = 5000

    # 创建TCP连接
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((robot_ip, robot_port))

    # 发送坐标数据
    data = f"{x},{y},{phi}"
    sock.send(data.encode())

    # 关闭连接
    sock.close()

# 示例调用
row, col, phi = 200, 300, 45  # Halcon计算的图像坐标
robot_x, robot_y, robot_phi = image_to_robot_coords(row, col, phi)
send_coords_to_robot(robot_x, robot_y, robot_phi)

3. 机器人抓取程序(ABB RAPID程序)

ABB机器人根据接收到的坐标数据,执行抓取动作。

MODULE MainModule
    VAR socketdev client_socket;
    VAR string received_data;
    VAR num robot_x, robot_y, robot_phi;

    PROC main()
        ! 初始化TCP连接
        SocketCreate client_socket;
        SocketConnect client_socket, "192.168.1.20", 5000;

        ! 接收坐标数据
        SocketReceive client_socket, received_data;
        ParseCoords received_data, robot_x, robot_y, robot_phi;

        ! 移动到目标位置
        MoveJ Offs(pHome, robot_x, robot_y, 0), v1000, fine, tool0;
        MoveJ Offs(pHome, robot_x, robot_y, -50), v500, fine, tool0;

        ! 抓取物料
        SetDO Gripper, 1;
        WaitTime 0.5;

        ! 返回初始位置
        MoveJ pHome, v1000, fine, tool0;

        ! 关闭TCP连接
        SocketClose client_socket;
    ENDPROC

    PROC ParseCoords(string data, OUT num x, OUT num y, OUT num phi)
        ! 解析坐标数据
        VAR num index1, index2;
        index1 := StrFind(data, 1, ",");
        index2 := StrFind(data, index1 + 1, ",");
        x := StrToVal(StrPart(data, 1, index1 - 1));
        y := StrToVal(StrPart(data, index1 + 1, index2 - index1 - 1));
        phi := StrToVal(StrPart(data, index2 + 1, StrLen(data) - index2));
    ENDPROC
ENDMODULE

4. PLC控制程序(三菱GX Works3程序)

PLC负责协调相机、视觉系统和机器人的工作流程。

// 启动相机拍照
LD X0  // 检测到物料
OUT Y0  // 触发相机拍照

// 接收视觉系统数据
LD X1  // 视觉系统完成处理
MOV D100 D10  // 存储物料X坐标
MOV D101 D11  // 存储物料Y坐标
MOV D102 D12  // 存储物料角度

// 发送数据给机器人
LD X2  // 数据准备完成
OUT Y1  // 触发机器人抓取

// 接收机器人状态反馈
LD X3  // 机器人完成抓取
OUT Y2  // 触发下一步操作

系统调试与优化

  1. 相机标定:确保相机坐标系与机器人坐标系的精确转换。
  2. 通信测试:测试TCP/IP通信的稳定性和实时性。
  3. 路径规划优化:优化机器人的运动路径,提高抓取效率。
  4. 异常处理:增加对通信失败、抓取失败等异常情况的处理逻辑。

结论

本文详细介绍了工业相机引导ABB机器人抓取系统的设计与实现,涵盖了相机识别、坐标转换、机器人控制以及PLC协调等多个环节。通过该系统,可以实现高效、精准的物料抓取,为工业自动化提供了强有力的技术支持。


参考文献

  • Halcon图像处理库文档
  • ABB RobotStudio用户手册
  • 三菱FX5U系列PLC编程手册
  • Python Socket编程指南

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐