激光跟踪器#

介绍#

激光跟踪器通过采集激光图像,获取焊缝的特征,识别焊缝。机器人获取其识别到的特征信息,实现焊缝的自动监测和校正。实际应用中,可以解决工件摆放误差、工件一致性差、焊接热量导致的焊缝变形等问题。

焊接工艺包支持激光寻位和激光跟踪功能。

激光通讯连接#

使用网线连接机器人控制柜上的网口和激光传感器,将机器人的IP地址与激光传感器的IP配置到同一个网段。如图输入激光传感器的IP和端口号,点击连接。连接成功后会显示连接状态。 各厂家连接设置如下

北京创想:

需要先使用创想的上位机将激光的协议设置为Modbus。连接端口号502

唐山英莱:

端口号设置为5020。

苏州全视:

端口号设置为502

激光传感器控制

可以手动操作激光传感器,打开/关闭激光,获取激光检测到的数据。

../_images/112.jpg

激光标定#

激光传感器的标定用来计算机器人TCP和传感器的位置关系。即根据标定计算的结果,可以将激光识别到的特征点转换到其在机器人坐标系下的位姿。

标定准备:

1、安装好焊枪,调整好焊丝长度为焊接作业过程中使用的长度

2、 根据激光传感器的安装要求和现场情况等安装好激光传感器

3、 准备标定机器人TCP所使用的尖点

4、 准备交换机等网络设备连接激光传感器、激光传感器所用上位机、机器人,设置其在同一网段,确保通讯正常

5、 确定在激光传感器的上位机上能看到激光图像

6、 机器人焊接工艺包传感器设置页面中验证激光开关、获取数据等能正常工作

标定过程:

1、工具(TCP)标定,即标定焊丝末端位置,此时焊丝的长度即为实际焊接时焊丝的长度。标定方法如下:

在机器人的设置页面——工具设置中新建一个TCP,按照4点标定法或者6点标定法

../_images/210.jpg ../_images/38.jpg ../_images/43.jpg ../_images/52.jpg

移动机器人使焊丝末端对准尖点,分别记录四个点位

../_images/62.jpg

点击确定,将计算标定出的TCP坐标以及误差。控制平均误差和最大误差在0.5mm以内。

将标定好的TCP设置为当前TCP

2、 在焊缝上取一个标记点,移动机器人,使其TCP对准标记点,点击记录

../_images/72.jpg

3、 保持机器人姿态不变,打开激光,开启使能,移动机器人,让激光落在标记点上,在标记过程中观察激光软件上的激光图像,依次使激光图像分别为下图的六种状态,记录点位1-6

../_images/82.jpg

4、 点击标定计算,下方会显示标定误差和计算结果。若每个值小于1mm,标定有效,否则重新标定。

../_images/92.jpg

5、 点击保存标定结果,确定后会将计算结果保存。注意:该计算结果存放在机器人当前工程中,建议此时保存下工程,以防丢失。

注意:

1、 标定前需要标定机器人TCP,保证标定精度

2、 标定前,将标定好的工具坐标系设为当前

3、 记录7个点位时,焊丝的长度与标定TCP时一致,也要与焊接过程中焊丝长度保持一致

4、 记录7个点位时,机器人的姿态不能改变

5、 记录这7个点位时,保证激光图像检测稳定

标定精度验证

标定好传感器和机器人后,可以使用单点寻位验证标定的精度。 编写如下程序,使用功能块LaserSearchPose和MoveL。LaserSearchPose将打开并使能激光,获取激光识别到的特征点位信息,转换为其在机器人基座标系下的值,将值赋值给变量。MoveL移动到该变量处。运行程序,检查机器人TCP是否移动到识别到的特征点处。

注意:请保证此时的TCP为上述标定使用的TCP

../_images/102.jpg

编程功能块#

与激光传感器相关的功能块有三个:LaserSerachPose,LaserSearchOffset,LaserTrack。

LaserSearchPose

主要用来获取激光识别到的特征点在机器人基坐标系下的位姿。 该功能块封装了以下操作:选择使用的Job号,打开并使能激光,获取激光识别到的特征点位信息,获取机器人当前TCP在基坐标系下的值,根据标定关系,计算特征点在机器人基坐标系下的位姿信息,并赋值给pose类型变量。若未检测到焊缝,返回nil 配置页面如下

../_images/113.jpg

焊缝模式参数:即Job号,是激光跟踪器端设置并保存的一组参数:如焊缝类型、曝光、检测能力等。

寻位点:计算的结果,可以关联一个pose类型的变量

焊缝特征点偏移:将识别的特征点上加上偏移量,计算偏移后点位转换后的位姿。可以用来处理机器人误差、检测点与焊接工艺不匹配等问题(若激光跟踪器提供了功能,也可以在激光跟踪器端设置)

LaserSearchOffset

主要用来计算三点寻位或四点寻位得到的坐标系的位姿

配置页面如下

../_images/122.jpg

有如下设置项

计算方法:选择三点寻位或者四点寻位

选择点位:关联点位信息

结果:计算得到的结果,关联到pose类型变量

LaserTrack

实现激光跟踪功能。

主要实现功能:打开并使能激光,设置激光使用的Job号,设置补偿方向和提前距离,实时获取焊缝特征点,计算偏差并补偿到实际轨迹上。

配置页面如下

../_images/132.jpg

有如下设置项

焊缝模式参数:Job号

补偿方向:选择Y向或者Z向是否开启补偿

提前距离:设置激光线与焊枪的距离,单位mm。

最大补偿距离限制:示教轨迹和激光测得的轨迹的允许最大偏差

焊缝特征点偏移:将识别的特征点上加上偏移量(若激光跟踪器提供了功能,也可以在激光跟踪器端设置)

编程脚本#

焊接工艺包会增加如下脚本,可以在使用脚本编程时调用

打开激光

_plugin_weld.open_laser()

关闭激光

_plugin_weld.close_laser()

使能激光(创想激光传感器需要调用)

_plugin_weld.enable_laser()

下使能激光(创想激光传感器需要调用)

_plugin_weld.disable_laser()

设置焊缝类型参数(Job号)

_plugin_weld.set_laser_weld_type(type)

寻位,功能同LaserSearchPose功能块,打开激光,获取焊缝特征点,计算其在机器人坐标系下的位姿,关闭激光。

_plugin_weld.search_pose(pose, offset)

pose: pose类型,机器人TCP位姿,单位m, rad

offset: number_list类型, 焊缝特征点偏移量{y, z},默认{0, 0},单位mm

返回值

pose类型,特征点在机器人坐标系下的位姿,单位m, rad,为nil时表示未检测到焊缝

与search_pose类似,不开关激光,获取焊缝特征点,计算其在机器人坐标系下的位姿

_plugin_weld. get_laser_search_pose(pose, offset)

pose: pose类型,机器人TCP位姿,单位m, rad

offset: number_list类型, 焊缝特征点偏移量{y, z},默认{0, 0},单位mm

返回值 pose类型,特征点在机器人坐标系下的位姿,单位m, rad,为nil时表示未检测到焊缝

获取激光原始数据

_plugin_weld.get_laser_raw_data()

返回如下数组{status, y, z, width, depth},分别表示

status: boolean表示是否检测到焊缝

y: number, 焊缝特征点Y向坐标,单位mm

z: number, 焊缝特征点Z向坐标,单位mm

width: number,检测到的焊缝的宽度,单位mm

depth: number,检测到的焊缝的深度,单位mm

激光寻位#

单点寻位

适合应用在点焊等场景

编程示例如下:

../_images/142.jpg

两点寻位

适合应用在间断短焊等场景

../_images/152.jpg

编程示例如下

../_images/162.jpg

三点寻位/四点寻位

基本原理为:根据激光寻位的点位建立了一个工件坐标系,计算其和原有的工件坐标系的偏差,从而得到工件上焊缝的偏移量。可以用于复杂结构件的焊接。四点寻位相比三点寻位可以更好的处理工件的来料误差、组装误差等。

../_images/172.jpg ../_images/17_2.jpg

下面为三点寻位的Demo,四点寻位与三点寻位类似。

../_images/181.jpg

变量定义

变量名

类型

P1

pose

获取到的第一个寻位点

P2

pose

获取到的第二个寻位点

P3

pose

获取到的第三个寻位点

teach_pose

pose

三点寻位计算的结果

g_enable_offset

boolean

控制程序的运行。为false时,用来做

第一次寻位计算初始的工件坐标系;

为true时,执行正常作业流程

g_base_pose

pose

计算得到的初始工件坐标系

g_pose

pose

三次寻位计算的结果

g_offset

pose

与初始坐标系的偏差

程序说明

3行 第一个寻位点

5 行 寻位,获取寻位结果,保存在变量p1

6 行 第二个寻位点

8 行 寻位,获取寻位结果,保存在变量p2

9 行 第三个寻位点

11 行 寻位,获取寻位结果,保存在变量p3

12 行 三点寻位,计算p1,p2,p3确定的坐标系,保存在变量teach_pose

13-16 行 若变量g_enable_offse为false时,将teach_pose的值赋值给g_base_pose;否则,赋值给变量g_pose

17 行 当g_enable_offset为true时执行后续过程

18 行 脚本 使用pose_offset()计算g_base_pose和g_pose的坐标系偏差,并将结果赋值给变量g_offset

20 行 将g_offset作为坐标系偏移量添加到当前坐标系上

21-24 行 实际作业点,使用工件坐标系。

实际使用过程如下: 1、 示教机器人,确定激光的寻位点

2、 摆好工件,将g_enable_offset值设为false,运行程序

3、 在变量区查看g_base_pose的值,新建一个工件坐标系wobj1,工件坐标系使用g_base_pose的值

4、 设置wobj1为当前工件坐标系,以该坐标系作为基准示教工件的作业轨迹,即22-24行的点位

5、 将g_enable_offset值设为true,运行程序,执行正常的作业流程。

上述Demo使用了工件坐标系,通过第一次执行三点寻位计算得到了一个初始的工件坐标系,基于该坐标系示教作业点位。保证若工件由于摆放等发生了一定的偏移,可以计算三点寻位得到的坐标系与初始坐标系的偏差,将该偏差添加到工件坐标系上,使作业轨迹能适应变化。

由于该Demo需要设置工件坐标系,某些情况下示教需要频繁切换坐标系,可能比较繁琐。可以参考如下Demo,使用了RecordPoseTrans功能块,可以都基于基坐标系编程。

../_images/201.jpg

变量定义

变量名

类型

P1

pose

获取到的第一个寻位点

P2

pose

获取到的第二个寻位点

P3

pose

获取到的第三个寻位点

teach_pose

pose

三点寻位计算的结果

g_enable_offset

boolean

控制程序的运行。为false时,用来做

第一次寻位计算初始的工件坐标系;

为true时,执行正常作业流程

g_base_pose

pose

计算得到的初始工件坐标系

g_result_list

pose_list

实际作业点在基坐标系下的位姿

g_way_pose1

pose

第一个作业点

g_way_pose2

pose

第二个作业点

g_way_pose3

pose

第三个作业点

g_way_pose4

pose

第四个作业点

程序说明

3行 第一个寻位点

5 行 寻位,获取寻位结果,保存在变量p1

6 行 第二个寻位点

8 行 寻位,获取寻位结果,保存在变量p2

9 行 第三个寻位点

11 行 寻位,获取寻位结果,保存在变量p3

12 行 三点寻位,计算p1,p2,p3确定的坐标系,保存在变量teach_pose

13行 将teach_pose值赋值给g_pose

14 行 当g_enable_offset为true时执行后续过程

15 行 操作点示教转换,并将结果保存在变量g_result_list

16-19 行 从g_result_list中获取各个点位并将其赋值给各个作业点变量

20-24 行 执行实际作业,点位使用各个作业点变量

实际使用过程如下:

1、 示教机器人,确定激光的寻位点

2、 摆好工件,将g_enable_offset值设为false,运行程序

3、在变量区查看g_base_pose的值, 打开RecordPoseTrans功能块,如图,在输入参考位姿中选择变量g_base_pose,点击“设置为基准”按钮,基准位姿处将显示此时的基准位姿值。

../_images/221.jpg

4、 在操作点偏置中,示教添加作业点位,在输出中选择一个pose_list类型变量存放计算得到的作业点位结果

5、 将g_enable_offset值设为true,运行程序,执行正常的作业流程。

相比上一个Demo,使用变量作为实际作业点位,通过RecordPoseTrans计算点位。以第一次使用得到的坐标系作为基准示教各个作业点位,添加到RecordPoseTrans块中。后续若工件发生了偏移,根据寻位计算的坐标系,通过RecordPoseTrans功能块计算出各个作业点位在基坐标系下的值。

激光跟踪#

当需要在焊接过程中实时检测焊缝的变化,此时就需要使用激光跟踪功能。

如下示例

../_images/231.jpg

程序说明

4行 机器人开启跟踪的点位wp1

5行 起始点寻位,将结果放在变量start中

6行 开启跟踪,设置结束时不关闭跟踪

7行 移动到起弧点

9行 起弧

10行 开启跟踪,设置结束时关闭跟踪

11行 示教一条原始的轨迹wp0

机器人将执行如下操作,打开并使能激光,获取起弧点,打开跟踪并移动到起弧点,起弧,打开跟踪,根据实时获取激光传感器得到的特征点,计算其与示教轨迹的偏差,将偏差量补偿到示教的轨迹上,使机器人TCP按照检测到的焊缝运行。

异常检测#

焊缝有无检测

LaserSearchPose可以判断其返回值是否为nil来判断是否检测到焊缝。示例如下:

../_images/241.jpg

LaserSearchPose将寻位结果放在变量target中,If条件判断target是否为nil来执行检测到焊缝和未检测到焊缝时的逻辑

三/四点寻位偏差过大保护

某些情况下焊缝可能检测错误,导致计算出来的工件坐标系偏差过大,可以增加偏差限制,防止出现撞枪等安全问题。

示例如下:

../_images/251.jpg

Script功能块使用pose_offset脚本计算原有的和新计算坐标系的偏差,增加判断偏差大于某个范围的执行逻辑。