一种六自由度机械臂空间轨迹优化方法与流程

文档序号:20989761发布日期:2020-06-05 21:34阅读:470来源:国知局
一种六自由度机械臂空间轨迹优化方法与流程

本发明涉及机器人运动规划领域,具体涉及一种六自由度机械臂空间轨迹优化方法。



背景技术:

工业生产生活中,机械臂主要用于码垛、焊接、抛光等作业,在整个机械臂的运动过程中需要更高的运动精度。这种运动往往是点到点的运动,需要沿着指定的路径进行连续运动,不仅需要确定机械臂关节的初始点位型和终点位型,还要对整个目标路径的若干路径点进行轨迹规划。由于工业上使用的机械臂多是高纬度的,在高维空间内规划轨迹路径往往采用的是基于概率的路径规划算法。基于概率采样的路径规划算法,比如rrt、prm及其改进算法具有在高维空间能够快速解决运动规划的问题,但是用于构造求解路径的是一些空间离散状态集,并且由于该类路径算法的概率性、随机性,综合导致了规划出来的路径存在冗余状态节点过多、路径转折点多、路径不平滑等问题。

若运动规划路径存在上述几个问题,机械臂在工作过程中容易出现位移、速度、加速度的突变,将影响工作过程中的稳定性。因此可见,恰当的轨迹规划及优化对机械臂高效、精确、可靠运行至关重要。

轨迹路径优化算法的选择具体取决于机械臂所使用的成本度量。为了适应工业要求,轨迹优化必须非常快速。通常的路径优化方法是利用启发式算法,从初始路径开始,在其附近搜索大量的空间状态点集,找到经过这些空间状态点的最佳路径,然后迭代搜索局部最小值。这种方法很通用,但是很耗费资源,速度可能很慢。



技术实现要素:

针对现有技术中存在的技术问题,本发明的首要目的是提供一种六自由度机械臂空间轨迹优化方法,该方法主要分为两个阶段:路径简化和路径平滑。路径简化部分沿着待优化路径随机采样两个非连续段上的点,若直接连接这两个点的路径是有效的、无碰撞的,则用其替换连接两个点的原始路径段,以消除多余的状态点;路径平滑部分,利用分段贝塞尔曲线思想,但与之不同的是,本发明并没有用多项式拟合出曲线,而是通过多次迭代不断增加状态点、更新状态点位置来达到平滑的目的。该方法能够平滑原始路径,减少路径上的冗余状态点,提高机械臂在运动过程中关节轨迹的平滑性,对于减少机械臂关节驱动和传动器件的振动和冲击,提高机械臂轨迹精度和机械臂本体的使用寿命具有重要的意义。基于上述目的,本发明至少提供如下技术方案:

一种六自由度机械臂空间轨迹优化方法,其包括以下步骤:

步骤s1、初始化所述机械臂空间轨迹,该空间轨迹为包含n个状态点的待优化的分段线性路径γ=(state0,state1,…,statei,…,staten-1);

步骤s2、对该分段线性路径进行路径简化,所述路径简化包含:沿所述分段线性路径取两个随机采样点r0、r1,根据所述两个随机采样点r0、r1的位置构造出两个状态点p0、p1,调用碰撞检测算法,若状态点p0、p1的直接路径与障碍有碰撞,则迭代次数加1,否则判断状态点p0、p1是否在同一段线性路径上,若是,则迭代次数加1,否则,计算该两个状态点p0、p1的直接距离d1,以及这两个状态点沿所述分段线性路径γ的距离d2,若d1<d2,则用线段p0-p1替代原有路径,消除原有路径上的状态点,迭代次数加1;

步骤s3、判断迭代次数,若迭代次数未达到最大迭代次数,则重复执行步骤s2,否则该路径简化结束,获得简化路径γ’=(state’0,state’1,…,state’i,…,state’n-1);

步骤s4、对获得的简化路径γ’进行路径平滑,所述路径平滑包含:在路径γ’上的每一分段路径上增加一个新的状态点,对下标索引i是除0外的偶数的状态点依次更新:在状态点state’i-1与状态点state’i分段的中点处取一点记为temp1;在状态点state’i与状态点state’i+1分段的中点处取一点记为temp2;在状态点temp1与状态点temp2分段的中点处取一点记为temp3,分别连接状态点state’i-1与状态点temp3、状态点temp3与状态点state’i+1构成两个分段路径,调用碰撞检测算法验证所述两个分段路径的有效性,若有一条无效则此次更新结束;若均有效,计算状态点state’i与状态点temp3的直接距离d,若d大于某一设定阈值minchange,用状态点temp3更新状态点state’i,否则结束此次更新;

步骤s5、当路径γ’上的所有状态点更新完毕,迭代次数加1,若迭代次数小于设定迭代次数,重复执行步骤s4,反之路径平滑步骤结束。

进一步的,所述步骤s1中statei表示为:路径γ上的状态点,表示六自由度机械臂在某一时刻在构型空间的信息,用一个6维向量表示statei=(r1,r2,…,rj,…,r6),rj代表机械臂各轴的角度,j=1-6。

进一步的,所述步骤s2中采样两个随机点r0、r1的方法为:

在范围(0,dists[n-1])上采样一个随机值t0,以表示在路径γ上随机采样一个点r0,其沿着路径γ距离第一个状态点的长度为t0;同理,随机采样点r1其沿着路径γ距离第一个状态点的长度为t1;其中,dists表示数组,其大小为n,dists[i-1]表示前i个状态点的路径累计长度,dists[0]=0,dists[i]=dists[i-1]+d(statei-1,statei)。

进一步的,所述步骤s2中状态点p0、p1的构造方法为:

s2.1用二分法在数组dists中查找第一个大于或等于t0的数,并返回这个数的索引next,路径γ上的第next个状态点statenext即为随机采样点r0最近的下一个状态点;用二分法在数组dists上查找最后一个小于或等于t0的数,并返回这个数的索引previous,路径γ上的第previous个状态点stateprevious即为随机采样点r0最近的上一个状态点;

s2.2若随机采样点r0与状态点statenext的距离dists[next]-t0<threshold,则将statenext作为简化路径一端的状态点p0;若随机采样点r0与状态点stateprevious的距离t0-dists[next]<threshold,则将stateprevious作为简化路径一端的状态点p0;若前两种情况均不满足,则在随机采样点r0处新增一个状态点作为简化路径一端的状态点p0;同理可根据随机采样点r1得到另一状态点p1。

进一步的,所述步骤s2中状态点p0、p1的直接距离d1表示为:d1=d(p0,p1)。

进一步的,所述步骤s2中状态点p0、p1的沿所述分段线性路径γ的距离d2表示为:假设沿着路径γ,p0与p1之间存在k个状态点,则d2=d(p0,state1)+d(state1,state2)+...+d(statek,p1)。

进一步的,所述步骤s4中在两个状态点分段的中点处取一点temp的计算方法为:

假设两个状态点分别为statefrom、stateto:

其中j=1-6。

进一步的,所述步骤s4中阈值minchange=length*0.01,其中length为路径γ’的长度。

进一步的,所述步骤s2.2中threshold表示为:随机采样点近似为真实状态点的判断阈值,threshold=n*0.005。

进一步的,函数d表示为两个状态点的直接距离:

其中,i为状态点stste的下标索引。

附图说明

图1是本发明优化方法中分段线性路径示意图。

图2是本发明优化方法中采样示意图。

图3是本发明优化方法中路径简化示意图。

图4是本发明优化方法中单次路径平滑示意图。

图5是本发明优化方法中平滑前后对比示意图。

具体实施方式

接下来将结合本发明的附图对本发明实施例中的技术方案进行清楚、完整地描述,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的其它实施例,均属于本发明保护的范围。下面来对本发明做进一步详细的说明。

本发明提供一种六自由度机械臂空间轨迹优化方法,该方法包括以下几个步骤:

步骤s1、初始化所述机械臂空间轨迹,该空间轨迹为包含n个状态点的待优化的分段线性路径γ=(state0,state1,…,statei,…,staten-1)。

首先进行参数设定及辅助数据结构初始化:

γ:表示待优化的分段线性路径,是n个状态点state的有序集合,表示为:γ=(state0,state1,…statei…,staten-1),i为状态点state的下标索引,即i取0至n-1,如附图1所示;

statei:路径γ上的状态点,表示六自由度机械臂在某一时刻在构型空间的信息,用一个6维向量表示statei=(r1,r2,…,rj,…,r6),rj代表机械臂各轴的角度,j=1-6;

maxsteps:简化路径过程的最大迭代次数,初始化为路径γ所包含的状态点总数n;

threshold:随机点近似为真实状态点的判断阈值,threshold=n*0.005;

range:路径简化过程中单段线性路径的长度范围,range=n*0.33;

数组dists:大小为n,dists[i-1]表示前i个状态点的路径累计长度,dists[0]=0,dists[i]=dists[i-1]+d(statei-1,statei),其中函数d(statei-1,statei)表示状态点statei-1到状态点statei的长度,即直接距离,表示为:

其中,i为状态点state的下标索引。

p0,p1:初始化为空,表示简化路径两端的状态。

步骤s2、对该分段线性路径进行路径简化,所述路径简化包含:沿所述分段线性路径取两个随机采样点r0、r1,根据所述两个随机采样点r0、r1的位置构造出两个状态点p0、p1,调用碰撞检测算法,若状态点p0、p1的直接路径与障碍有碰撞,则迭代次数加1,否则判断状态点p0、p1是否在同一段线性路径上,若是,则迭代次数加1,否则,计算该两个状态点p0、p1的直接距离d1,以及这两个状态点沿所述分段线性路径γ的距离d2,若d1<d2,则用线段p0-p1替代原有路径,消除原有路径上的状态点,迭代次数加1。

在范围(0,dists[n-1])上采样一个随机值t0,以表示在路径γ上随机采样一个点r0,其沿着路径γ距离第一个状态点的长度为t0。

状态点p0、p1的构造方法为:利用二分法在数组dists上查找第一个大于或等于t0的数,并返回这个数的索引next,路径γ上的第next个状态点statenext即为随机采样点最近的下一个状态点;利用二分法在数组dists上查找最后一个小于或等于t0的数,并返回这个数的索引previous,路径γ上的第previous个状态点stateprevious即为随机采样点最近的上一个状态点;

若随机采样点r0与状态点statenext的距离dists[next]-t0<threshold,则将statenext作为简化路径的一端的状态点p0;若随机采样点r0与状态点stateprevious的距离t0-dists[next]<threshold,则将stateprevious作为简化路径的一端的状态点p0;若前两种情况均不满足,则在随机采样点r0处新增一个状态点作为简化路径的一端状态点p0。

同样的,在端点p0的range范围内再次采样一个随机值t1,以表示在路径γ上随机采样一个点r1,其沿着路径γ距离第一个状态点的长度为t1,端点的状态点p0的range范围表示为:(max(0,t0-range),min(t0+range,dists[n])))。然后按照上述获得状态点p0的相同方法的过程获得简化路径的另一端点的状态点p1。见附图2所示。

调用碰撞检测算法,若端点p0、p1的直接路径与障碍有碰撞,则为无效,此次迭代结束,迭代次数加1,反之执行下述步骤。

若端点p0、p1在同一段线性路径上,则此次迭代结束,迭代次数加1,因为这种情况没有简化的余地了。否则,计算p0到p1的直接距离d1=d(p0,p1),以及沿着路径γ,p0到p1的距离d2,假设沿着路径γ,p0与p1之间存在k个状态点,则d2=d(p0,state1)+d(state1,state2)+...+d(statek,p1)。若d1>=d2则本次迭代结束,反之用新路径p0-p1替代原来在此段内的路径,祛除p0与p1之间的k个状态点,见附图3所示。更新状态点数n,更新数组dists、threshold以及range。迭代次数加1。

步骤s3、判断迭代次数,若迭代次数未达到最大迭代次数maxsteps,则重复执行步骤s2,否则,该路径简化结束,获得简化路径γ’=(state’0,state’1,…,state’i,…,state’n-1)。

步骤s4、对获得的简化路径γ’进行路径平滑,该路径平滑包含:在路径γ’上的每一分段路径上增加一个新的状态点,对下标索引i是除0外的偶数的状态点依次更新:在状态点state’i-1与状态点state’i分段的中点处取一点记为temp1;在状态点state’i与状态点state’i+1分段的中点处取一点记为temp2;在状态点temp1与状态点temp2分段的中点处取一点记为temp3,分别连接状态点state’i-1与状态点temp3、状态点temp3与状态点state’i+1构成两个分段路径,调用碰撞检测算法验证所述两个分段路径的有效性,若有一条无效则此次更新结束;若均有效,计算状态点state’i与状态点temp3的直接距离d,若d大于某一设定阈值minchange,用状态点temp3更新状态点state’i,否则结束此次更新。

该过程利用分段贝塞尔曲线的思想来平滑路径,正常情况下,分段贝塞尔曲线是利用若干个状态点,通过多项式公式为其一次性拟合出一条曲线。本专利与其不同的是,在每一次迭代中,在路径上增加状态点,将路径细分,并更新状态点的状态,以提高平滑度。

首先,参数设定:

γ’:步骤一执行完成后得到的简化路径,也是n个状态点state的有序集合,表示为:γ’=(state’0,state’1,…,state’i,…,state’n-1);

maxsteps:平滑路径过程的最大迭代次数,初始化为3;

minchange:新状态点与旧状态点的距离改变量若大于minchange,则予以更新,反之不更新。minchange=length*0.01,其中length为路径γ’的长度。

在路径γ’的每一个分段中间增加一个状态点,这样具有n个状态点的原路径γ’的状态点数增加至2n-1个。

对下标索引i是偶数(除0外)的状态点依次更新,执行以下操作:

在状态点state’i-1与状态点state’i分段的中点处取一点记为temp1;

在状态点state’i与状态点state’i+1分段的中点处取一点记为temp2;

在状态点temp1与状态点temp2分段的中点处取一点并用其赋予temp3;

分别连接状态点state’i-1与状态点temp3、状态点temp3与状态点state’i+1,构成两分段路径,并调用碰撞检测算法验证两分段路径的有效性,若有一条无效则此次更新结束;若均有效,计算状态点state’i与状态点temp3的直接距离d(state’i,temp3),若d(state’i,temp3)>minchange,用temp3点更新状态state’i,否则结束此次更新。见图4。

对于六自由度机械臂而言,在两个状态点statefrom、stateto分段的中点处取一点temp的计算方法为:

假设:

则:

其中j=1-6。

步骤s5、当路径γ’上的所有状态点更新完毕,迭代次数加1,若迭代次数小于设定迭代次数maxsteps,重复执行步骤s4,反之路径平滑步骤结束。最终平滑后的路径见图5。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1