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

**URL:** https://forum.universal-robots.com/t/tcp-rx-ry/32359
**Category:** 中文提问(Questions in Chinese)
**Created:** [January 26, 2024, 6:54am UTC](https://forum.universal-robots.com/t/tcp-rx-ry/32359 "2024-01-26T06:54:43Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![chenj](https://avatars.discourse-cdn.com/v4/letter/c/c57346/32.png) [@chenj](https://forum.universal-robots.com/u/chenj)
#### Post date: [January 26, 2024, 6:54am UTC](https://forum.universal-robots.com/t/tcp-rx-ry/32359/1 "2024-01-26T06:54:43Z")

</div>

你好。我目前需求是要实现类似于示教器里面“移动“选项卡的工具特征下，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的原因。请问下要如何克服这个问题？

---

<div class="post-metadata">

### Author: ![funing.hu](https://avatars.discourse-cdn.com/v4/letter/f/9de053/32.png) [@funing.hu](https://forum.universal-robots.com/u/funing.hu)
#### Post date: [February 3, 2024, 5:46am UTC](https://forum.universal-robots.com/t/tcp-rx-ry/32359/2 "2024-02-03T05:46:39Z")

</div>

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

```auto
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试试看。

 ![image](https://us1.discourse-cdn.com/flex020/uploads/universal_robots/original/2X/8/8c781ba8fd0df3d1587c3b80cddd11d0110a657b.png)

---

<div class="post-metadata">

### Author: ![chenj](https://avatars.discourse-cdn.com/v4/letter/c/c57346/32.png) [@chenj](https://forum.universal-robots.com/u/chenj)
#### Post date: [February 23, 2024, 2:00am UTC](https://forum.universal-robots.com/t/tcp-rx-ry/32359/3 "2024-02-23T02:00:46Z")

</div>

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