CS机器人获取用户坐标下当前位姿
1.简介
由于CS系列没有直接获取用户坐标下当前位姿的指令,故根据所需求编写对应获取程序,方便用户后续使用。
2.操作流程
根据位姿变换指令,将base坐标系下的位姿(下方示例中get_actual_tcp_pose())转换成user坐标系(下方示例中坐标系_1)下的位姿(var_1)
var_1:= pose_trans(pose_inv(坐标系_1),get_actual_tcp_pose())
# 得到在用户坐标系下的位姿
2.1获取用户坐标系下的位姿
这里用到的是赋值指令将转换完成的值赋值到var_1,也可以直接使用脚本指令赋值转换。
程序解析
var_1:= pose_trans(pose_inv(坐标系_1),get_actual_tcp_pose())
# 得到在用户坐标系下的位姿
var_1:= [var_1[0]*1000,var_1[1]*1000,var_1[2]*1000,r2d(var_1[3]),r2d(var_1[4]),r2d(var_1[5])]
# 视情况将M单位转换为mm,弧度转角度,以供后续使用
2.2用户坐标系下的位姿转换为基座下的位姿
根据位姿变换指令,将user坐标系(坐标系_1)下的位姿(下方示例中var_1)转换成base坐标系下的位姿(var_2)
程序解析
var_1:= pose_trans(pose_inv(坐标系_1),get_actual_tcp_pose())
# 得到在用户坐标系下的位姿var_1
var_2:= pose_trans(坐标系_1,var_1)
# 转换为基座标系下的位姿var_2
3. 常见问题解答
3.1数据单位转换
机器人中获取的位姿数据单位,X Y Z是M米为单位,RX RY RZ是以rad弧度为单位;所以在运行点位数据时也同样需要注意将计量单位转换为M米和rad弧度。
例:
var_1:= [var_1[0]*1000,var_1[1]*1000,var_1[2]*1000,r2d(var_1[3]),r2d(var_1[4]),r2d(var_1[5])]
# 视情况将M单位转换为mm,弧度转角度,以供后续使用
3.2指令如何获取
上述指令脚本内容可查看CS脚本手册,具体参数手册都有详细解析,指令编辑框内有一些常用的指令函数,例如位姿变换获取当前位姿等等可直接插入使用。
4.示例
示例内容:获取用户坐标系位姿后,运行至该点的Z方向20mm处。
获取到用户坐标下位姿之后,可更改该数据,插入moveL指令(位姿数据用movel指令,关节数据用movej指令)路点类型选择为可变路点。
程序解析
var_1:= pose_trans(pose_inv(坐标系_1),get_actual_tcp_pose())
# 得到在用户坐标系下的位姿var_1
var_1:= [var_1[0],var_1[1],var_1[2]+0.02,var_1[3],var_1[4],var_1[5]]
# Z方向增加20mm
MoveL
var_1
#直线移动指令
#移动的路点