EC机器人坐标偏移
1. 简介
在实际应用中有很多地方,需要很多偏移位置,如:相机发过来的相对位置,进行位置相加等
2. 操作流程
JBI程序方法一
指令介绍
程序介绍
①沿着直角坐标系偏移,P变量存储的是关节坐标,如果我们想进行XYZ方向进行加减,则需要指定直角坐标系,则
P002(0),P002(1),P002(2),P003(3),P004(4),P005(5)分别表示机器人的X,Y,Z,RX,RY,RZ。下面是以P1为基准,Z方向偏移5mm。
SET P002 P001
// 将 P002 设为 P001 的值
SET D001 5
// 将 D001 设为 5
CCOOD CART
// 设置坐标系为笛卡尔坐标系
ADD P002(2) D001
// 将 D001 的值加到 P002 的第二个元素上
MOVL P002 V=100MM/S CR=0.000MM
// 以 100 mm/s 的速度和 0.000 mm 的拐角半径直线移动到 P002 的位置
②关节进行偏移,则P002(0),P002(1),P002(2),P003(3),P004(4),P005(5)分别表示机器人的J1,J2,J3,J4,J5,J6。下图是以P1为基准,3轴偏移5度。
SET P002 P001
// 将 P002 设为 P001 的值
SET D001 5
// 将 D001 设为 5
CCOOD JOINT
// 设置坐标系为关节坐标系
ADD P002(2) D001
// 将 D001 的值加到 P002 的第二个元素上
MOVL P002 V=100MM/S CR=0.000MM
// 以 100 mm/s 的速度和 0.000 mm 的拐角半径直线移动到 P002 的位置
③沿着工具坐标系进行偏移,则P002(0),P002(1),P002(2),P003(3),P004(4),P005(5)分别表示机器人沿着工具坐标方向的X,Y,Z,RX,RY,RZ。下图是以P1为基准,Z沿着工具1的Z方向偏移5mm。
SET P002 P001
// 将 P002 设为 P001 的值
SET D001 5
// 将 D001 设为 5
CCOOD TOOL#(0)
// 设置坐标系为工具坐标系0
ADD P002(2) D001
// 将 D001 的值加到 P002 的第二个元素上
MOVL P002 V=100MM/S CR=0.000MM
// 以 100 mm/s 的速度和 0.000 mm 的拐角半径直线移动到 P002 的位置
④沿着用户坐标系进行偏移,则P002(0),P002(1),P002(2),P003(3),P004(4),P005(5)分别表示机器人沿着用户坐标方向的X,Y,Z,RX,RY,RZ。下图是以P1为基准,Z沿着用户1的Z方向偏移5mm。
SET P002 P001
// 将 P002 设为 P001 的值
SET D001 5
// 将 D001 设为 5
CCOOD USER#(0)
// 设置坐标系为用户坐标系0
ADD P002(2) D001
// 将 D001 的值加到 P002 的第二个元素上
MOVL P002 V=100MM/S CR=0.000MM
// 以 100 mm/s 的速度和 0.000 mm 的拐角半径直线移动到 P002 的位置
注:CCOOD目前只能配合P变量使用,无法搭配V变量,如CCOOD USER#(1) ADD V002(2) 5,这个指令无法沿着用户坐标系进行偏移。
JBI程序方法二
指令介绍
程序介绍
①沿着工具坐标系偏移,利用右乘。新姿态在原有的姿态的基础上右乘,相当于绕当前TCP的坐标系旋转。下图先设定了当前运行的工具号1,所以计算出来的新V1是以V1为基准绕着工具1的TCP的Z方向偏移5mm。
// 设置当前运行工具号1
SETTOOLNUMBER TF=1
// 设置当前使用的工具号为1
SETPOSE V002 0,0,5,0,0,0
// 设置变量 V002 的姿态,其中平移量为 (0,0,5) 和旋转量为 (0,0,0)
POSEMUL V001 V002
// 将姿态 V002 作为偏移量应用到 V001 上,结果存储在 V001 中
MOVL V001 V=200MM/S CR=0.000MM
// 以 200 mm/s 的速度和 0.000 mm 的拐角半径直线移动到 V001 的位置
②沿着基坐标偏移,利用左乘。新姿态在原有的姿态的基础上左乘,相当于绕固定坐标系(基座标)旋转。
SETPOSE V002 0,0,5,0,0,0
// 设置变量 V002 的姿态,其中平移量为 (0,0,5) 和旋转量为 (0,0,0)
// V2 是偏移量,机器人左乘,绕基坐标系进行旋转偏移
POSEMUL V002 V001
// 将姿态 V001 作为偏移量应用到 V002 上,结果存储在 V002 中
MOVL V002 V=200MM/S CR=0.000MM
// 以 200 mm/s 的速度和 0.000 mm 的拐角半径直线移动到 V002 的位置
注:因为V变量只能保存基坐标系下的值,所以机器人只能沿着基坐标系进行偏移.
JBI程序第三种方法
指令介绍
SETPOSE V000 110.2887407,348.4875831,302.4088640,3.1119136,0.0000069,-0.5935836 USER#(0)
把机器人当前位姿基于用户坐标系的空间坐标值的形式保存在V0变量中(注意:需要选中用户坐标系,如不选择默认基座标)
ADD V000(0) 50
基于V0的X方向,加50mm
MOVEL V=200.0MM/S CR=0.0MM A=100MM/S² D=100MM/S² USER#(0) V000
基于用户坐标系,运行到V0位置。注意:此点位需使用MOVEL,并且选中对应的用户坐标系
程序
SETPOSE V000 110.2887407,348.4875831,302.4088640,3.1119136,0.0000069,-0.5935836 USER#(0)
//把机器人当前位姿基于用户坐标系的空间坐标值的形式保存在V0变量中(注意:需要选中用户坐标系)
ADD V000(0) 50
//基于V0的X方向,加50mm
MOVEL V=200.0MM/S CR=0.0MM A=100MM/S² D=100MM/S² USER#(0) V000
//基于用户坐标系,运行到V0位置。
lua程序方法
指令介绍
①变量基于基座标偏移
(1)获取全局变量
(2)计算位姿偏移
(3)获取用户坐标系位姿
程序介绍
基于基座坐标系偏移
脚本参考
-- 首先将当前位姿保存到V变量里面
X,Y,Z,RX,RY,RZ=get_global_variable("V1")
-- 获取全局变量 "V1" 的值,并将其赋值给 X, Y, Z, RX, RY, RZ
-- 设置变量至 V2
set_global_variable("V2",X+10,Y,Z+10,RX,RY,RZ)
-- 将偏移数值的值设置为全局变量 "V2"
基于工具坐标系偏移
脚本参考
-- 首先将当前位姿保存到V变量里面
X,Y,Z,RX,RY,RZ=get_global_variable("V1")
-- 获取全局变量 "V1" 的值,并将其赋值给 X, Y, Z, RX, RY, RZ
-- 计算出V1在工具坐标系1偏移 {50,0,0,0,0,0} 的值
v2_tool=pose_mul(v1,{50,0,0,0,0,0})
-- 计算出 v1 在工具坐标系中偏移 {50,0,0,0,0,0} 后的值,并将结果存储在 v2_tool 中
-- 设置变量至 p2
set_global_variable("V2",X,Y,Z,RX,RY,RZ)
-- 将偏移数值的值设置为全局变量 "V2"
基于用户坐标系偏移
脚本参考
-- 首先将当前位姿保存到V变量里面
X,Y,Z,RX,RY,RZ=get_global_variable("V1")
-- 获取全局变量 "V1" 的值,并将其赋值给 X, Y, Z, RX, RY, RZ
user1=get_user_frame(1)
-- 获取用户坐标系1的值并赋值给 user1
user1_v1 = convert_pose_from_cart_to_user({X,Y,Z,RX,RY,RZ},user1)
-- 将笛卡尔坐标 {X, Y, Z, RX, RY, RZ} 转换到用户坐标系 user1,结果存储在 user1_v1 中
user1_v2 = pose_mul({50,0,0,0,0,0},user1_v1)
-- 计算出 user1_v1 在用户坐标系中偏移 {50,0,0,0,0,0} 后的值,并将结果存储在 user1_v2 中
v2 = convert_pose_from_user_to_cart(user1_v2,user1)
-- 将 user1_v2 从用户坐标系转换回笛卡尔坐标系,结果存储在 v2 中
set_global_variable("V2",v2[1],v2[2],v2[3],v2[4],v2[5],v2[6])
-- 将 v2 的值设置为全局变量 "V2"