激光跟踪器#
介绍#
激光跟踪器通过采集激光图像,获取焊缝的特征,识别焊缝。机器人获取其识别到的特征信息,实现焊缝的自动监测和校正。实际应用中,可以解决工件摆放误差、工件一致性差、焊接热量导致的焊缝变形等问题。
焊接工艺包支持激光寻位和激光跟踪功能。
激光通讯连接#
使用网线连接机器人控制柜上的网口和激光传感器,将机器人的IP地址与激光传感器的IP配置到同一个网段。如图输入激光传感器的IP和端口号,点击连接。连接成功后会显示连接状态。 各厂家连接设置如下
北京创想:
需要先使用创想的上位机将激光的协议设置为Modbus。连接端口号502
唐山英莱:
端口号设置为5020。
苏州全视:
端口号设置为502
激光传感器控制
可以手动操作激光传感器,打开/关闭激光,获取激光检测到的数据。
激光标定#
激光传感器的标定用来计算机器人TCP和传感器的位置关系。即根据标定计算的结果,可以将激光识别到的特征点转换到其在机器人坐标系下的位姿。
标定准备:
1、安装好焊枪,调整好焊丝长度为焊接作业过程中使用的长度
2、 根据激光传感器的安装要求和现场情况等安装好激光传感器
3、 准备标定机器人TCP所使用的尖点
4、 准备交换机等网络设备连接激光传感器、激光传感器所用上位机、机器人,设置其在同一网段,确保通讯正常
5、 确定在激光传感器的上位机上能看到激光图像
6、 机器人焊接工艺包传感器设置页面中验证激光开关、获取数据等能正常工作
标定过程:
1、工具(TCP)标定,即标定焊丝末端位置,此时焊丝的长度即为实际焊接时焊丝的长度。标定方法见基础设置/TCP标定
将标定好的TCP设置为当前TCP
2、 在焊缝上取一个标记点,移动机器人,使其TCP对准标记点,点击记录
3、 保持机器人姿态不变,打开激光,开启使能,移动机器人,让激光落在标记点上,在标记过程中观察激光软件上的激光图像,依次使激光图像分别为下图的六种状态,记录点位1-6
4、 点击标定计算,下方会显示标定误差和计算结果。若每个值小于1mm,标定有效,否则重新标定。
5、 点击保存标定结果,确定后会将计算结果保存。注意:该计算结果存放在机器人当前工程中,建议此时保存下工程,以防丢失。
注意:
1、 标定前需要标定机器人TCP,保证标定精度
2、 标定前,将标定好的工具坐标系设为当前
3、 记录7个点位时,焊丝的长度与标定TCP时一致,也要与焊接过程中焊丝长度保持一致
4、 记录7个点位时,机器人的姿态不能改变
5、 记录这7个点位时,保证激光图像检测稳定
标定精度验证
标定好传感器和机器人后,可以使用单点寻位验证标定的精度。 编写如下程序,使用功能块LaserSearchPose和MoveL。LaserSearchPose将打开并使能激光,获取激光识别到的特征点位信息,转换为其在机器人基座标系下的值,将值赋值给变量。MoveL移动到该变量处。运行程序,检查机器人TCP是否移动到识别到的特征点处。
注意:请保证此时的TCP为上述标定使用的TCP
编程功能块#
与激光传感器相关的功能块有三个:LaserSerachPose,LaserSearchOffset,LaserTrack。
LaserSearchPose
主要用来获取激光识别到的特征点在机器人基坐标系下的位姿。 该功能块封装了以下操作:选择使用的Job号,打开并使能激光,获取激光识别到的特征点位信息,获取机器人当前TCP在基坐标系下的值,根据标定关系,计算特征点在机器人基坐标系下的位姿信息,并赋值给pose类型变量。若未检测到焊缝,返回nil 配置页面如下
焊缝模式参数:即Job号,是激光跟踪器端设置并保存的一组参数:如焊缝类型、曝光、检测能力等。
寻位点:计算的结果,可以关联一个pose类型的变量
焊缝特征点偏移:将识别的特征点上加上偏移量,计算偏移后点位转换后的位姿。可以用来处理机器人误差、检测点与焊接工艺不匹配等问题(若激光跟踪器提供了功能,也可以在激光跟踪器端设置)
LaserSearchOffset
主要用来计算三点寻位或四点寻位得到的坐标系的位姿
配置页面如下
有如下设置项
计算方法:选择三点寻位或者四点寻位
选择点位:关联点位信息
结果:计算得到的结果,关联到pose类型变量
LaserTrack
实现激光跟踪功能。
主要实现功能:打开并使能激光,设置激光使用的Job号,设置补偿方向和提前距离,实时获取焊缝特征点,计算偏差并补偿到实际轨迹上。
配置页面如下
有如下设置项
焊缝模式参数: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
激光寻位#
单点寻位
适合应用在点焊等场景
编程示例如下:
两点寻位
适合应用在间断短焊等场景
编程示例如下
三点寻位/四点寻位
基本原理为:根据激光寻位的点位建立了一个工件坐标系,计算其和原有的工件坐标系的偏差,从而得到工件上焊缝的偏移量。可以用于复杂结构件的焊接。四点寻位相比三点寻位可以更好的处理工件的来料误差、组装误差等。
下面为三点寻位的Demo,四点寻位与三点寻位类似。
变量定义
变量名 |
类型 |
|
---|---|---|
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功能块,可以都基于基坐标系编程。
变量定义
变量名 |
类型 |
|
---|---|---|
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,点击“设置为基准”按钮,基准位姿处将显示此时的基准位姿值。
4、 在操作点偏置中,示教添加作业点位,在输出中选择一个pose_list类型变量存放计算得到的作业点位结果
5、 将g_enable_offset值设为true,运行程序,执行正常的作业流程。
相比上一个Demo,使用变量作为实际作业点位,通过RecordPoseTrans计算点位。以第一次使用得到的坐标系作为基准示教各个作业点位,添加到RecordPoseTrans块中。后续若工件发生了偏移,根据寻位计算的坐标系,通过RecordPoseTrans功能块计算出各个作业点位在基坐标系下的值。
激光跟踪#
当需要在焊接过程中实时检测焊缝的变化,此时就需要使用激光跟踪功能。
如下示例
程序说明
4行 机器人开启跟踪的点位wp1
5行 起始点寻位,将结果放在变量start中
6行 开启跟踪,设置结束时不关闭跟踪
7行 移动到起弧点
9行 起弧
10行 开启跟踪,设置结束时关闭跟踪
11行 示教一条原始的轨迹wp0
机器人将执行如下操作,打开并使能激光,获取起弧点,打开跟踪并移动到起弧点,起弧,打开跟踪,根据实时获取激光传感器得到的特征点,计算其与示教轨迹的偏差,将偏差量补偿到示教的轨迹上,使机器人TCP按照检测到的焊缝运行。
异常检测#
焊缝有无检测
LaserSearchPose可以判断其返回值是否为nil来判断是否检测到焊缝。示例如下:
LaserSearchPose将寻位结果放在变量target中,If条件判断target是否为nil来执行检测到焊缝和未检测到焊缝时的逻辑
三/四点寻位偏差过大保护
某些情况下焊缝可能检测错误,导致计算出来的工件坐标系偏差过大,可以增加偏差限制,防止出现撞枪等安全问题。
示例如下:
Script功能块使用pose_offset脚本计算原有的和新计算坐标系的偏差,增加判断偏差大于某个范围的执行逻辑。