脚本实现类似示教器tcp方向rx,ry功能

你好。我目前需求是要实现类似于示教器里面“移动“选项卡的工具特征下,TCP方向RX,RY方向移动的编程实现,目前我的代码实现如下
os = get_tcp_offset()
set_tcp(p[{TcpOffsetX},0,{TcpOffsetZ + len},os[0],os[1],os[2]])
np = get_actual_tcp_pose()
tp = pose_trans(np, p[0,0,0,{offsetRx},{offsetRy},{offsetRz}])
while get_inverse_kin_has_solution(tp):
movej(tp, a ={_acc}, v = {_vel}, t = 0, r = 0)
tp = pose_trans(tp, p[0,0,0,{offsetRx},{offsetRy},{offsetRz}])
end

其中,offsetRX,offsetRy, offsetRz每次只有一个数值有效,其他两个数值为0.
中间可能会有stopj的指令暂停。
目前的移动效果一开始还可以,但是如果重复移动几次,位置就会发生偏移导致,我猜测原因可能是movej的原因。请问下要如何克服这个问题?

Hello Chenj, 我用如下程序运行,

Program
   BeforeStart
     count≔0
     directionFlag≔ False 
     originalPose≔get_actual_tcp_pose()

   Robot Program
     If directionFlag
       movel(pose_trans(get_actual_tcp_pose(),p[0,0,0,d2r(-10),0,0]),a=1.2,v=0.25)
     Else
       movel(pose_trans(get_actual_tcp_pose(),p[0,0,0,d2r(10),0,0]),a=1.2,v=0.25)
     count≔count + 1

     If mod(count,4)==0
       directionFlag≔ not directionFlag
     Wait: 2.0
     If count == 24
       finalPose≔get_actual_tcp_pose()
       halt

得到如下结果,所以你用movel试试看。

我现在是使用speedl指令实现的,movej,movel,movep(movec)都有点问题。movec做一个平面上的圆周运动还行,但是3维的运动不支持。