一、如何规划连续运动:
规划连续运动必须满足
(1)xArm做TCP运动,需要使用圆弧直线运动指令,xArm的关节指令目前不能规划连续运动。
(2)弧度R≥0,wait=False(不等待)。 一般建议R>0。
图1(∠ABC=90°)
图2)(∠ABC为任意角度)
以上图为例。如果设置R=0,由于Lineb速度是连续的,在B点转弯,转弯的速度是500mm/s,转弯效果非常尖锐,效果类似于刚体碰撞反弹。上图∠ABC=90°,从A到B到C,速度是500mm/s,可知在B点的时候,A到B方向的速度会减为零,同时B到C方向的速度会增加到500mm/s,减速和加速的理论加速度都是无限大。所以不太建议R=0。设置R>0会得到相对平滑的转弯效果。 参数里设置wait=fales是为了接受下一条指令做规划,如果wait=True,就需要等待。
(3)机械臂接受到指令后不立即运动,需要设置一个等待时间,等待多条指令一起做规划,单个指令不能谈连续。 python 接口是set_pause_time.
Blockly代码示例
Python 代码示例
import os
import sys
import time
sys.path.append(os.path.join(os.path.dirname(file), ‘…/…/…’))
from xarm.wrapper import XArmAPI
arm = XArmAPI(‘192.168.1.221’)
arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)
arm.reset(wait=True)
speed1=200
arm.set_pause_time(0.5)
while True:
arm.set_position(x=400, y=-100, z=250, roll=180, pitch=0, yaw=0, radius=50,speed=speed1, wait=False)
print(arm.get_position(), arm.get_position(is_radian=True))
arm.set_position(x=400, y=100, z=250, roll=180, pitch=0, yaw=0, radius=50,speed=speed1, wait=False)
print(arm.get_position(), arm.get_position(is_radian=True))
arm.set_position(x=300, y=0, z=250, roll=-180, pitch=0, yaw=0, radius=50,speed=speed1, wait=False)
print(arm.get_position(), arm.get_position(is_radian=True))