线程评级:
无阻塞机器人
# 1
大家好,
我一直在用KUKA robot + robodk + python脚本做一些测试,我注意到机器人没有等待完成运动(在这种情况下,move_joint)
这是一些奇怪的行为,因为我们有另一个相同品牌和型号的机器人,它正在等待完成动作,然后开始下一行python代码……
我想知道这是因为robot或者robodk上的某些设置吗?

提前谢谢!
我注意到,机器人在移动时不会阻塞,只要我之前使用了一堆setDO函数

使用DO的示例:

代码:
def robot_ready ():
打印(“机器人准备好了!”)
机器人。setDO(io_value = 1, io_var = 4) # Robot Ready


def robot_not_ready ():
打印(“机器人还没准备好!”)
机器人。setDO(io_value = 0, io_var = 4) #机器人未准备好


#设置工作模式获取“工作编号”
def work_mode(模式):
打印(“工作模式设置”)
如果mode == "job_numbers":
机器人。setDO(io_value = 0, io_var = 11)
机器人。setDO(io_value = 1, io_var = 8)
机器人。setDO(io_value = 0, io_var = 7)
Elif mode == "manual":
机器人。setDO(io_value = 0, io_var = 11)
机器人。setDO(io_value = 0, io_var = 8)
机器人。setDO(io_value = 1, io_var = 7)


#设置工作#1
def job1 ():
打印(“转换到工作#1”)
机器人。setDO(io_value = 1, io_var = 12)
time . sleep (0.1)
机器人。setDO(io_value = 0, io_var = 15)
time . sleep (0.1)
机器人。setDO(io_value = 0, io_var = 16)
time . sleep (0.1)

robot_ready ()
robot.move_joint (pos)
打印(“1”)
robot.move_joint (weld_1)
打印(“2”)
robot.move_joint (pos)
打印(“3”)


输出:

代码:
机器人准备好了!
[2020-07-31 09:33:32.355090] KUKA START setDO['io_value=1', 'io_var=4']
[2020-07-31 09:33:32.355090] KUKA FINISH setDO['io_value=1', 'io_var=4']
工作模式设置
[2020-07-31 09:33:32.356088] KUKA START setDO['io_value=0', 'io_var=11']
[2020-07-31 09:33:32.357085] KUKA FINISH setDO['io_value=0', 'io_var=11']
[2020-07-31 09:33:32.357085] KUKA START setDO['io_value=1', 'io_var=8']
[2020-07-31 09:33:32.357085] KUKA FINISH setDO['io_value=1', 'io_var=8']
[2020-07-31 09:33:32.358097] KUKA START setDO['io_value=0', 'io_var=7']
[2020-07-31 09:33:32.358097] KUKA FINISH setDO['io_value=0', 'io_var=7']
转换到工作一
[2020-07-31 09:33:32.358097] KUKA START setDO['io_value=1', 'io_var=12']
[2020-07-31 09:33:32.361074] KUKA FINISH setDO['io_value=1', 'io_var=12']
[2020-07-31 09:33:32.361074] KUKA START setDO['io_value=0', 'io_var=15']
[2020-07-31 09:33:32.361074] KUKA FINISH setDO['io_value=0', 'io_var=15']
[2020-07-31 09:33:32.361074] KUKA START setDO['io_value=0', 'io_var=16']
[2020-07-31 09:33:32.362071] KUKA FINISH setDO['io_value=0', 'io_var=16']
[2020-07-31 09:33:32.362071] KUKA START move_joint[矩阵:(4,4)]
姿态(1433.412,263.954,941.910,179.999,0.001,0.002):
[[1.000, -0.000, 0.000, 1433.412],
[-0.000, -1.000, -0.000, 263.954],
[0.000, 0.000, -1.000, 941.910],
[0.000, 0.000, 0.000, 1.000]]

[2020-07-31 09:33:32.535185] KUKA FINISH move_joint[矩阵:(4,4)]
姿态(1433.412,263.954,941.910,179.999,0.001,0.002):
[[1.000, -0.000, 0.000, 1433.412],
[-0.000, -1.000, -0.000, 263.954],
[0.000, 0.000, -1.000, 941.910],
[0.000, 0.000, 0.000, 1.000]]

1
[2020-07-31 09:33:32.535185] KUKA START move_joint[矩阵:(4,4)
Pose(1533.415, 263.949, 841.912, 179.999, 0.001, 0.002):
[[1.000, -0.000, 0.000, 1533.415],
[-0.000, -1.000, -0.000, 263.949],
[0.000, 0.000, -1.000, 841.912],
[0.000, 0.000, 0.000, 1.000]]

[2020-07-31 09:33:32.605416] KUKA FINISH move_joint[矩阵:(4,4)]
Pose(1533.415, 263.949, 841.912, 179.999, 0.001, 0.002):
[[1.000, -0.000, 0.000, 1533.415],
[-0.000, -1.000, -0.000, 263.949],
[0.000, 0.000, -1.000, 841.912],
[0.000, 0.000, 0.000, 1.000]]

2
[2020-07-31 09:33:32.605621] KUKA START move_joint[矩阵:(4,4)
姿态(1433.412,263.954,941.910,179.999,0.001,0.002):
[[1.000, -0.000, 0.000, 1433.412],
[-0.000, -1.000, -0.000, 263.954],
[0.000, 0.000, -1.000, 941.910],
[0.000, 0.000, 0.000, 1.000]]

[2020-07-31 09:33:32.678451] KUKA FINISH move_joint[矩阵:(4,4)
姿态(1433.412,263.954,941.910,179.999,0.001,0.002):
[[1.000, -0.000, 0.000, 1433.412],
[-0.000, -1.000, -0.000, 263.954],
[0.000, 0.000, -1.000, 941.910],
[0.000, 0.000, 0.000, 1.000]]

3.


没有做的事:

代码:
# robot_ready ()
# work_mode(“job_numbers”)
# job1 ()

robot.move_joint (pos)
打印(“1”)
robot.move_joint (weld_1)
打印(“2”)
robot.move_joint (pos)
打印(“3”)


输出:

代码:
[2020-07-31 09:35:01.823666] KUKA START move_joint[矩阵:(4,4)
姿态(1433.412,263.954,941.910,179.999,0.001,0.002):
[[1.000, -0.000, 0.000, 1433.412],
[-0.000, -1.000, -0.000, 263.954],
[0.000, 0.000, -1.000, 941.910],
[0.000, 0.000, 0.000, 1.000]]

[2020-07-31 09:35:02.240909] KUKA FINISH move_joint[矩阵:(4,4)
姿态(1433.412,263.954,941.910,179.999,0.001,0.002):
[[1.000, -0.000, 0.000, 1433.412],
[-0.000, -1.000, -0.000, 263.954],
[0.000, 0.000, -1.000, 941.910],
[0.000, 0.000, 0.000, 1.000]]

1
[2020-07-31 09:35:02.240909] KUKA START move_joint[矩阵:(4,4)]
Pose(1533.415, 263.949, 841.912, 179.999, 0.001, 0.002):
[[1.000, -0.000, 0.000, 1533.415],
[-0.000, -1.000, -0.000, 263.949],
[0.000, 0.000, -1.000, 841.912],
[0.000, 0.000, 0.000, 1.000]]

[2020-07-31 09:35:17.269861] KUKA FINISH move_joint[矩阵:(4,4)
Pose(1533.415, 263.949, 841.912, 179.999, 0.001, 0.002):
[[1.000, -0.000, 0.000, 1533.415],
[-0.000, -1.000, -0.000, 263.949],
[0.000, 0.000, -1.000, 841.912],
[0.000, 0.000, 0.000, 1.000]]

2
[2020-07-31 09:35:17.270888] KUKA START move_joint[矩阵:(4,4)]
姿态(1433.412,263.954,941.910,179.999,0.001,0.002):
[[1.000, -0.000, 0.000, 1433.412],
[-0.000, -1.000, -0.000, 263.954],
[0.000, 0.000, -1.000, 941.910],
[0.000, 0.000, 0.000, 1.000]]

[2020-07-31 09:35:32.196230] KUKA FINISH move_joint[矩阵:(4,4)
姿态(1433.412,263.954,941.910,179.999,0.001,0.002):
[[1.000, -0.000, 0.000, 1433.412],
[-0.000, -1.000, -0.000, 263.954],
[0.000, 0.000, -1.000, 941.910],
[0.000, 0.000, 0.000, 1.000]]

3.

如果你检查时间,使用DO功能,机器人不会等待完成运动开始阅读下一行…
# 3
嗨,氮氧化物,

您可以关闭舍入来进行点对点的移动,并使移动阻塞。

例如,您可以在程序的开头调用setround(-1),以便为程序的其余部分应用点对点的移动。

艾伯特
# 4
我发现如果我在每个setDO之间放一个小的等待,机器人开始阻止每个动作,这是一个bug吗?
# 5
你好,

我对kuka iiwa也有同样的问题,机器人每移动一次就会停下来。我将四舍五入设置为-1,但我仍然有同样的问题。如何让机器人的动作更流畅?
谢谢你的帮助。
# 6
嗨Haythem,

将舍入值设置为-1将与您正在寻找的结果相反。
-1会停在每一点。

四舍五入> 0就是你要找的。

杰里米




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