发明名称 一种解耦型六自由度工业机器人的运动控制方法
摘要 本发明公开了一种解耦型六自由度工业机器人的运动控制方法,该方法包括:(a)根据机器人所需实现的位姿,通过D-H模型法获得末端执行机构相对于基坐标系的位姿矩阵;(b)将机器人避开奇异形位时所能实现的正常位姿定义为不同的关节特性属性,并设定机器人实现所需的位姿时的关节特征属性组合;(c)根据位姿矩阵以及设定的关节特征属性组合及其取值条件,通过反变换法分别求得关于机器人各个关节变量的唯一解;(d)根据所求得的解,执行对六自由度工业机器人的关节运动,相应完成整体运动控制过程。通过本发明,具备可预知过奇异点路径、算法简单、反解速度快以及能较好地确定唯一解等优点,并能很好地应用于实际的工业机器人运动控制。
申请公布号 CN102785248A 申请公布日期 2012.11.21
申请号 CN201210255371.5 申请日期 2012.07.23
申请人 华中科技大学 发明人 叶伯生;熊烁;郭显金;唐小琦;宋宝;沈雅琼
分类号 B25J13/00(2006.01)I 主分类号 B25J13/00(2006.01)I
代理机构 华中科技大学专利中心 42201 代理人 朱仁玲
主权项 1.一种解耦型六自由度工业机器人的运动控制方法,该六自由度工业机器人包括底座、腰部回转部件、大臂、小臂、手腕部件和末端执行机构,并通过第一关节完成机器人腰部的回转运动,通过第二、第三关节分别执行大臂和小臂的俯仰动作,以及通过第四至第六关节共同执行末端执行机构的位姿操作,所述方法包括下列步骤:(a)根据对机器人末端执行机构所需实现的位置和姿态,通过D-H模型法获得末端执行机构相对于基坐标系的位姿矩阵<img file="FDA00001920585000011.GIF" wi="77" he="61" /><maths num="0001"><![CDATA[<math><mrow><mmultiscripts><mi>T</mi><mprescripts/><mn>6</mn><mn>0</mn></mmultiscripts><mo>=</mo><mmultiscripts><mi>T</mi><mprescripts/><mn>1</mn><mn>0</mn></mmultiscripts><mmultiscripts><mi>T</mi><mprescripts/><mn>2</mn><mn>1</mn></mmultiscripts><mmultiscripts><mi>T</mi><mprescripts/><mn>3</mn><mn>2</mn></mmultiscripts><mmultiscripts><mi>T</mi><mprescripts/><mn>4</mn><mn>3</mn></mmultiscripts><mmultiscripts><mi>T</mi><mprescripts/><mn>5</mn><mn>4</mn></mmultiscripts><mmultiscripts><mi>T</mi><mprescripts/><mn>6</mn><mn>5</mn></mmultiscripts><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><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>该位姿矩阵中各个元素分别如以下表达式组(2)所示,其中c<sub>1</sub>~c<sub>6</sub>、s<sub>1</sub>~s<sub>6</sub>分别依次表示机器人各个关节变量θ<sub>1</sub>~θ<sub>6</sub>的余弦值和正弦值,c<sub>23</sub>、s<sub>23</sub>分别表示关节变量θ<sub>2</sub>与θ<sub>3</sub>之和的余弦值和正弦值,a<sub>1</sub>~a<sub>3</sub>分别表示机器人第一、第二和第三关节各自与其相邻的下一关节之间的轴线距离,d<sub>4</sub>表示第四关节与末端执行机构之间的距离:第三关节轴线和第四、五关节轴线交点之间的距离:<maths num="0002"><![CDATA[<math><mrow><mfenced open='' close='}'><mtable><mtr><mtd><msub><mi>n</mi><mi>x</mi></msub><mo>=</mo><msub><mi>c</mi><mn>1</mn></msub><mo>[</mo><msub><mi>c</mi><mn>23</mn></msub><mrow><mo>(</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>-</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>s</mi><mn>6</mn></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>s</mi><mn>23</mn></msub><msub><mi>s</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>]</mo><mo>+</mo><msub><mi>s</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>+</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>s</mi><mn>6</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>n</mi><mi>y</mi></msub><mo>=</mo><msub><mi>s</mi><mn>1</mn></msub><mo>[</mo><msub><mi>c</mi><mn>23</mn></msub><mrow><mo>(</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>-</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>s</mi><mn>6</mn></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>s</mi><mn>23</mn></msub><msub><mi>s</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>]</mo><mo>-</mo><msub><mi>c</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>+</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>s</mi><mn>6</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>n</mi><mi>z</mi></msub><mo>=</mo><msub><mi>s</mi><mn>23</mn></msub><mrow><mo>(</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>-</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>s</mi><mn>6</mn></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>c</mi><mn>23</mn></msub><msub><mi>s</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub></mtd></mtr><mtr><mtd><msub><mi>o</mi><mi>x</mi></msub><mo>=</mo><msub><mi>c</mi><mn>1</mn></msub><mo>[</mo><msub><mi>c</mi><mn>23</mn></msub><mrow><mo>(</mo><mo>-</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>-</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>s</mi><mn>23</mn></msub><msub><mi>s</mi><mn>5</mn></msub><msub><mi>s</mi><mn>6</mn></msub><mo>]</mo><mo>+</mo><msub><mi>s</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>-</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>s</mi><mn>6</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>o</mi><mi>y</mi></msub><mo>=</mo><msub><mi>s</mi><mn>1</mn></msub><mo>[</mo><msub><mi>c</mi><mn>23</mn></msub><mrow><mo>(</mo><mo>-</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>-</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>s</mi><mn>23</mn></msub><msub><mi>s</mi><mn>5</mn></msub><msub><mi>s</mi><mn>6</mn></msub><mo>]</mo><mo>-</mo><msub><mi>c</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>-</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>s</mi><mn>6</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>o</mi><mi>z</mi></msub><mo>=</mo><msub><mi>s</mi><mn>23</mn></msub><mrow><mo>(</mo><mo>-</mo><msub><mi>c</mi><mn>4</mn></msub><msub><mi>c</mi><mn>5</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>-</mo><msub><mi>s</mi><mn>4</mn></msub><msub><mi>c</mi><mn>6</mn></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>c</mi><mn>23</mn></msub><msub><mi>s</mi><mn>5</mn></msub><msub><mi>s</mi><mn>6</mn></msub></mtd></mtr><mtr><mtd><msub><mi>a</mi><mi>x</mi></msub><mo>=</mo><msub><mi>c</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>c</mi><mn>23</mn></msub><msub><mi>c</mi><mn>4</mn></msub><msub><mi>s</mi><mn>5</mn></msub><mo>+</mo><msub><mi>s</mi><mn>23</mn></msub><msub><mi>c</mi><mn>5</mn></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>s</mi><mn>1</mn></msub><msub><mi>s</mi><mn>4</mn></msub><msub><mi>s</mi><mn>5</mn></msub></mtd></mtr><mtr><mtd><msub><mi>a</mi><mi>y</mi></msub><mo>=</mo><msub><mi>s</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>c</mi><mn>23</mn></msub><msub><mi>c</mi><mn>4</mn></msub><msub><mi>s</mi><mn>5</mn></msub><mo>+</mo><msub><mi>s</mi><mn>23</mn></msub><msub><mi>c</mi><mn>5</mn></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>c</mi><mn>1</mn></msub><msub><mi>s</mi><mn>4</mn></msub><msub><mi>s</mi><mn>5</mn></msub></mtd></mtr><mtr><mtd><msub><mi>a</mi><mi>z</mi></msub><mo>=</mo><msub><mi>s</mi><mn>23</mn></msub><msub><mi>c</mi><mn>4</mn></msub><msub><mi>s</mi><mn>5</mn></msub><mo>-</mo><msub><mi>c</mi><mn>23</mn></msub><msub><mi>c</mi><mn>5</mn></msub></mtd></mtr><mtr><mtd><msub><mi>p</mi><mi>x</mi></msub><mo>=</mo><msub><mi>c</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>a</mi><mn>1</mn></msub><mo>+</mo><msub><mi>a</mi><mn>2</mn></msub><msub><mi>c</mi><mn>2</mn></msub><mo>+</mo><msub><mi>a</mi><mn>3</mn></msub><msub><mi>c</mi><mn>23</mn></msub><mo>+</mo><msub><mi>d</mi><mn>4</mn></msub><msub><mi>s</mi><mn>23</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>p</mi><mi>y</mi></msub><mo>=</mo><msub><mi>s</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>a</mi><mn>1</mn></msub><mo>+</mo><msub><mi>a</mi><mn>2</mn></msub><msub><mi>c</mi><mn>2</mn></msub><mo>+</mo><msub><mi>a</mi><mn>3</mn></msub><msub><mi>c</mi><mn>23</mn></msub><mo>+</mo><msub><mi>d</mi><mn>4</mn></msub><msub><mi>s</mi><mn>23</mn></msub><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>p</mi><mi>z</mi></msub><mo>=</mo><msub><mi>a</mi><mn>2</mn></msub><msub><mi>s</mi><mn>2</mn></msub><mo>+</mo><msub><mi>a</mi><mn>3</mn></msub><msub><mi>s</mi><mn>23</mn></msub><mo>-</mo><msub><mi>d</mi><mn>4</mn></msub><msub><mi>c</mi><mn>23</mn></msub></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>(b)将机器人避开奇异形位时所能实现的正常位姿定义为不同的关节特性属性cfg1、cfg2和cfg3,并设定机器人末端执行机构实现所需的位姿时的关节特征属性组合,其中所述关节特性属性所代表的意义和取值条件分别如下:cfg1表示当机器人手腕部件的中心点分别处于第一参考平面左右两侧时的状态,并且满足<maths num="0003"><![CDATA[<math><mrow><mi>cfg</mi><mn>1</mn><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn><mo>,</mo><msub><mi>c</mi><mn>1</mn></msub><msub><mi>p</mi><mi>x</mi></msub><mo>+</mo><msub><mi>s</mi><mn>1</mn></msub><msub><mi>p</mi><mi>y</mi></msub><mo>&GreaterEqual;</mo><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn><mo>,</mo><msub><mi>c</mi><mn>1</mn></msub><msub><mi>p</mi><mi>x</mi></msub><mo>+</mo><msub><mi>s</mi><mn>1</mn></msub><msub><mi>p</mi><mi>y</mi></msub><mo>&lt;</mo><mn>0</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths>所述第一参考平面是以机器人第一关节的转动轴线与第二关节的轴线平行线两者所构成的平面;cfg2表示机器人手腕部件的中心点分别处于第二参考平面左右两侧时的状态,并且满足<maths num="0004"><![CDATA[<math><mrow><mi>cfg</mi><mn>2</mn><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn><mo>,</mo><mi>tan</mi><msub><mi>&theta;</mi><mn>3</mn></msub><mo>&GreaterEqual;</mo><msub><mi>d</mi><mn>4</mn></msub><mo>/</mo><msub><mi>a</mi><mn>3</mn></msub></mtd></mtr><mtr><mtd><mn>0</mn><mo>,</mo><mi>tan</mi><msub><mi>&theta;</mi><mn>3</mn></msub><mo>&lt;</mo><msub><mi>d</mi><mn>4</mn></msub><mo>/</mo><msub><mi>a</mi><mn>3</mn></msub></mtd></mtr></mtable></mfenced><mo>,</mo><msub><mi>&theta;</mi><mn>3</mn></msub><mo>&Element;</mo><mrow><mo>(</mo><mo>-</mo><mi>&pi;</mi><mo>,</mo><mi>&pi;</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>所述第二参考平面是以机器人大臂和第三关节的轴线所构成的平面;cfg3表示机器人手腕部件的中心点分别处于第三参考平面左右两侧时的状态,并且满足<maths num="0005"><![CDATA[<math><mrow><mi>cfg</mi><mn>3</mn><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mn>1</mn><mo>,</mo><msub><mi>&theta;</mi><mn>5</mn></msub><mo>&lt;</mo><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn><mo>,</mo><msub><mi>&theta;</mi><mn>5</mn></msub><mo>&GreaterEqual;</mo><mn>0</mn></mtd></mtr></mtable></mfenced><mo>,</mo><msub><mi>&theta;</mi><mn>3</mn></msub><mo>&Element;</mo><mrow><mo>(</mo><mo>-</mo><mn>2</mn><mi>&pi;</mi><mo>,</mo><mn>2</mn><mi>&pi;</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>所述第三参考平面是以机器人小臂和第五关节的轴向所构成的平面;(c)根据步骤(a)所获得位姿矩阵、以及步骤(b)所设定的关节特征属性组合及其取值条件,通过反变换法分别求得关于机器人各个关节变量θ<sub>1</sub>~θ<sub>6</sub>的唯一解;(d)根据所求得的各个关节变量的解,执行对六自由度工业机器人的关节运动,相应完成所需位姿的运动控制过程。
地址 430074 湖北省武汉市洪山区珞瑜路1037号