一种无人艇动态定位控制方法与流程

文档序号:13759885阅读:来源:国知局
一种无人艇动态定位控制方法与流程

技术特征:

1.一种无人艇动态定位控制方法,其特征在于:包括如下步骤:

步骤一:设置无人艇位置参数;

步骤二:根据环境估计算法对环境干扰进行估计:

为环境干扰对无人艇的作用的估计,分别为外界环境力对无人艇的纵向作用力、横向作用力和艏摇力矩,且:

<mrow> <msub> <mover> <mi>&tau;</mi> <mo>^</mo> </mover> <mrow> <mi>e</mi> <mi>n</mi> <mi>v</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>&beta;</mi> <mo>+</mo> <msub> <mi>K</mi> <mn>0</mn> </msub> <mi>M</mi> <mi>&nu;</mi> </mrow>

式中:K0是一个设定的正定对称常矩阵,β是一个中间辅助变量,M是包含附加质量的系统惯性矩阵,v是无人艇运行速度,且β满足:其中:D(v)是系数阻尼矩阵,τ是无人艇推进系统的力和力矩矢量,μ是流体记忆效应;

定义环境作用的估计偏差为:

<mrow> <msub> <mover> <mi>&tau;</mi> <mo>~</mo> </mover> <mrow> <mi>e</mi> <mi>n</mi> <mi>v</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>&tau;</mi> <mrow> <mi>e</mi> <mi>n</mi> <mi>v</mi> </mrow> </msub> <mo>-</mo> <msub> <mover> <mi>&tau;</mi> <mo>^</mo> </mover> <mrow> <mi>e</mi> <mi>n</mi> <mi>v</mi> </mrow> </msub> </mrow>

式中:τenv对应实际的环境干扰对无人艇的作用,对应估计出的环境干扰对无人艇的作用;

步骤三:通过最优艏向控制方法计算环境最优艏向并更新实时无人艇动态信息:

步骤四:通过非线性模型预测控制器进行无人艇动态定位控制,无人艇目标位置为(xd,yd),并要求无人艇时刻保持环境最优艏向ψ=ψopt,即无人艇的目标位置姿态为η=[xd,ydopt]T

2.根据权利要求1所述的一种无人艇动态定位控制方法,其特征在于:步骤三中的环境最优艏向ψopt为:

<mrow> <msub> <mi>&psi;</mi> <mrow> <mi>o</mi> <mi>p</mi> <mi>t</mi> </mrow> </msub> <mo>=</mo> <mi>&psi;</mi> <mo>+</mo> <mi>a</mi> <mi>c</mi> <mi>t</mi> <mi>a</mi> <mi>n</mi> <mn>2</mn> <mrow> <mo>(</mo> <msub> <mover> <mi>&tau;</mi> <mo>^</mo> </mover> <mrow> <mi>e</mi> <mi>n</mi> <mi>v</mi> <mi>Y</mi> </mrow> </msub> <mo>,</mo> <msub> <mover> <mi>&tau;</mi> <mo>^</mo> </mover> <mrow> <mi>e</mi> <mi>n</mi> <mi>v</mi> <mi>X</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>-</mo> <mi>s</mi> <mi>i</mi> <mi>g</mi> <mi>n</mi> <mrow> <mo>(</mo> <msub> <mover> <mi>&tau;</mi> <mo>^</mo> </mover> <mrow> <mi>e</mi> <mi>n</mi> <mi>v</mi> <mi>Y</mi> </mrow> </msub> <mo>)</mo> </mrow> <mo>*</mo> <mi>&pi;</mi> </mrow>

式中:ψ为无人艇当前艏向,表示外界环境作用到无人艇上的横向力的正负号。

3.根据权利要求2所述的一种无人艇动态定位控制方法,其特征在于:步骤四中的非线性模型预测控制器的指标函数J为:

<mfenced open = "" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>J</mi> <mo>=</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <msub> <mi>&lambda;</mi> <mn>1</mn> </msub> <msup> <mrow> <mo>&lsqb;</mo> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>d</mi> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>&rsqb;</mo> </mrow> <mi>T</mi> </msup> <mo>&lsqb;</mo> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>d</mi> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>&rsqb;</mo> <mo>+</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <msubsup> <mo>&Integral;</mo> <mn>0</mn> <mi>T</mi> </msubsup> <mo>&lsqb;</mo> <msub> <mi>&lambda;</mi> <mn>2</mn> </msub> <msup> <mrow> <mo>(</mo> <mover> <mi>y</mi> <mo>^</mo> </mover> <mo>(</mo> <mrow> <mi>t</mi> <mo>+</mo> <mi>T</mi> </mrow> <mo>)</mo> <mo>-</mo> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>d</mi> </msub> <mo>(</mo> <mrow> <mi>t</mi> <mo>+</mo> <mi>T</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mrow> <mo>(</mo> <mover> <mi>y</mi> <mo>^</mo> </mover> <mo>(</mo> <mrow> <mi>t</mi> <mo>+</mo> <mi>T</mi> </mrow> <mo>)</mo> <mo>-</mo> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>d</mi> </msub> <mo>(</mo> <mrow> <mi>t</mi> <mo>+</mo> <mi>T</mi> </mrow> <mo>)</mo> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>&lambda;</mi> <mn>3</mn> </msub> <msup> <mover> <mi>u</mi> <mo>^</mo> </mover> <mi>T</mi> </msup> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mover> <mi>u</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>&rsqb;</mo> <mi>d</mi> <mi>&zeta;</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>=</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <msub> <mi>&lambda;</mi> <mn>1</mn> </msub> <mover> <mi>e</mi> <mo>^</mo> </mover> <msup> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mover> <mi>e</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <msubsup> <mo>&Integral;</mo> <mn>0</mn> <mi>T</mi> </msubsup> <mo>&lsqb;</mo> <msub> <mi>&lambda;</mi> <mn>2</mn> </msub> <mover> <mi>e</mi> <mo>^</mo> </mover> <msup> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mi>T</mi> </msup> <mover> <mi>e</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>&lambda;</mi> <mn>3</mn> </msub> <msup> <mover> <mi>u</mi> <mo>^</mo> </mover> <mi>T</mi> </msup> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mover> <mi>u</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>&rsqb;</mo> <mi>d</mi> <mi>&zeta;</mi> </mrow> </mtd> </mtr> </mtable> </mfenced>

式中:T为预测周期,λ13≥0、λ2>0分别表示输出终端约束、控制量以及跟踪误差的权值,分别为在t+T时刻预测的系统输出值以及预测的期望输出值,表示系统的预测输入值,为在t+T时刻预测的系统输出值与预测的期望输出值之间的差值,上标“∧”表示预测值,

系统预测输出值系统预测期望输出值和系统预测输入值形式表示为:

<mrow> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mn>1</mn> </msub> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mn>2</mn> </msub> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mn>3</mn> </msub> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mover> <mi>x</mi> <mo>^</mo> </mover> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mover> <mi>y</mi> <mo>^</mo> </mover> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mover> <mi>&psi;</mi> <mo>^</mo> </mover> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> </mrow>

<mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>d</mi> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mn>1</mn> <mi>d</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mn>2</mn> <mi>d</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mrow> <mn>3</mn> <mi>d</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mrow> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mi>d</mi> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mover> <mi>y</mi> <mo>^</mo> </mover> <mi>d</mi> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mover> <mi>&psi;</mi> <mo>^</mo> </mover> <mi>d</mi> </msub> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>

<mrow> <mover> <mi>u</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mn>1</mn> </msub> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mn>2</mn> </msub> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>x</mi> <mo>^</mo> </mover> <mn>3</mn> </msub> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <msub> <mover> <mi>&tau;</mi> <mo>^</mo> </mover> <mi>x</mi> </msub> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>&tau;</mi> <mo>^</mo> </mover> <mi>y</mi> </msub> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mover> <mi>&tau;</mi> <mo>^</mo> </mover> <mi>N</mi> </msub> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> </mrow>

约束条件:

<mrow> <msub> <mi>u</mi> <mrow> <mi>m</mi> <mi>i</mi> <mi>n</mi> </mrow> </msub> <mo>&le;</mo> <mover> <mi>u</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>t</mi> <mo>+</mo> <mi>T</mi> <mo>)</mo> </mrow> <mo>&le;</mo> <msub> <mi>u</mi> <mrow> <mi>m</mi> <mi>a</mi> <mi>x</mi> </mrow> </msub> </mrow>

当指标函数J最小时,且得到预测时域[t,t+T]内的输入控制向量满足约束条件时,该输入控制向量即为最优解,用最优解对无人艇动态定位控制。

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