Rtde中根据工具末端偏移量控制机器人运动的函数

我使用了ur_rtde控制机器人以保证实时性,现在想实现基于传感器拖动的功能,我们的算法能够算出工具末端的偏移量,但是需要转换成基坐标系下的坐标才能servoL,但是这样我就要先把偏移量发送给机器人经过posetrans转化获取到上位机再下发servoL,通讯时间就无法满足了,是不是有一个函数能够直接将这个偏移量发送给机器人,机器人直接移动就可以了,我看有一个setTcp()函数,是这个吗,但是我发送偏移量下去机器人没有移动

Hi @warnerking ,

你说的ServoL是什么指令?这个应该不在UR script手册中

Set_TCP不是你需要的功能, 它是用来设定TCP相对于tool flange的offset用

你可以参考script手册servoj指令, 如果你能提供pose或者joint位置与每个位置的时间间隔

servoj就能符合你要的轨迹与速度进行移动

Thanks

ServoL是你们ur_rtde库提供的函数接口,里面就带有求逆解的功能,,等于(servoj(get_inverse_kin(pose));
我使用了RTDE功能库,因为我只能计算出工具末端偏移的姿态,需要使用posetrans(get_forward_kin(),pose)转换一一遍,就想知道你们有没有类似这个功能直接封装的函数

Hi,

注意到你使用的是ur_rtde工具

由于ur_rtde并不是UR官方开发的工具, 建议可以到下述地方询问看看

https://sdurobotics.gitlab.io/ur_rtde/

那请问有能够基于工具末端偏移量移动机器人的指令吗?像一些其他家机器人都会有这样封装好的函数或指令,谢谢您

Hi,

不确定是否理解你的问题正确, 不过UR本身透过script里的set_tcp()来决定启用的TCP与设定此TCP与法兰中心的偏移量, 之后所有的移动指令movej movL servoJ…等, 都是用此启用的TCP相对于base坐标系进行移动, 也就是说只要启用的TCP偏移设定描述正确, 之后所有的运动都是基于此TCP相对于base坐标进行移动

Thanks

可能理解的有一点误差,我的意思是有一个像servoj类似的控制机器人运动的指令,但是此指令的参数是计算出来的机器人末端工具的偏移量,机器人根据这个偏移值来运动,不知道这样说你能理解吗,就像Transpose这个函数一样会把工具坐标系转换成基座标系下的值从而servoj,我不想经过这一步而是直接让机器人作末端偏移移动

Hi,

就我所知UR的Script目前只提供Pose_add, Pose_trans这两种方式做坐标转换, 所有的运动指令位置输入都要转换到base或者joint坐标系

不过我看到ur_rtde的API有提供poseTrans, 这个能解决你的转换问题吗?还是这个会影响你的real time?

是的,如果我转换一遍再控制机器人运动会影响实时性,本来servoj只需要三四毫秒左右,但是加了转换的要达到三四十毫秒,多了一个发送和接收数据的时间