【RoboDK-01】关于RoboDK.cs这个接口的Q&A

【RoboDK-01】关于RoboDK.cs这个接口的Q&A

问题1:

一直以为RoboDK.cs里的一些函数是这么用的:

public static RoboDK.Item ROBOT;
...
Mat toDoubles = ROBOT.ToDoubles(xxx);

或者是

using RoboDK;
.....

解决1:

应该是

public static RoboDK.Item ROBOT;
Mat pose_ref = ROBOT.Pose();
Mat fromUR = pose_ref.FromUR(double[]);

ps:该笔记只是为了记录bug修复过程 不具有参考价值

问题2:

在之前的代码中一直无法解决机器人转角的问题,如图红色框内部分一直不能变换。机器人只能进行xyz变换无法实现rx ry rz变换
查看原始代码:

target_pose.setPos(x, y, z);
...
ROBOT.MoveL(target_pose);

从这两行可以看出,target_pose负责接收x y z坐标信息,而ROBOT.MoveL负责发送信息,因此本人就一直在RoboDK.cs这个开源api中找关于target_pose.setPos()相关是否有target_pose.setRotation()之类的可以控制机器人旋转角的函数。
结果找了两周,一直没找见直到发现RoboDK.setJoints()这个函数可以控制每个关节的转动角度,我就发现事情也许没那么简单,然后我就寻觅着找到setPose()这个函数!

解决2:

ROBOT.setPose(target_pose*rx*ry*rz);

就是这个函数,是可以控制机器人旋转角,并且由于target_poserx ry rz这四个函数已经在前面的转换中变成了4X4矩阵的形式,而且各自独立,因此是可以直接相乘的,至此我们可以得知RoboDK在写这个api时一直强调要把所有的坐标变换以及角度转换都转化为4X4Mat的原始初衷就是为了后面可以方便相乘。

ps: 这个灵感来自于 RoboDk python api
四个矩阵可以直接相乘
这里要狠狠的吐槽一下RoboDK没有把C#api做详细介绍书,只给了python的介绍,就导致很难受啊我要从python翻译到C#

问题3:

在以前的代码中,由于RoboDK的频率和Unity3D的刷新频率不一致,使用LateUpdate()会导致RoboDK出现卡顿抖动的现象。
LateUpdate
改为FixedUpdate()则很丝滑。
FixeUpdate
查阅网上的原因归结为,FixedUpdate()使用的是固定的频率50Hz,而LateUpdate()是慢于Update()。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值