线程评级:
Matlab API:如何连续获取机器人的速度和加速度?
# 1
我用几个Matlab函数块做了一个Simulink模型,从RoboDK中获取机器人的数据,编辑这些数据并将其发送回RoboDK。

我需要的一件事是机器人TCP的速度和加速度。我已经写了一个函数,计算从一点移动到另一点的时间的速度。

不幸的是,这个块似乎执行得太少了。当我用一个范围块来可视化速度时,我只得到一些条形,而不是连续的曲线。此外,数据似乎是不可信的。

有没有一种方法可以连续地直接从RoboDK中得到速度和加速度?
我得到了使用函数instructionlistjoint的提示,它应该在类RobolinkItem中。不幸的是,它不包括在里面。

计算速度的函数代码:
代码:
函数[speedX, speedY, speedZ] = getSpeed(x, y, z)
持久x1 x2 y1 y2 z1 z2 t1 t2;

如果isempty (x1)
第一个函数调用->初始化参数
x1 = 0;日元= 0;z1 = 0;
x2 = x;y2 = y;z2 = z;
t1 = 0;t2 = 0;
speedX = 0;快速= 0;speedZ = 0;
抽搐;%开始计时器
其他的
%移动参数
x1 = x2;日元= y2;z1 = z2;
t1 = t2;
%获取新值
x2 = x;y2 = y₁;z2 = z1;
t2 = toc;获取计时器开始后的时间
抽搐;%再次启动计时器
计算速度
speedX = abs(x2-x1)/(t2-t1);
speedY = abs(y2-y1)/(t2-t1);
speedZ = abs(z2-z1)/(t2-t1);
结束
结束
你可以使用这样一个函数来显示机器人的速度:
https://github.com/RoboDK/RoboDK-API/blo...rJoints.py

这是用Python写的,但你也可以用Matlab做同样的事情。这里有一个更完整的例子:
C: / RoboDK /宏/ MonitorJoints.py

你还需要推导位置来计算速度。如果你需要笛卡尔速度(而不是关节速度),你可能需要使用robot.Pose()来检索4x4的姿势矩阵,而不是robot.关节()。

另外,请记住,如果在并行线程上运行此程序,则需要一个新的Robolink()实例。

艾伯特




浏览此线程的用户:
1客人(年代)