等待
直线运动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时,才能够实现连续的直线运动。
连续的直线运动
连续直线运动需要满足的条件
下述是一个连续直线运动的例子,交融半径为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)