发明名称 一种动力定位船舶循迹导引控制方法
摘要 本发明公开了一种动力定位船舶循迹导引控制方法。该算法首先建立大地坐标系和船体坐标系,以及船舶的数学模型;然后通过设定路径点生成的路径与船舶之间的几何位置关系生成导引策略,计算船舶当前时刻的期望艏向;应用控制算法得到控制船舶达到期望艏向所需的控制力矩;最后计算控制船舶达到期望运动速度所需要的纵向推力。该算法根据航迹信息以及航迹和船舶的相对位置计算高速循迹直线段和转弯段船舶的期望艏向,并通过纵向推力控制船舶的运动速度,计算过程简单易行,适合于工程应用。
申请公布号 CN103576555B 申请公布日期 2016.05.04
申请号 CN201310563586.8 申请日期 2013.11.14
申请人 哈尔滨工程大学 发明人 付明玉;张爱华;余玲玲;谢笑颖;焦建芳
分类号 G05B13/04(2006.01)I;G05D1/02(2006.01)I 主分类号 G05B13/04(2006.01)I
代理机构 代理人
主权项 一种动力定位船舶循迹导引控制方法,其特征在于包括如下步骤:(1)选取海平面上任意一点为原点,以正东方向为横轴、正北方向为纵轴,建立大地坐标系EO<sub>E</sub>N;然后,以船舶的几何中心为原点,以右舷方向为横轴、船艏方向为纵轴,建立船体坐标系YO<sub>b</sub>X;(2)在大地坐标系和船体坐标系中建立动力定位船舶三自由度船舶高速运动数学模型:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mover><mi>&eta;</mi><mo>&CenterDot;</mo></mover><mo>=</mo><mi>J</mi><mi>v</mi></mrow>]]></math><img file="FDA0000819762310000011.GIF" wi="126" he="57" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>M</mi><mover><mi>v</mi><mo>&CenterDot;</mo></mover><mo>+</mo><mi>D</mi><mrow><mo>(</mo><mi>v</mi><mo>)</mo></mrow><mi>v</mi><mo>+</mo><mi>C</mi><mrow><mo>(</mo><mi>v</mi><mo>)</mo></mrow><mi>v</mi><mo>=</mo><mi>&tau;</mi></mrow>]]></math><img file="FDA0000819762310000012.GIF" wi="431" he="63" /></maths>式中,η表示船舶在大地坐标系中位置和艏向向量[n,e,ψ]<sup>Τ</sup>;v表示船舶在船体坐标系中线速度和角速度向量[u,v,r]<sup>Τ</sup>;τ为推进器产生的力和力矩向量[F<sub>x</sub>,F<sub>y</sub>,N<sub>z</sub>]<sup>Τ</sup>;J为从船体坐标到大地坐标的转换矩阵,<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>J</mi><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mi>&psi;</mi></mrow></mtd><mtd><mrow><mo>-</mo><mi>s</mi><mi>i</mi><mi>n</mi><mi>&psi;</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mi>&psi;</mi></mrow></mtd><mtd><mrow><mi>cos</mi><mi>&psi;</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000819762310000013.GIF" wi="444" he="191" /></maths>M为船舶惯性矩阵,<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>M</mi><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mrow><mi>m</mi><mo>-</mo><msub><mi>X</mi><mover><mi>u</mi><mo>&CenterDot;</mo></mover></msub></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><mi>m</mi><mo>-</mo><msub><mi>Y</mi><mover><mi>v</mi><mo>&CenterDot;</mo></mover></msub></mrow></mtd><mtd><mrow><msub><mi>mx</mi><mi>g</mi></msub><mo>-</mo><msub><mi>Y</mi><mover><mi>r</mi><mo>&CenterDot;</mo></mover></msub></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>mx</mi><mi>g</mi></msub><mo>-</mo><msub><mi>N</mi><mover><mi>v</mi><mo>&CenterDot;</mo></mover></msub></mrow></mtd><mtd><mrow><msub><mi>I</mi><mi>z</mi></msub><mo>-</mo><msub><mi>N</mi><mover><mi>r</mi><mo>&CenterDot;</mo></mover></msub></mrow></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000819762310000014.GIF" wi="651" he="204" /></maths>m为船舶质量;I<sub>z</sub>为转动惯量;x<sub>g</sub>为船体坐标系中船舶质心纵向坐标;其他参数均为一阶水动力导数;船舶水动力阻尼项为D(v)=D+D<sub>n</sub>(v);<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>D</mi><mo>=</mo><mo>-</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><msub><mi>X</mi><mi>u</mi></msub></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi>Y</mi><mi>v</mi></msub></mtd><mtd><msub><mi>Y</mi><mi>r</mi></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><msub><mi>N</mi><mi>v</mi></msub></mtd><mtd><msub><mi>N</mi><mi>r</mi></msub></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000819762310000015.GIF" wi="367" he="190" /></maths>为线性部分;<maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msub><mi>D</mi><mi>n</mi></msub><mrow><mo>(</mo><mi>v</mi><mo>)</mo></mrow><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mrow><msub><mi>X</mi><mrow><mi>u</mi><mo>|</mo><mi>u</mi><mo>|</mo></mrow></msub><mo>|</mo><mi>u</mi><mo>|</mo></mrow></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>Y</mi><mrow><mi>v</mi><mo>|</mo><mi>v</mi><mo>|</mo></mrow></msub><mo>|</mo><mi>v</mi><mo>|</mo><mo>+</mo><msub><mi>Y</mi><mrow><mo>|</mo><mi>r</mi><mo>|</mo><mi>v</mi></mrow></msub><mo>|</mo><mi>r</mi><mo>|</mo></mrow></mtd><mtd><mrow><msub><mi>Y</mi><mrow><mo>|</mo><mi>v</mi><mo>|</mo><mi>r</mi></mrow></msub><mo>|</mo><mi>v</mi><mo>|</mo><mo>+</mo><msub><mi>Y</mi><mrow><mo>|</mo><mi>r</mi><mo>|</mo><mi>r</mi></mrow></msub><mo>|</mo><mi>r</mi><mo>|</mo></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mrow><msub><mi>N</mi><mrow><mi>v</mi><mo>|</mo><mi>v</mi><mo>|</mo></mrow></msub><mo>|</mo><mi>v</mi><mo>|</mo><mo>+</mo><msub><mi>N</mi><mrow><mo>|</mo><mi>r</mi><mo>|</mo><mi>v</mi></mrow></msub><mo>|</mo><mi>r</mi><mo>|</mo></mrow></mtd><mtd><mrow><msub><mi>N</mi><mrow><mo>|</mo><mi>v</mi><mo>|</mo><mi>r</mi></mrow></msub><mo>|</mo><mi>v</mi><mo>|</mo><mo>+</mo><msub><mi>N</mi><mrow><mo>|</mo><mi>r</mi><mo>|</mo><mi>r</mi></mrow></msub><mo>|</mo><mi>r</mi><mo>|</mo></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000819762310000016.GIF" wi="868" he="231" /></maths>为非线性部分;<maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><mi>C</mi><mo>=</mo><mfenced open = "[" close = "]"><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mo>-</mo><mrow><mo>(</mo><mrow><mi>m</mi><mo>-</mo><msub><mi>Y</mi><mover><mi>v</mi><mo>&CenterDot;</mo></mover></msub></mrow><mo>)</mo></mrow><mi>v</mi><mo>-</mo><mrow><mo>(</mo><mrow><msub><mi>mx</mi><mi>g</mi></msub><mo>-</mo><msub><mi>Y</mi><mover><mi>r</mi><mo>&CenterDot;</mo></mover></msub></mrow><mo>)</mo></mrow><mi>r</mi></mrow></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mrow><mo>(</mo><mi>m</mi><mo>-</mo><msub><mi>X</mi><mover><mi>u</mi><mo>&CenterDot;</mo></mover></msub><mo>)</mo><mi>u</mi></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mi>m</mi><mo>-</mo><msub><mi>Y</mi><mover><mi>v</mi><mo>&CenterDot;</mo></mover></msub></mrow><mo>)</mo></mrow><mi>v</mi><mo>+</mo><mrow><mo>(</mo><mrow><msub><mi>mx</mi><mi>g</mi></msub><mo>-</mo><msub><mi>Y</mi><mover><mi>r</mi><mo>&CenterDot;</mo></mover></msub></mrow><mo>)</mo></mrow><mi>r</mi></mrow></mtd><mtd><mrow><mo>-</mo><mrow><mo>(</mo><mi>m</mi><mo>-</mo><msub><mi>X</mi><mover><mi>u</mi><mo>&CenterDot;</mo></mover></msub><mo>)</mo></mrow><mi>u</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0000819762310000017.GIF" wi="1196" he="207" /></maths>为科里奥利和向心力矩阵;(3)通过船体设定的路径点和当前时刻船舶的大地坐标位置,获得当前时刻的船舶期望艏向;(4)利用反步法,根据当前时刻期望艏向ψ<sub>d</sub>与船舶的期望速度u<sub>d</sub>,计算控制船舶高速循迹所需的纵向力F<sub>x</sub>和力矩N<sub>z</sub>;(5)将控制力和力矩传递给动力定位船舶的数学模型,解算下一时刻船舶的状态信息,然后由当前时刻更新到下一时刻;(6)重复执行步骤(2)‑‑步骤(5),直到最后一条航迹循迹完成;所述通过船体设定的路径点和当前时刻船舶的大地坐标位置,获得当前时刻的船舶期望艏向的方法为:①定路径点,生成船舶运动航迹线设DP船舶需要跟踪的航迹由大地坐标系中的设定路径点为A,B,C三点,它们的坐标为分别为(n<sub>1</sub>,e<sub>1</sub>),(n<sub>2</sub>,e<sub>2</sub>),(n<sub>3</sub>,e<sub>3</sub>);大地坐标系中船舶当前时刻的位置为(n,e);②计算直线航迹段船舶期望艏向根据船舶当前位置与直线段航迹的偏差,即船舶到直线的垂直距离计算一个修正角,在航迹向的基础上加上这个修正角,使船舶艏向偏向航迹一边;对于一条从A点指向B点的航迹线,当前时刻船舶与航迹AB的偏差d为:<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><mi>d</mi><mo>=</mo><mfrac><mrow><mo>(</mo><msub><mi>e</mi><mn>1</mn></msub><mo>-</mo><msub><mi>e</mi><mn>2</mn></msub><mo>)</mo><mo>(</mo><mi>n</mi><mo>-</mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo><mo>-</mo><mo>(</mo><msub><mi>n</mi><mn>1</mn></msub><mo>-</mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo><mo>(</mo><mi>e</mi><mo>-</mo><msub><mi>e</mi><mn>2</mn></msub><mo>)</mo></mrow><msqrt><mrow><mo>(</mo><msub><mi>n</mi><mn>2</mn></msub><mo>-</mo><msub><mi>n</mi><mn>1</mn></msub><mo>)</mo><mo>(</mo><msub><mi>n</mi><mn>2</mn></msub><mo>-</mo><msub><mi>n</mi><mn>1</mn></msub><mo>)</mo><mo>+</mo><mo>(</mo><msub><mi>e</mi><mn>2</mn></msub><mo>-</mo><msub><mi>e</mi><mn>1</mn></msub><mo>)</mo><mo>(</mo><msub><mi>e</mi><mn>2</mn></msub><mo>-</mo><msub><mi>e</mi><mn>1</mn></msub><mo>)</mo></mrow></msqrt></mfrac></mrow>]]></math><img file="FDA0000819762310000021.GIF" wi="683" he="135" /></maths>当d>0时,船舶在有向航迹线的右侧;当d<0时,船舶在有向航迹线的左侧;航迹线方向ψ<sub>trace</sub>∈(‑π,π)为有向线段AB与大地坐标北向的夹角:ψ<sub>trace</sub>=arctan2((e<sub>2</sub>‑e<sub>1</sub>)/(n<sub>2</sub>‑n<sub>1</sub>))船舶期望艏向ψ<sub>d</sub>=ψ<sub>trace</sub>‑Kt*d,其中Kt为从航迹偏差到修正角度的转换增益;当船舶位于航迹线右侧时船舶以航迹方向为基础,通过向左转向来靠近航迹;当船舶位于航迹线左侧时,船舶通过向右转向靠近航迹;当船舶位于航迹线上时船舶的期望艏向为航迹线方向;③计算转弯航迹段船舶期望艏向当船舶在高速循迹的航迹切换部分时,设计一个和两条有向直线航迹AB和BC内切的圆弧,船舶通过对这段圆弧的循迹,平滑地从AB段过渡到下一条直线航迹BC段;通过船舶当前时刻的速度u和期望转艏角速度r<sub>d</sub>获得圆弧段航迹的,首先计算圆弧半径:R=u/r<sub>d</sub>,以及两条航迹的航迹向差:λ=ψ<sub>trace_2</sub>‑ψ<sub>trace_1</sub>;进而通过B点的大地坐标确定转弯圆弧的圆心大地坐标位置(n<sub>R</sub>,e<sub>R</sub>):n<sub>R</sub>=n<sub>2</sub>+R/(λ/2)·cos(ψ<sub>trace_1</sub>+λ/2)e<sub>R</sub>=e<sub>2</sub>+R/(λ/2)·sin(ψ<sub>trace_1</sub>+λ/2)船舶开始转弯后,当前期望艏向ψ<sub>d</sub>(k)根据期望转艏角速度,AB段直线航迹的航迹向用采样时间T<sub>s</sub>来计算:ψ<sub>d</sub>(k)=ψ<sub>d</sub>(k‑1)+r<sub>d</sub>·T<sub>s</sub>,ψ<sub>d</sub>(k)的初始值为AB段直线航迹的航迹向ψ<sub>trace_1</sub>;在转弯过程中,航迹偏差根据船舶当前位置与圆弧路径的距离获得;根据船舶当前位置(n,e)与圆心(n<sub>R</sub>,e<sub>R</sub>)的距离<img file="FDA0000819762310000031.GIF" wi="787" he="93" />判定船舶是否位于圆弧上:d<sub>arc</sub>=R时,船舶在圆弧上;当d<sub>arc</sub>≠R时船舶不在圆弧上;当船舶在圆弧上时,船舶期望艏向ψ<sub>d</sub>计算方法为:ψ<sub>d</sub>=ψ<sub>d</sub>(k);当船舶不在圆弧上时,仿照直线段循迹的计算方法来获得期望艏向,此时航迹偏差为d=d<sub>arc</sub>‑R,船舶期望艏向ψ<sub>d</sub>计算方法为:ψ<sub>d</sub>=ψ<sub>d</sub>(k)‑sgn·Kt·d;sgn=‑1,1为一符号函数,当船舶向左转时sgn=1,当船舶向右转时sgn=‑1;当|ψ<sub>d</sub>‑ψ<sub>trace_2</sub>|<ε时,船舶则开始对下一条直线段航迹进行循迹,期望艏向的计算方法如步骤②,直到最后一条航迹,循迹结束。
地址 150001 黑龙江省哈尔滨市南岗区南通大街145号哈尔滨工程大学科技处知识产权办公室