3. 连续的直线运动

等待

直线运动set_potision()接口中,通过wait参数设置等待与否。

  • wait=True, 表示当前指令执行完成后,再给机械臂发送下一条指令。

  • wait=False, 表示当前指令发送后,不管机械臂是执行,立即发送下一条指令。 例如,让机械臂以200mm/s 的速度运动到下列A,B,C,D四个点,指令间不等待。

A点 [300,100,150,180,0,0] B点 [300,-100,150,180,0,0] C点[400,-100,150,180,0,0] D点[400,100,150,180,0,0]

完整的代码如下

from xarm.wrapper import XArmAPI  
arm=XArmAPI('192.168.1.47')  

arm.motion_enable(enable=True)  
arm.set_mode(0)  
arm.set_state(0)

arm.set_position(300,100,150,180,0,0,speed=200,wait=False)  
arm.set_position(300,-100,150,180,0,0,speed=200,wait=False)  
arm.set_position(400,-100,150,180,0,0,speed=200,wait=False)  
arm.set_position(400,100,150,180,0,0,speed=200,wait=False)

交融半径

交融半径,类似于汽车转弯的转弯半径。设置大于0的交融半径,机械臂轨迹转弯过程将变得顺滑。 直线运动set_potision()接口中,交融半径通过radius参数传入。 radius参数只有在wait=False的情况下才有效,且radius的设置会影响轨迹的连续性。

下表显示了轨迹连续性与wait、radius参数之间的关系

所以,当且仅当wait=Flase且randius≥0时,才能够实现连续的直线运动。

连续的直线运动

连续直线运动需要满足的条件

  • 至少有2条笛卡尔指令

  • wait=False

  • radius≥0

下述是一个连续直线运动的例子,交融半径为5 mm.

from xarm.wrapper import XArmAPI  
arm=XArmAPI('192.168.1.47')  
arm.motion_enable(enable=True)  
arm.set_mode(0)  
arm.set_state(0)  
  
arm.set_position(300,100,150,180,0,0,speed=200,wait=False,radius=5)  
arm.set_position(300,-100,150,180,0,0,speed=200,wait=False,radius=5)  
arm.set_position(400,-100,150,180,0,0,speed=200,wait=False,radius=5)  
arm.set_position(400,100,150,180,0,0,speed=200,wait=False,radius=5)

Last updated