CN107953334A - 一种基于a星算法的工业机械臂无碰撞路径规划方法 - Google Patents

一种基于a星算法的工业机械臂无碰撞路径规划方法 Download PDF

Info

Publication number
CN107953334A
CN107953334A CN201711424592.XA CN201711424592A CN107953334A CN 107953334 A CN107953334 A CN 107953334A CN 201711424592 A CN201711424592 A CN 201711424592A CN 107953334 A CN107953334 A CN 107953334A
Authority
CN
China
Prior art keywords
node
mechanical arm
vector
current
collision
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201711424592.XA
Other languages
English (en)
Inventor
杨泽霖
张亮
罗红亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen He Zhongcheng Technology Co Ltd
Original Assignee
Shenzhen He Zhongcheng Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen He Zhongcheng Technology Co Ltd filed Critical Shenzhen He Zhongcheng Technology Co Ltd
Priority to CN201711424592.XA priority Critical patent/CN107953334A/zh
Publication of CN107953334A publication Critical patent/CN107953334A/zh
Pending legal-status Critical Current

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/1607Calculation of inertia, jacobian matrixes and inverses
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • B25J9/1666Avoiding collision or forbidden zones

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Automation & Control Theory (AREA)
  • Manipulator (AREA)

Abstract

本发明公开了一种基于A星算法的工业机械臂无碰撞路径规划方法,首先对六自由度机械臂进行参数化建模,并建立机械臂的正运动学模型。之后,构造机械臂及环境的OBB包围盒。随后,设置A星算法的估价函数和搜索步长,采用基于分离轴的碰撞检测算法在搜索的每一步中判断机械臂是否与环境发生碰撞。最后,根据关节转动角度之和最小且不发生碰撞原则在机械臂的六维关节空间中进行搜索,得到无碰撞的路径。本发明解决了针对六自由度机械臂,传统A星算法无法成功搜索的问题并提高了算法的搜索效率,为工业机械臂在已知障碍物分布情况下的路径规划提出了一种有效的方法。

Description

一种基于A星算法的工业机械臂无碰撞路径规划方法
技术领域
本发明涉及工业机器人路径规划技术领域,具体为一种基于A星算法的工业机械臂无碰撞路径规划方法。
背景技术
工业机器人作为“中国制造2025”的十大重点领域之一,工业机器人正逐渐被广泛应用到各种制造生产线上以提高生产线的智能化水平。路径规划是控制工业机器人按照人工预设的路径运动完成作业任务,决定了机器人的工作方式与工作效率。路径规划是工业机器人运动控制的基础,也是工业机器人重要的研究领域之一,路径规划技术是工业机器人自动化生产的基础,智能制造业所必不可缺的重要组成部分。
针对六自由度的工业机械臂,传统的无碰撞路径规划方法是基于C空间法(构型空间法)的路径规划,但是在求解C空间的障碍物边界时,需要将工作空间的障碍物区域转换到C空间,这需要大量的计算,并且精确的障碍域难以获得。
现有的基于A星算法的路径规划,很多是在工作空间(笛卡尔空间)进行路径搜索,这样规划出的最短路径并不是关节变化量最小的路径,所以需要在C空间进行路径规划。而针对C空间的路径规划,由于在六维空间的搜索问题的复杂性,现有的算法大多忽略了几个自由度,对搜索空间进行了一定的简化,这样得到的路径也是简化后的,并不能够保证路径的安全性。为了得到准确避障的路径,往往需要设置较小的搜索步长,搜索步长于避障准确度是相互矛盾的,如何在保证无碰撞的前提下提高搜索效率是需要解决的问题。
综上所述,针对六自由度机械臂在C空间的路径规划,传统的无碰撞路径规划的方法需要大量计算,并且精确的障碍域难以获得。传统的A星算法不适用于六维空间的搜索问题,并且搜索效率有待提高。
发明内容
本发明的目的在于提供一种基于A星算法的工业机械臂无碰撞路径规划方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于A星算法的工业机械臂无碰撞路径规划方法,包括以下步骤:
A、对六自由度机械臂进行参数化建模,并建立机械臂的正逆运动学模型,采用D-H法描述机械臂的位姿,建立机械臂的连杆坐标系,确定机械臂的D-H参数;根据D-H参数,连杆i和连杆i-1相对位置的齐次变换矩阵i-1Ai为:
其中,Ci=cosθi,Si=sinθi,其中i表示机械臂的连杆个数,i=1,2,3,4,5,6;
将各关节的齐次变换矩阵相乘,得到了机械臂末端执行器的齐次变换矩阵为:
B、建立机械臂及环境的OBB包围盒:利用建模软件建立机械臂及环境的模型,并将机械臂的模型另存为STL格式文件,读取STL格式文件,采用OBB包围盒算法建立机械臂及环境障碍物的OBB包围盒;
C、设置A星算法的估价函数和搜索步长:采用基于分离轴的碰撞检测算法在搜索的每一步中判断机械臂是否与环境发生碰撞;机械臂在关节空间中某个节点的构型矢量为qi,其中包括六个旋转关节的角度变幅,即qi=(qi1,qi2,qi3,qi4,qi5,qi6);距离估价函数为所有关节转动的角度之和,即当前节点到目标节点的各关节位移变化量之和,估价函数为:
D、根据关节转动角度之和最小且不发生碰撞的原则,在机械臂的六维关节空间中进行搜索,得到无碰撞的路径;其中OPEN存放所有搜索节点,CLOSED中存放每一步搜索到的最佳节点,并将它们均初始化为空;机械臂起始位姿的构型矢量为qori,目标位姿的构型矢量为qfin,机械臂当前位姿的构型矢量为qcur,当前位姿的相邻位姿构型矢量为qnei_i
优选的,所述步骤B中,OBB包围盒算法流程如下:
1)通过三角面片信息计算每个三角形平面的法向矢量,并在每个三角面片上建立一个坐标系,原点为三角形任意顶点,三角形平面为x-y平面,z轴方向为三角形平面的法向矢量;
2)遍历每一个三角面片的平面法向矢量,绕该法向矢量旋转该三角面片的坐标系,寻找该物体的三角形网格模型投影到该三角面片的x-y平面面积最小的方向,记录下在旋转后的坐标系下的包围盒的体积;
3)将最小体积对应的坐标系的方向作为包围盒的三个方向向量,将物体的三角形网格中所有顶点投影到三个方向向量中,求出每个方向的最大值和最小值,得到OBB包围盒的八个顶点。
优选的,所述步骤C中,对于包围盒子A与B的碰撞检测算法流程如下:
a、计算两个包围潜在的15条分离轴,对每一条分离轴进行相交测试;
b、对每一条分离轴,将八个顶点做投影,得到两个包围盒投影的最大值和最小值分别为maxA、minA、maxB和minB,若maxA<mimB或maxB<minA,则在此分离轴下,两个包围盒分离,否则相交;
c、若对所有的分离轴均满足maxA<mimB或maxB<minA,则两个包围盒分离,否则两个包围盒相交。
优选的,所述步骤D中,A星算法的流程如下:
a、OPEN表中找到f(qi)值最小的那一行向量,将该行向量作为当前搜索节点,并将该节点向量放入CLOSED表中,同时从OPEN表中删除该节点向量;
b、判断当前搜索节点是否为目标节点,如果是,那么搜索成功;否则继续下一步;
c、对于机械臂而言,每一个关节有三种变化方式,分别是保持不变、增加一定步长,减少一定步长,这样在一个六维空间中,当前搜索节点就有36-1=728个邻近的搜索节点,设第i个邻近节点为qnei_i
d、对于每一个邻近的节点执行如下操作:
(1)、对该搜索节点进行碰撞检测,如果发生了碰撞,则忽略该节点;
(2)、判断该邻近节点是否超出了该关节的最大角度或者最小角度,如果超限,则转至下一个邻近节点;
(3)、若邻近节点既没有发生碰撞也没有超限,则往下执行;
(4)、判断该节点矢量是否在OPEN表中,如果在OPEN表中,则通过节点索引函数查找该节点在OPEN表中的位置,然后判断当前qnei_i节点中的gnei_i与OPEN表中已经存在的gold_i的大小关系,如果gnei_i<gold_i,则就将当前的节点、当前节点的父亲节点以及新的g、h、f更新至OPEN表中原来旧节点的位置;
(5)、若该节点矢量不在OPEN表中,则直接把该节点矢量、当前节点矢量、该节点矢量的g、h、f值放入到OPEN表新的一行中,同时将当前节点、当前节点的父亲节点、当前节点的g、h、f值放入到CLOSED表新的一行中。
与现有技术相比,本发明的有益效果是:本发明无需求解障碍域,通过碰撞检测规避障碍,具有计算简单、方便,能够实现较准确的避障;对传统的A星算法的估价函数进行了改进,克服了六维空间搜索问题的复杂性,能够实现六自由度的机械臂在C空间的无碰撞路径搜索;此外,针对障碍物分布情况,将传统的A星算法的搜索步长设置为变步长,能够在一定程度上提高搜索的效率。
附图说明
图1为本发明流程图;
图2为本发明机械臂及环境障碍物的包围盒示意图;
图3为本发明机械臂的初始位姿示意图;
图4为本发明的机械臂的目标位姿示意图;
图5为本发明的路径规划的结果示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-5,本发明提供一种技术方案:一种基于A星算法的工业机械臂无碰撞路径规划方法,包括以下步骤:
A、对六自由度机械臂进行参数化建模,并建立机械臂的正逆运动学模型,采用D-H法描述机械臂的位姿,建立机械臂的连杆坐标系,确定机械臂的D-H参数;其中,机械臂的D-H参数如下表所示:
根据D-H参数,连杆i和连杆i-1相对位置的齐次变换矩阵i-1Ai为:
其中,Ci=cosθi,Si=sinθi,其中i表示机械臂的连杆个数,i=1,2,3,4,5,6;
将各关节的齐次变换矩阵相乘,得到了机械臂末端执行器的齐次变换矩阵为:
B、建立机械臂及环境的OBB包围盒:利用建模软件建立机械臂及环境的模型,并将机械臂的模型另存为STL格式文件,读取STL格式文件,采用OBB包围盒算法建立机械臂及环境障碍物的OBB包围盒;
C、设置A星算法的估价函数和搜索步长:采用基于分离轴的碰撞检测算法在搜索的每一步中判断机械臂是否与环境发生碰撞;机械臂在关节空间中某个节点的构型矢量为qi,其中包括六个旋转关节的角度变幅,即qi=(qi1,qi2,qi3,qi4,qi5,qi6);距离估价函数为所有关节转动的角度之和,即当前节点到目标节点的各关节位移变化量之和,估价函数为:
D、根据关节转动角度之和最小且不发生碰撞的原则,在机械臂的六维关节空间中进行搜索,得到无碰撞的路径;其中OPEN存放所有搜索节点,CLOSED中存放每一步搜索到的最佳节点,并将它们均初始化为空;机械臂起始位姿的构型矢量为qori,目标位姿的构型矢量为qfin,机械臂当前位姿的构型矢量为qcur,当前位姿的相邻位姿构型矢量为qnei_i
本发明中,步骤B中,OBB包围盒算法流程如下:
1)通过三角面片信息计算每个三角形平面的法向矢量,并在每个三角面片上建立一个坐标系,原点为三角形任意顶点,三角形平面为x-y平面,z轴方向为三角形平面的法向矢量;
2)遍历每一个三角面片的平面法向矢量,绕该法向矢量旋转该三角面片的坐标系,寻找该物体的三角形网格模型投影到该三角面片的x-y平面面积最小的方向,记录下在旋转后的坐标系下的包围盒的体积;
3)将最小体积对应的坐标系的方向作为包围盒的三个方向向量,将物体的三角形网格中所有顶点投影到三个方向向量中,求出每个方向的最大值和最小值,得到OBB包围盒的八个顶点。
本发明中,步骤C中,对于包围盒子A与B的碰撞检测算法流程如下:
a、计算两个包围潜在的15条分离轴,对每一条分离轴进行相交测试;
b、对每一条分离轴,将八个顶点做投影,得到两个包围盒投影的最大值和最小值分别为maxA、minA、maxB和minB,若maxA<mimB或maxB<minA,则在此分离轴下,两个包围盒分离,否则相交;
c、若对所有的分离轴均满足maxA<mimB或maxB<minA,则两个包围盒分离,否则两个包围盒相交。
此外,本发明中,步骤D中,A星算法的流程如下:
a、OPEN表中找到f(qi)值最小的那一行向量,将该行向量作为当前搜索节点,并将该节点向量放入CLOSED表中,同时从OPEN表中删除该节点向量;
b、判断当前搜索节点是否为目标节点,如果是,那么搜索成功;否则继续下一步;
c、对于机械臂而言,每一个关节有三种变化方式,分别是保持不变、增加一定步长,减少一定步长,这样在一个六维空间中,当前搜索节点就有36-1=728个邻近的搜索节点,设第i个邻近节点为qnei_i
d、对于每一个邻近的节点执行如下操作:
(1)、对该搜索节点进行碰撞检测,如果发生了碰撞,则忽略该节点;
(2)、判断该邻近节点是否超出了该关节的最大角度或者最小角度,如果超限,则转至下一个邻近节点;
(3)、若邻近节点既没有发生碰撞也没有超限,则往下执行;
(4)、判断该节点矢量是否在OPEN表中,如果在OPEN表中,则通过节点索引函数查找该节点在OPEN表中的位置,然后判断当前qnei_i节点中的gnei_i与OPEN表中已经存在的gold_i的大小关系,如果gnei_i<gold_i,则就将当前的节点、当前节点的父亲节点以及新的g、h、f更新至OPEN表中原来旧节点的位置;
(5)、若该节点矢量不在OPEN表中,则直接把该节点矢量、当前节点矢量、该节点矢量的g、h、f值放入到OPEN表新的一行中,同时将当前节点、当前节点的父亲节点、当前节点的g、h、f值放入到CLOSED表新的一行中。
图5为机械臂的路径规划的结果。固定步长和变步长的搜索效率对比如下表所示:
综上所述,本发明无需求解障碍域,通过碰撞检测规避障碍,具有计算简单、方便,能够实现较准确的避障;对传统的A星算法的估价函数进行了改进,克服了六维空间搜索问题的复杂性,能够实现六自由度的机械臂在C空间的无碰撞路径搜索;此外,针对障碍物分布情况,将传统的A星算法的搜索步长设置为变步长,能够在一定程度上提高搜索的效率。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (4)

1.一种基于A星算法的工业机械臂无碰撞路径规划方法,其特征在于:包括以下步骤:
A、对六自由度机械臂进行参数化建模,并建立机械臂的正逆运动学模型,采用D-H法描述机械臂的位姿,建立机械臂的连杆坐标系,确定机械臂的D-H参数;根据D-H参数,连杆i和连杆i-1相对位置的齐次变换矩阵i-1Ai为:
<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mmultiscripts> <mi>A</mi> <mn>0</mn> </mmultiscripts> <mn>1</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>C</mi> <mn>1</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>S</mi> <mn>1</mn> </msub> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mn>1</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>C</mi> <mn>1</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>d</mi> <mn>1</mn> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> <mtd> <mrow> <msub> <mmultiscripts> <mi>A</mi> <mn>1</mn> </mmultiscripts> <mn>2</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>C</mi> <mn>2</mn> </msub> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>S</mi> <mn>2</mn> </msub> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <msub> <mi>a</mi> <mn>2</mn> </msub> <msub> <mi>C</mi> <mn>2</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mn>2</mn> </msub> </mtd> <mtd> <msub> <mi>C</mi> <mn>2</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <msub> <mi>a</mi> <mn>2</mn> </msub> <msub> <mi>S</mi> <mn>2</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> <mtd> <mrow> <msub> <mmultiscripts> <mi>A</mi> <mn>2</mn> </mmultiscripts> <mn>3</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>C</mi> <mn>3</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>S</mi> <mn>3</mn> </msub> </mrow> </mtd> <mtd> <mrow> <msub> <mi>a</mi> <mn>3</mn> </msub> <msub> <mi>C</mi> <mn>3</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mn>3</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>C</mi> <mn>3</mn> </msub> </mtd> <mtd> <mrow> <msub> <mi>a</mi> <mn>3</mn> </msub> <msub> <mi>C</mi> <mn>3</mn> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> </mtr> </mtable> </mfenced>
<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mmultiscripts> <mi>A</mi> <mn>4</mn> </mmultiscripts> <mn>5</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>C</mi> <mn>5</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>S</mi> <mn>5</mn> </msub> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mn>5</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>C</mi> <mn>5</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> <mtd> <mrow> <msub> <mmultiscripts> <mi>A</mi> <mn>4</mn> </mmultiscripts> <mn>5</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>C</mi> <mn>5</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>S</mi> <mn>5</mn> </msub> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mn>5</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>C</mi> <mn>5</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> <mtd> <mrow> <msub> <mmultiscripts> <mi>A</mi> <mn>5</mn> </mmultiscripts> <mn>6</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>C</mi> <mn>6</mn> </msub> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>S</mi> <mn>6</mn> </msub> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mn>6</mn> </msub> </mtd> <mtd> <msub> <mi>C</mi> <mn>6</mn> </msub> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>d</mi> <mn>6</mn> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> </mtr> </mtable> </mfenced>
其中,Ci=cosθi,Si=sinθi,其中i表示机械臂的连杆个数,i=1,2,3,4,5,6;
将各关节的齐次变换矩阵相乘,得到了机械臂末端执行器的齐次变换矩阵为:
<mrow> <msub> <mmultiscripts> <mi>T</mi> <mn>0</mn> </mmultiscripts> <mn>6</mn> </msub> <mo>=</mo> <msub> <mmultiscripts> <mi>A</mi> <mn>0</mn> </mmultiscripts> <mn>1</mn> </msub> <msub> <mmultiscripts> <mi>A</mi> <mn>1</mn> </mmultiscripts> <mn>2</mn> </msub> <mmultiscripts> <mi>A</mi> <mn>2</mn> </mmultiscripts> <msup> <msub> <mrow></mrow> <mn>3</mn> </msub> <mn>3</mn> </msup> <msup> <msub> <mi>A</mi> <mn>4</mn> </msub> <mn>4</mn> </msup> <msup> <msub> <mi>A</mi> <mn>5</mn> </msub> <mn>5</mn> </msup> <msub> <mi>A</mi> <mn>6</mn> </msub> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mi>n</mi> <mi>x</mi> </msub> </mtd> <mtd> <msub> <mi>o</mi> <mi>x</mi> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mi>x</mi> </msub> </mtd> <mtd> <msub> <mi>p</mi> <mi>x</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>n</mi> <mi>y</mi> </msub> </mtd> <mtd> <msub> <mi>o</mi> <mi>y</mi> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mi>y</mi> </msub> </mtd> <mtd> <msub> <mi>p</mi> <mi>y</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>n</mi> <mi>z</mi> </msub> </mtd> <mtd> <msub> <mi>o</mi> <mi>z</mi> </msub> </mtd> <mtd> <msub> <mi>a</mi> <mi>z</mi> </msub> </mtd> <mtd> <msub> <mi>p</mi> <mi>z</mi> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
B、建立机械臂及环境的OBB包围盒:利用建模软件建立机械臂及环境的模型,并将机械臂的模型另存为STL格式文件,读取STL格式文件,采用OBB包围盒算法建立机械臂及环境障碍物的OBB包围盒;
C、设置A星算法的估价函数和搜索步长:采用基于分离轴的碰撞检测算法在搜索的每一步中判断机械臂是否与环境发生碰撞;机械臂在关节空间中某个节点的构型矢量为qi,其中包括六个旋转关节的角度变幅,即qi=(qi1,qi2,qi3,qi4,qi5,qi6);距离估价函数为所有关节转动的角度之和,即当前节点到目标节点的各关节位移变化量之和,估价函数为:
<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mi>g</mi> <mo>(</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> <mo>)</mo> <mo>=</mo> <mstyle> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>n</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>6</mn> </munderover> </mstyle> <mo>|</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> <mo>(</mo> <mi>n</mi> <mo>)</mo> <mo>-</mo> <msub> <mi>q</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>(</mo> <mi>n</mi> <mo>)</mo> <mo>|</mo> <mo>+</mo> <mi>g</mi> <mo>(</mo> <msub> <mi>q</mi> <mrow> <mi>i</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mi>h</mi> <mo>(</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> <mo>)</mo> <mo>=</mo> <mstyle> <munderover> <mo>&amp;Sigma;</mo> <mrow> <mi>n</mi> <mo>=</mo> <mn>1</mn> </mrow> <mn>6</mn> </munderover> </mstyle> <mo>|</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> <mo>(</mo> <mi>n</mi> <mo>)</mo> <mo>-</mo> <msub> <mi>q</mi> <mrow> <mi>f</mi> <mi>i</mi> <mi>n</mi> </mrow> </msub> <mo>(</mo> <mi>n</mi> <mo>)</mo> <mo>|</mo> </mtd> </mtr> <mtr> <mtd> <mi>f</mi> <mo>(</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> <mo>)</mo> <mo>=</mo> <mi>g</mi> <mo>(</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> <mo>)</mo> <mo>+</mo> <mn>2</mn> <mi>h</mi> <mo>(</mo> <msub> <mi>q</mi> <mi>i</mi> </msub> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> <mo>;</mo> </mrow>
D、根据关节转动角度之和最小且不发生碰撞的原则,在机械臂的六维关节空间中进行搜索,得到无碰撞的路径;其中OPEN存放所有搜索节点,CLOSED中存放每一步搜索到的最佳节点,并将它们均初始化为空;机械臂起始位姿的构型矢量为qori,目标位姿的构型矢量为qfin,机械臂当前位姿的构型矢量为qcur,当前位姿的相邻位姿构型矢量为qnei_i
2.根据权利要求1所述的一种基于A星算法的工业机械臂无碰撞路径规划方法,其特征在于:所述步骤B中,OBB包围盒算法流程如下:
1)通过三角面片信息计算每个三角形平面的法向矢量,并在每个三角面片上建立一个坐标系,原点为三角形任意顶点,三角形平面为x-y平面,z轴方向为三角形平面的法向矢量;
2)遍历每一个三角面片的平面法向矢量,绕该法向矢量旋转该三角面片的坐标系,寻找该物体的三角形网格模型投影到该三角面片的x-y平面面积最小的方向,记录下在旋转后的坐标系下的包围盒的体积;
3)将最小体积对应的坐标系的方向作为包围盒的三个方向向量,将物体的三角形网格中所有顶点投影到三个方向向量中,求出每个方向的最大值和最小值,得到OBB包围盒的八个顶点。
3.根据权利要求1所述的一种基于A星算法的工业机械臂无碰撞路径规划方法,其特征在于:所述步骤C中,对于包围盒子A与B的碰撞检测算法流程如下:
a、计算两个包围潜在的15条分离轴,对每一条分离轴进行相交测试;
b、对每一条分离轴,将八个顶点做投影,得到两个包围盒投影的最大值和最小值分别为maxA、minA、maxB和minB,若maxA<mimB或maxB<minA,则在此分离轴下,两个包围盒分离,否则相交;
c、若对所有的分离轴均满足maxA<mimB或maxB<minA,则两个包围盒分离,否则两个包围盒相交。
4.根据权利要求1所述的一种基于A星算法的工业机械臂无碰撞路径规划方法,其特征在于:所述步骤D中,A星算法的流程如下:
a、OPEN表中找到f(qi)值最小的那一行向量,将该行向量作为当前搜索节点,并将该节点向量放入CLOSED表中,同时从OPEN表中删除该节点向量;
b、判断当前搜索节点是否为目标节点,如果是,那么搜索成功;否则继续下一步;
c、对于机械臂而言,每一个关节有三种变化方式,分别是保持不变、增加一定步长,减少一定步长,这样在一个六维空间中,当前搜索节点就有36-1=728个邻近的搜索节点,设第i个邻近节点为qnei_i
d、对于每一个邻近的节点执行如下操作:
(1)、对该搜索节点进行碰撞检测,如果发生了碰撞,则忽略该节点;
(2)、判断该邻近节点是否超出了该关节的最大角度或者最小角度,如果超限,则转至下一个邻近节点;
(3)、若邻近节点既没有发生碰撞也没有超限,则往下执行;
(4)、判断该节点矢量是否在OPEN表中,如果在OPEN表中,则通过节点索引函数查找该节点在OPEN表中的位置,然后判断当前qnei_i节点中的gnei_i与OPEN表中已经存在的gold_i的大小关系,如果gnei_i<gold_i,则就将当前的节点、当前节点的父亲节点以及新的g、h、f更新至OPEN表中原来旧节点的位置;
(5)、若该节点矢量不在OPEN表中,则直接把该节点矢量、当前节点矢量、该节点矢量的g、h、f值放入到OPEN表新的一行中,同时将当前节点、当前节点的父亲节点、当前节点的g、h、f值放入到CLOSED表新的一行中。
CN201711424592.XA 2017-12-25 2017-12-25 一种基于a星算法的工业机械臂无碰撞路径规划方法 Pending CN107953334A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711424592.XA CN107953334A (zh) 2017-12-25 2017-12-25 一种基于a星算法的工业机械臂无碰撞路径规划方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711424592.XA CN107953334A (zh) 2017-12-25 2017-12-25 一种基于a星算法的工业机械臂无碰撞路径规划方法

Publications (1)

Publication Number Publication Date
CN107953334A true CN107953334A (zh) 2018-04-24

Family

ID=61956877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711424592.XA Pending CN107953334A (zh) 2017-12-25 2017-12-25 一种基于a星算法的工业机械臂无碰撞路径规划方法

Country Status (1)

Country Link
CN (1) CN107953334A (zh)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108705532A (zh) * 2018-04-25 2018-10-26 中国地质大学(武汉) 一种机械臂避障路径规划方法、设备及存储设备
CN108839019A (zh) * 2018-06-25 2018-11-20 广州视源电子科技股份有限公司 机械臂的运动路径的确定方法和装置
CN109927035A (zh) * 2019-04-08 2019-06-25 济南大学 一种多臂机器人c-空间线障碍的映射方法
CN110487290A (zh) * 2019-07-29 2019-11-22 中国人民解放军军事科学院国防科技创新研究院 基于变步长a星搜索的无人驾驶汽车局部路径规划方法
CN111203916A (zh) * 2020-01-16 2020-05-29 山西万合智能科技有限公司 一种机器人关节与几何体碰撞的检测方法
CN111558940A (zh) * 2020-05-27 2020-08-21 佛山隆深机器人有限公司 一种机器人料框抓取规划与碰撞检测方法
CN111707269A (zh) * 2020-06-23 2020-09-25 东南大学 一种三维环境下的无人机路径规划方法
CN111983970A (zh) * 2020-08-10 2020-11-24 上海数设科技有限公司 一种水刀快进线自动避障规划方法
CN112017237A (zh) * 2020-08-31 2020-12-01 北京轩宇智能科技有限公司 一种基于视场拼接和三维重建的操作辅助装置及方法
CN112245014A (zh) * 2020-10-30 2021-01-22 微创(上海)医疗机器人有限公司 一种医疗机器人、检测机械臂碰撞的方法及存储介质
CN112327931A (zh) * 2020-12-01 2021-02-05 天津基点科技有限公司 一种基于sdf地图的无人机三维路径快速规划方法
CN112720493A (zh) * 2020-12-29 2021-04-30 山西万立科技有限公司 一种机械臂与障碍物的双层次碰撞检测算法
WO2021101564A1 (en) 2019-11-22 2021-05-27 Edda Technology, Inc. A deterministic robot path planning method for obstacle avoidance
CN112923946A (zh) * 2021-02-26 2021-06-08 广州海格通信集团股份有限公司 一种基于Hybrid-astar的动态路径规划方法
CN113043286A (zh) * 2020-12-25 2021-06-29 杭州电子科技大学 一种多自由度机械臂实时避障路径规划系统及方法
CN113155054A (zh) * 2021-04-15 2021-07-23 西安交通大学 面结构光自动化三维扫描规划方法
CN113319863A (zh) * 2021-05-11 2021-08-31 华中科技大学 机器人磨抛加工整体叶盘的工件装夹位姿优化方法和系统
WO2021174796A1 (zh) * 2020-03-05 2021-09-10 亿嘉和科技股份有限公司 用于带电作业机器人抓取支线场景下的抓取姿态计算方法
CN113618733A (zh) * 2021-08-06 2021-11-09 安徽佳乐建设机械有限公司 一种多机械臂系统机械臂碰撞预警系统
CN113781495A (zh) * 2021-07-21 2021-12-10 天津大学 面向并联骨折手术机器人的复位轨迹自动式规划方法
CN113799120A (zh) * 2021-07-15 2021-12-17 中联重科股份有限公司 冗余自由度机械臂的路径规划方法、装置及工程机械
CN114211498A (zh) * 2021-12-30 2022-03-22 中国煤炭科工集团太原研究院有限公司 基于方向包围盒的锚杆支护机器人碰撞检测方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES8606952A1 (es) * 1983-02-26 1985-10-01 Digitale Automation Gmbh Procedimiento para el accionamiento de un robot industrial mediante coordenadas ajenas a la cinematica robotica
CN101286188A (zh) * 2008-04-03 2008-10-15 深圳先进技术研究院 一种虚拟仿真系统中力觉反馈的计算方法
CN102254343A (zh) * 2011-07-01 2011-11-23 浙江理工大学 一种基于凸包与obb的三维网格模型骨架提取方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES8606952A1 (es) * 1983-02-26 1985-10-01 Digitale Automation Gmbh Procedimiento para el accionamiento de un robot industrial mediante coordenadas ajenas a la cinematica robotica
CN101286188A (zh) * 2008-04-03 2008-10-15 深圳先进技术研究院 一种虚拟仿真系统中力觉反馈的计算方法
CN102254343A (zh) * 2011-07-01 2011-11-23 浙江理工大学 一种基于凸包与obb的三维网格模型骨架提取方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
史旭升等: "基于改进OBB包围盒的碰撞检测算法", 《湖南大学学报(自然科学版)》 *
姜鹏程: "优化的OBB碰撞检测算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
董向阳: "基于OBB的碰撞检测算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
贾庆轩等: "基于A*算法的空间机械臂避障路径规划", 《机械工程学报》 *
马华栋: "曲面工件超声检测的逆运动学及路径规划研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108705532A (zh) * 2018-04-25 2018-10-26 中国地质大学(武汉) 一种机械臂避障路径规划方法、设备及存储设备
CN108839019A (zh) * 2018-06-25 2018-11-20 广州视源电子科技股份有限公司 机械臂的运动路径的确定方法和装置
CN108839019B (zh) * 2018-06-25 2020-09-01 广州视源电子科技股份有限公司 机械臂的运动路径的确定方法和装置
CN109927035A (zh) * 2019-04-08 2019-06-25 济南大学 一种多臂机器人c-空间线障碍的映射方法
CN110487290A (zh) * 2019-07-29 2019-11-22 中国人民解放军军事科学院国防科技创新研究院 基于变步长a星搜索的无人驾驶汽车局部路径规划方法
CN110487290B (zh) * 2019-07-29 2020-05-19 中国人民解放军军事科学院国防科技创新研究院 基于变步长a星搜索的无人驾驶汽车局部路径规划方法
WO2021101564A1 (en) 2019-11-22 2021-05-27 Edda Technology, Inc. A deterministic robot path planning method for obstacle avoidance
EP4061584A4 (en) * 2019-11-22 2023-08-16 Edda Technology, Inc. DETERMINISTIC ROBOT TRAJECTORY PLANNING PROCESS TO AVOID OBSTACLES
CN111203916A (zh) * 2020-01-16 2020-05-29 山西万合智能科技有限公司 一种机器人关节与几何体碰撞的检测方法
CN111203916B (zh) * 2020-01-16 2021-06-08 山西万合智能科技有限公司 一种机器人关节与几何体碰撞的检测方法
WO2021174796A1 (zh) * 2020-03-05 2021-09-10 亿嘉和科技股份有限公司 用于带电作业机器人抓取支线场景下的抓取姿态计算方法
CN111558940A (zh) * 2020-05-27 2020-08-21 佛山隆深机器人有限公司 一种机器人料框抓取规划与碰撞检测方法
CN111707269A (zh) * 2020-06-23 2020-09-25 东南大学 一种三维环境下的无人机路径规划方法
CN111707269B (zh) * 2020-06-23 2022-04-05 东南大学 一种三维环境下的无人机路径规划方法
CN111983970B (zh) * 2020-08-10 2022-02-18 上海数设科技有限公司 一种水刀快进线自动避障规划方法
CN111983970A (zh) * 2020-08-10 2020-11-24 上海数设科技有限公司 一种水刀快进线自动避障规划方法
CN112017237A (zh) * 2020-08-31 2020-12-01 北京轩宇智能科技有限公司 一种基于视场拼接和三维重建的操作辅助装置及方法
CN112017237B (zh) * 2020-08-31 2024-02-06 北京轩宇智能科技有限公司 一种基于视场拼接和三维重建的操作辅助装置及方法
CN112245014A (zh) * 2020-10-30 2021-01-22 微创(上海)医疗机器人有限公司 一种医疗机器人、检测机械臂碰撞的方法及存储介质
CN112327931A (zh) * 2020-12-01 2021-02-05 天津基点科技有限公司 一种基于sdf地图的无人机三维路径快速规划方法
CN113043286A (zh) * 2020-12-25 2021-06-29 杭州电子科技大学 一种多自由度机械臂实时避障路径规划系统及方法
CN113043286B (zh) * 2020-12-25 2022-05-03 杭州电子科技大学 一种多自由度机械臂实时避障路径规划系统及方法
CN112720493A (zh) * 2020-12-29 2021-04-30 山西万立科技有限公司 一种机械臂与障碍物的双层次碰撞检测算法
CN112720493B (zh) * 2020-12-29 2022-10-14 山西万立科技有限公司 一种机械臂与障碍物的双层次碰撞检测算法
CN112923946B (zh) * 2021-02-26 2024-03-12 广州海格通信集团股份有限公司 一种基于Hybrid-astar的动态路径规划方法
CN112923946A (zh) * 2021-02-26 2021-06-08 广州海格通信集团股份有限公司 一种基于Hybrid-astar的动态路径规划方法
CN113155054A (zh) * 2021-04-15 2021-07-23 西安交通大学 面结构光自动化三维扫描规划方法
CN113319863A (zh) * 2021-05-11 2021-08-31 华中科技大学 机器人磨抛加工整体叶盘的工件装夹位姿优化方法和系统
CN113799120A (zh) * 2021-07-15 2021-12-17 中联重科股份有限公司 冗余自由度机械臂的路径规划方法、装置及工程机械
CN113799120B (zh) * 2021-07-15 2022-11-01 中联重科股份有限公司 冗余自由度机械臂的路径规划方法、装置及工程机械
CN113781495A (zh) * 2021-07-21 2021-12-10 天津大学 面向并联骨折手术机器人的复位轨迹自动式规划方法
CN113618733A (zh) * 2021-08-06 2021-11-09 安徽佳乐建设机械有限公司 一种多机械臂系统机械臂碰撞预警系统
CN114211498A (zh) * 2021-12-30 2022-03-22 中国煤炭科工集团太原研究院有限公司 基于方向包围盒的锚杆支护机器人碰撞检测方法及系统
CN114211498B (zh) * 2021-12-30 2023-09-08 中国煤炭科工集团太原研究院有限公司 基于方向包围盒的锚杆支护机器人碰撞检测方法及系统

Similar Documents

Publication Publication Date Title
CN107953334A (zh) 一种基于a星算法的工业机械臂无碰撞路径规划方法
CN108356819B (zh) 基于改进a*算法的工业机械臂无碰撞路径规划方法
CN109571466B (zh) 一种基于快速随机搜索树的七自由度冗余机械臂动态避障路径规划方法
Gong et al. Analytical inverse kinematics and self-motion application for 7-DOF redundant manipulator
CN111360824B (zh) 一种双臂自碰撞检测方法和计算机可读存储介质
Sudhakara et al. Trajectory planning of a mobile robot using enhanced A-star algorithm
CN113352319B (zh) 基于改进快速扩展随机树的冗余机械臂避障轨迹规划方法
CN111230880A (zh) 一种离线编程中的复杂曲面加工轨迹生成方法
CN109876968B (zh) 一种钢结构机器人喷涂自动路径规划方法
CN111761582B (zh) 一种基于随机采样的移动机械臂避障规划方法
CN108908347B (zh) 一种面向冗余移动机械臂容错型重复运动规划方法
CN110653805A (zh) 笛卡尔空间下的七自由度冗余机械臂任务约束路径规划方法
CN107791248B (zh) 基于不满足Pieper准则的六自由度串联机器人的控制方法
CN109108978B (zh) 基于学习泛化机制的三自由度空间机械臂运动规划方法
CN113119112B (zh) 适用于六自由度机器人视觉测量的运动规划方法及系统
Hou et al. Simulation research for mobile robot path planning based on improved artificial potential field method recommended by the AsiaSim
Chen et al. Optimizing the obstacle avoidance trajectory and positioning error of robotic manipulators using multigroup ant colony and quantum behaved particle swarm optimization algorithms
CN116872212A (zh) 一种基于A-Star算法和改进人工势场法的双机械臂避障规划方法
Zhuang et al. Obstacle avoidance path planning for apple picking robotic arm incorporating artificial potential field and A* algorithm
JP6848761B2 (ja) 物体間距離評価方法及び相対的に移動する物体間の干渉評価方法
Zhang et al. Kuka youBot arm shortest path planning based on geodesics
CN112894817B (zh) 一种任务空间下的机械臂运动规划方法
Zhang et al. Robot arm trajectory planning study for a table tennis robot
Han et al. RRT based obstacle avoidance path planning for 6-DOF manipulator
Xu et al. Obstacle avoidance of 7-DOF redundant manipulators

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180424