发明名称 避障约束下冗余空间机器人的混合整数预测控制方法
摘要 本发明提供了一种避障约束下冗余空间机器人的混合整数预测控制方法,包括:建立自由漂浮空间机器人的动力学模型;基于反馈线性化方法对步骤(1)的动力学模型进行线性化;根据描述的最优控制问题计算线性系统的控制输入:根据线性系统的控制输入计算原非线性系统的控制输入,用于对原非线性的空间机器人系统进行控制。本发明将障碍物环境下空间机器人完成任务时对障碍物的躲避描述为最优控制问题下的约束。通过考虑避障约束随机械臂到障碍物距离不同性质会发生改变的特性,以及系统地描述最优控制问题下诸多约束的优先级,可以有效地处理原有方法中避障等约束容易导致最优控制问题不可行的缺点。
申请公布号 CN104842355B 申请公布日期 2016.08.17
申请号 CN201510028194.0 申请日期 2015.01.20
申请人 西北工业大学 发明人 罗建军;宗立军;袁建平;朱战霞
分类号 B25J9/16(2006.01)I 主分类号 B25J9/16(2006.01)I
代理机构 西安通大专利代理有限责任公司 61200 代理人 徐文权
主权项 一种避障约束下冗余空间机器人的混合整数预测控制方法,其特征在于:步骤(1):建立自由漂浮空间机器人的动力学模型;步骤(2):基于反馈线性化方法对步骤(1)的动力学模型进行线性化;步骤(3):根据描述的最优控制问题计算步骤(2)中线性系统的控制输入:步骤(4):将步骤(3)得到的线性系统的控制输入代入以下公式<img file="FDA0000920848270000011.GIF" wi="734" he="139" />中,得到原非线性系统的控制输入,用于对原非线性的空间机器人系统进行控制;所述步骤(1)的动力学模型是基于广义雅克比矩阵方法建立,该动力学模型如下:<maths num="0001"><math><![CDATA[<mrow><msup><mi>H</mi><mo>*</mo></msup><mover><mi>&theta;</mi><mo>&CenterDot;&CenterDot;</mo></mover><mo>+</mo><msup><mover><mi>H</mi><mo>&CenterDot;</mo></mover><mo>*</mo></msup><mover><mi>&theta;</mi><mo>&CenterDot;</mo></mover><mo>-</mo><mfrac><mo>&part;</mo><mrow><mo>&part;</mo><mi>&theta;</mi></mrow></mfrac><mo>{</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msup><mover><mi>&theta;</mi><mo>&CenterDot;</mo></mover><mi>T</mi></msup><msup><mi>H</mi><mo>*</mo></msup><mover><mi>&theta;</mi><mo>&CenterDot;</mo></mover><mo>}</mo><mo>=</mo><mi>&tau;</mi></mrow>]]></math><img file="FDA0000920848270000012.GIF" wi="627" he="138" /></maths>其中,H<sup>*</sup>为自由漂浮空间机器人的广义惯性张量;θ∈R<sup>n</sup>,为广义关节坐标;τ∈R<sup>n</sup>,为广义关节力矩;<img file="FDA0000920848270000013.GIF" wi="73" he="66" />表示H<sup>*</sup>对时间的导数,<img file="FDA0000920848270000014.GIF" wi="46" he="67" />为关节角速度,<img file="FDA0000920848270000015.GIF" wi="46" he="67" />为关节角加速度;所述步骤(3)中,最优控制问题描述如下:优化的目标函数为:<img file="FDA0000920848270000016.GIF" wi="1259" he="187" />优化的约束条件为:<maths num="0002"><math><![CDATA[<mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mi>x</mi><mrow><mo>(</mo><mi>k</mi><mo>|</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mi>x</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mi>j</mi><mo>|</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mi>N</mi><mi>c</mi><mo>|</mo><mi>k</mi><mo>)</mo></mrow><mo>,</mo><mi>j</mi><mo>&GreaterEqual;</mo><mi>N</mi><mi>c</mi></mrow></mtd></mtr><mtr><mtd><mrow><mi>x</mi><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>|</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>f</mi><mi>d</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>u</mi><mo>)</mo></mrow><mo>,</mo><mi>j</mi><mo>&le;</mo><mi>N</mi><mi>p</mi></mrow></mtd></mtr><mtr><mtd><mrow><mi>G</mi><mi>&Delta;</mi><mi>U</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>&le;</mo><mi>g</mi><mo>+</mo><mi>c</mi><mi>&epsiv;</mi></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&epsiv;</mi><mi>min</mi></msub><mo>&le;</mo><mi>&epsiv;</mi><mo>&le;</mo><mi>d</mi><mi>i</mi><mi>a</mi><mi>g</mi><mrow><mo>(</mo><msub><mi>&epsiv;</mi><mi>max</mi></msub><mo>)</mo></mrow><msub><mi>&delta;</mi><mi>&epsiv;</mi></msub></mrow></mtd></mtr><mtr><mtd><mrow><mi>d</mi><mo>&gt;</mo><msub><mi>d</mi><mrow><mi>u</mi><mi>f</mi></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&delta;</mi><mrow><mi>s</mi><mi>f</mi></mrow></msub><mo>+</mo><msub><mi>&delta;</mi><mrow><mi>u</mi><mi>f</mi></mrow></msub><mo>&le;</mo><mn>1</mn><mo>,</mo><msub><mi>&delta;</mi><mrow><mi>u</mi><mi>f</mi></mrow></msub><mo>-</mo><msub><mi>&delta;</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>&le;</mo><mn>0</mn><mo>,</mo><mo>-</mo><msub><mi>&delta;</mi><mrow><mi>u</mi><mi>f</mi></mrow></msub><mo>-</mo><msub><mi>&delta;</mi><mrow><mi>s</mi><mi>f</mi></mrow></msub><mo>+</mo><msub><mi>&delta;</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>&le;</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&delta;</mi><mrow><mi>s</mi><mi>f</mi></mrow></msub><mo>+</mo><msub><mi>&delta;</mi><mrow><mi>u</mi><mi>f</mi></mrow></msub><mo>+</mo><msub><mi>&delta;</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>=</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>d</mi><mrow><mi>s</mi><mi>f</mi></mrow></msub><mo>+</mo><mi>L</mi><mrow><mo>(</mo><mi>d</mi><mo>-</mo><msub><mi>d</mi><mrow><mi>s</mi><mi>f</mi></mrow></msub><mo>)</mo></mrow><msub><mi>&delta;</mi><mrow><mi>u</mi><mi>f</mi></mrow></msub><mo>&le;</mo><mi>d</mi><mo>&le;</mo><msub><mi>d</mi><mrow><mi>s</mi><mi>f</mi></mrow></msub><mo>+</mo><mi>U</mi><mrow><mo>(</mo><mi>d</mi><mo>-</mo><msub><mi>d</mi><mrow><mi>s</mi><mi>f</mi></mrow></msub><mo>)</mo></mrow><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>&delta;</mi><mrow><mi>u</mi><mi>f</mi></mrow></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>+</mo><mi>L</mi><mrow><mo>(</mo><mi>d</mi><mo>-</mo><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>)</mo></mrow><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>&delta;</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>)</mo></mrow><mo>&lt;</mo><mi>d</mi><mo>&le;</mo><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>+</mo><mi>U</mi><mrow><mo>(</mo><mi>d</mi><mo>-</mo><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>)</mo></mrow><msub><mi>&delta;</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>+</mo><mi>L</mi><mrow><mo>(</mo><mi>d</mi><mo>-</mo><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>)</mo></mrow><msub><mi>&delta;</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>&le;</mo><mi>d</mi><mo>&le;</mo><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>+</mo><mi>U</mi><mrow><mo>(</mo><mi>d</mi><mo>-</mo><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>)</mo></mrow><mrow><mo>(</mo><mn>1</mn><mo>-</mo><msub><mi>&delta;</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000920848270000021.GIF" wi="930" he="790" /></maths>目标函数中,ΔU<sup>*</sup>(k)为控制时域内线性系统的最优输入增量,Y(k)为预测时域内线性系统的实际输出,R(k)为预测时域内线性系统的期望输出,ΔU(k)为控制时域内线性系统的输入增量,Q和T为常数权重矩阵,ε为松弛变量,S为松弛变量对应的权重矩阵,ρ取<img file="FDA0000920848270000022.GIF" wi="841" he="75" />δ=[δ<sub>1</sub>,δ<sub>2</sub>,...δ<sub>ε</sub>,δ<sub>uf</sub>,δ<sub>sf</sub>,δ<sub>if</sub>]为引入的逻辑变量,M<sub>p</sub>为各逻辑变量相应的权重系数,δ<sub>uf</sub>,δ<sub>sf</sub>,δ<sub>if</sub>,δ<sub>si</sub>为建立避障约束时引入的逻辑变量,满足<maths num="0003"><math><![CDATA[<mrow><mo>&lsqb;</mo><msub><mi>&delta;</mi><mrow><mi>u</mi><mi>f</mi></mrow></msub><mo>=</mo><mn>1</mn><mo>&rsqb;</mo><mo>&LeftRightArrow;</mo><mi>d</mi><mo>&le;</mo><msub><mi>d</mi><mrow><mi>s</mi><mi>f</mi></mrow></msub><mo>,</mo><mo>&lsqb;</mo><msub><mi>&delta;</mi><mrow><mi>s</mi><mi>i</mi></mrow></msub><mo>=</mo><mn>1</mn><mo>&rsqb;</mo><mo>&LeftRightArrow;</mo><mi>d</mi><mo>&le;</mo><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>,</mo><mo>&lsqb;</mo><msub><mi>&delta;</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>=</mo><mn>1</mn><mo>&rsqb;</mo><mo>&LeftRightArrow;</mo><mi>d</mi><mo>&gt;</mo><msub><mi>d</mi><mrow><mi>i</mi><mi>f</mi></mrow></msub><mo>,</mo></mrow>]]></math><img file="FDA0000920848270000025.GIF" wi="1058" he="69" /></maths>δ<sub>sf</sub>=(1‑δ<sub>uf</sub>)δ<sub>si</sub>,符号<img file="FDA0000920848270000026.GIF" wi="123" he="57" />为命题逻辑中的等价关系,Γ<sub>const</sub>为常数,M,<img file="FDA0000920848270000023.GIF" wi="38" he="59" />为模型预测控制方法下的相关矩阵;约束条件中,Nc,Np分别为模型预测控制方法下的控制时域和预测时域,u(k+j|k)表示k时刻往后j步的控制输入,x(k+j+1|k)表示k时刻往后j+1步的状态预测值,f<sub>d</sub>(x,u)由反馈线性化得到的线性模型离散化得到,c是常数矩阵,d为机械臂到障碍物最近的距离,d<sub>uf</sub>,d<sub>sf</sub>,d<sub>if</sub>为障碍物附近定义的不安全距离,安全距离以及影响距离,L,U分别表示取后边括号中函数的最小值和最大值,G,g分别为:<maths num="0004"><math><![CDATA[<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>G</mi><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mi>&Psi;</mi></mtd></mtr><mtr><mtd><mrow><mo>-</mo><mi>&Psi;</mi></mrow></mtd></mtr><mtr><mtd><mi>&Theta;</mi></mtd></mtr><mtr><mtd><mrow><mo>-</mo><mi>&Theta;</mi></mrow></mtd></mtr><mtr><mtd><mrow><mo>-</mo><msub><mi>&Theta;</mi><mi>&upsi;</mi></msub></mrow></mtd></mtr></mtable></mfenced></mrow></mtd><mtd><mrow><mi>g</mi><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mrow><msub><mi>&Omega;</mi><mrow><mi>N</mi><mi>c</mi></mrow></msub><msub><mi>u</mi><mi>max</mi></msub><mo>-</mo><msub><mi>&Omega;</mi><mrow><mi>N</mi><mi>c</mi></mrow></msub><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mo>-</mo><msub><mi>&Omega;</mi><mrow><mi>N</mi><mi>c</mi></mrow></msub><msub><mi>u</mi><mi>min</mi></msub><mo>+</mo><msub><mi>&Omega;</mi><mrow><mi>N</mi><mi>c</mi></mrow></msub><mi>u</mi><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>&Omega;</mi><mrow><mi>N</mi><mi>p</mi></mrow></msub><msub><mi>y</mi><mi>max</mi></msub><mo>-</mo><msub><mi>Y</mi><mi>p</mi></msub></mrow></mtd></mtr><mtr><mtd><mrow><mo>-</mo><msub><mi>&Omega;</mi><mrow><mi>N</mi><mi>p</mi></mrow></msub><msub><mi>y</mi><mi>min</mi></msub><mo>+</mo><msub><mi>Y</mi><mi>p</mi></msub></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>D</mi><mrow><mi>&upsi;</mi><mi>p</mi></mrow></msub><mo>-</mo><msub><mi>D</mi><mrow><mi>u</mi><mi>f</mi></mrow></msub></mrow></mtd></mtr></mtable></mfenced></mrow></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000920848270000024.GIF" wi="811" he="362" /></maths>其中,ψ,Θ<sub>υ</sub>,Ω<sub>Nc</sub>,Ω<sub>Np</sub>,D<sub>υp</sub>,D<sub>uf</sub>,Y<sub>p</sub>为建立约束时引入的相关矩阵,u<sub>max</sub>,u<sub>min</sub>分别为线性模型下控制输入能取得的最大值和最小值,y<sub>max</sub>,y<sub>min</sub>为线性模型下输出允许的最大值和最小值。
地址 710072 陕西省西安市友谊西路127号西北工业大学