UR3机器人轨迹规划之关节空间轨迹规划
本文最后更新于:2024年3月29日 上午
UR3机器人系列文章是我以及同学做的大作业,在此分享出来。本文轨迹规划部分是我同学所做。
关节空间轨迹规划是直接对机器人的关节角进行规划,将关节角度描述成关于时间的函数。其不需要进行大量的矩阵计算,而且由于关节空间和直角坐标空间并不存在连续的对应关系,因而能够有效避免机构奇异性和机械臂冗余的问题。其主要的规划方法有多项式插值,样条插值和带抛物线过渡的线性函数等方法。
1 多项式插值
多项式插值常用的方法有三次多项式和五次多项式等。三次多项式插值存在角速度变化不平滑且加速度存在跳变的情况,因此不考虑采用三次多项式来进行轨迹规划。而采用五次多项式进行规划时,虽然可以确保不产生冲击,但当规划需要经过多个中间点时,其只能几个点几个点地规划,然后再把各段曲线拼接起来。这样会导致关节出现重复运动。因此在这里我们采用带抛物线过渡的线性函数来对轨迹进行规划,该方法也更加符合人们的直观思想。
2 带抛物线过渡的线性函数插值
带抛物线过渡的线性函数的轨迹规划方法整体思路为用直线连接路径上的各个中间点,然后用抛物线在各个路径点上进行平滑,从而避免机械臂在运动过程中出现冲击。该轨迹规划方法可以指定任意数量的区段和各个区段的持续时间以及加速度的大小和在某个点处停留的时间。其运动轨迹随时间的变化如下图所示:
为了确保解的存在,加速度需要满足
如果用户要求经过某一点并停留,则可以重复定义该点。如果要求精确经过某一点而不停留,则系统可以自动将机械臂经过的中间点替换为其两侧的两个伪中间点,原来的中间点位于连接两个伪中间点的直线上。
路径规划完成后,我们根据得到的四个数组(每个中间点的过渡抛物线加速度的大小,每个点抛物线持续的时间,每个直线段的运动速度和每个直线段的持续时间),根据这些数组我们可以准确的求出机械臂运动的轨迹方程。对于过渡段,如果该过渡段刚好是起点段,那么其函数直接为:
否则可假设其表达式为
对于直线运动段,其函数表达式为:
由此我们便可以得到机械臂运动轨迹的完整函数表达式。根据以上公式,我们可以写出相应的程序。该程序能够获取路径点和运行时间,并指定驻留点和驻留时长。同时也可以强制关节轨迹经过某点,程序会自动做出相应的规划。默认加速度为
1 |
|
运行程序得到如下结果:
从运行结果我们可以看出,程序自动插入了驻留点,并且检验出了加速度
关节角由
在关节角
其余各段的函数表达式依次类推。可以看到虽然可以求出各段的表达式,但手动计算非常麻烦。因此对程序做出相应改进,使其能够自动输出对应多项式的系数,改进后的运行结果如下:
根据函数表达式我们可以画出关节运动曲线如下所示:
从曲线中,我们可以看出,其运动曲线平滑,且在关节角为
源码请前往MyShare/UR3 at master · TyroGzl/MyShare (github.com)
如无法访问,也可关注公众号【G的科研生活】,回复【UR3】