发明名称 一种改进的三角函数切换算法
摘要 本发明公开了一种改进的三角函数切换算法,与现有技术相比,本发明在多个输入同时作用下的复合运动分解为单个控制输入下的简单运动,同时以三角函数作为控制输入,结合时间尺度变换技术可使速度输入曲线变得平缓,克服了bang‑bang和分段常数法中输入切换处路径不光滑和过高波动的问题。
申请公布号 CN106201996A 申请公布日期 2016.12.07
申请号 CN201610570806.3 申请日期 2016.07.19
申请人 宝鸡文理学院 发明人 李亮
分类号 G06F17/11(2006.01)I 主分类号 G06F17/11(2006.01)I
代理机构 北京科亿知识产权代理事务所(普通合伙) 11350 代理人 汤东风
主权项 一种改进的三角函数切换算法,其特征在于:由链式系统数学模型的三角结构形式知,在控制输入[0,a<sub>i</sub> sinωt][a<sub>i+1</sub>sinωt,0]的二次切换作用下,链式变量的运动在时间τ∈[(k+(i+1)/s)δ,(k+(i‑1)/s)δ]上被分解为两部分,即[0,Δz<sub>2</sub>,0,…,0],[Δz<sub>1</sub>,0,Δz<sub>3</sub>,…,Δz<sub>n</sub>],其中<img file="FDA0001053978790000011.GIF" wi="923" he="91" />要使包含链式变量{z<sub>3</sub>,z<sub>4</sub>,…,z<sub>n</sub>}的n‑2个线性无关的方程有解,v<sub>1</sub>必然最少经过n‑2次切换输入,v<sub>2</sub>最少需要n‑1次切换输入,因此三角函数控制输入的切换次数最少为2n‑3次,故链式系统路径规划的运动时间被等分的次数不低于2n‑3,下面给出具体的证明:定理1在控制输入<maths num="0001"><math><![CDATA[<mrow><mi>v</mi><mo>=</mo><mo>&lsqb;</mo><msub><mi>v</mi><mn>1</mn></msub><mo>,</mo><msub><mi>v</mi><mn>2</mn></msub><mo>&rsqb;</mo><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mo>&lsqb;</mo><mn>0</mn><mo>,</mo><msub><mi>b</mi><mn>1</mn></msub><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>c</mi><mi>o</mi><mi>s</mi><mi>&omega;</mi><mi>t</mi><mo>)</mo></mrow><mo>&rsqb;</mo></mrow></mtd><mtd><mrow><mi>t</mi><mo>&Element;</mo><mo>&lsqb;</mo><mi>k</mi><mi>&delta;</mi><mo>,</mo><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>/</mo><mi>s</mi><mo>)</mo></mrow><mi>&delta;</mi><mo>&rsqb;</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>&lsqb;</mo><msub><mi>b</mi><mn>2</mn></msub><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>c</mi><mi>o</mi><mi>s</mi><mi>&omega;</mi><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mn>0</mn><mo>&rsqb;</mo></mrow></mtd><mtd><mrow><mi>t</mi><mo>&Element;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>1</mn><mo>/</mo><mi>s</mi><mo>)</mo></mrow><mi>&delta;</mi><mo>,</mo><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>2</mn><mo>/</mo><mi>s</mi><mo>)</mo></mrow><mi>&delta;</mi><mo>&rsqb;</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>&lsqb;</mo><mn>0</mn><mo>,</mo><msub><mi>b</mi><mn>3</mn></msub><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>c</mi><mi>o</mi><mi>s</mi><mi>&omega;</mi><mi>t</mi><mo>)</mo></mrow><mo>&rsqb;</mo></mrow></mtd><mtd><mrow><mi>t</mi><mo>&Element;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>2</mn><mo>/</mo><mi>s</mi><mo>)</mo></mrow><mi>&delta;</mi><mo>,</mo><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>3</mn><mo>/</mo><mi>s</mi><mo>)</mo></mrow><mi>&delta;</mi><mo>&rsqb;</mo></mrow></mtd></mtr><mtr><mtd><mrow><mo>&lsqb;</mo><msub><mi>b</mi><mn>4</mn></msub><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>cos</mi><mi>&omega;</mi><mi>t</mi><mo>)</mo></mrow><mo>,</mo><mn>0</mn><mo>&rsqb;</mo></mrow></mtd><mtd><mrow><mi>t</mi><mo>&Element;</mo><mo>&lsqb;</mo><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>3</mn><mo>/</mo><mi>s</mi><mo>)</mo></mrow><mi>&delta;</mi><mo>,</mo><mrow><mo>(</mo><mi>k</mi><mo>+</mo><mn>4</mn><mo>/</mo><mi>s</mi><mo>)</mo></mrow><mi>&delta;</mi><mo>&rsqb;</mo></mrow></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr></mtable></mtd><mtd><mtable><mtr><mtd><mrow></mrow></mtd></mtr><mtr><mtd><mrow></mrow></mtd></mtr><mtr><mtd><mrow></mrow></mtd></mtr></mtable></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001053978790000012.GIF" wi="1462" he="373" /></maths>的作用下,两输入n维链式系统可以从初始位形z<sup>0</sup>运动到邻域内的目标位形z<sup>f</sup>,其中系统的运动控制时间T最少等分2n‑3次;式(4)仍然是将链式系统运动的时间等分为s段,但在每一段上用一个周期的余弦曲线作为控制输入,这样做的好处是同时保证了位移曲线和速度曲线都是光滑的;下面给出算法定理1的数学证明;证明:时间T被等分为2n‑3次,每一个时间段长度为η=T/(2n‑3),在奇数时间段上t∈[t<sub>2i</sub>,t<sub>2i+1</sub>]上(i∈{0,1,2,…,n‑2}),等分的时间间隔表示为η=t<sub>2i+1</sub>‑t<sub>2i</sub>,,因此在奇数时间段上的式(4)可以表示为<maths num="0002"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msub><mi>v</mi><mn>1</mn></msub><mo>=</mo><mn>0</mn></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>v</mi><mn>2</mn></msub><mo>=</mo><msub><mi>b</mi><mrow><mn>2</mn><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>c</mi><mi>o</mi><mi>s</mi><mi>&omega;</mi><mi>t</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced><mo>,</mo><mi>t</mi><mo>&Element;</mo><mo>&lsqb;</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi></mrow></msub><mo>,</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>&rsqb;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001053978790000013.GIF" wi="1229" he="158" /></maths>式(5)中b<sub>2i+1</sub>是待定系数,角频率ω=2π/η,代入到式(21)逐步积分,<maths num="0003"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msub><mi>z</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>z</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi></mrow></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>z</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>b</mi><mrow><mn>2</mn><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mi>&eta;</mi><mo>+</mo><msub><mi>z</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi></mrow></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>z</mi><mn>3</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>z</mi><mn>3</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi></mrow></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mo>...</mo></mtd></mtr><mtr><mtd><mrow><msub><mi>z</mi><mi>n</mi></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>z</mi><mi>n</mi></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>i</mi></mrow></msub><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001053978790000014.GIF" wi="1100" he="373" /></maths>类似的,在偶数时间段上t∈[t<sub>2j+1</sub>,t<sub>2j+2</sub>](j∈{0,1,2,…,n‑3}),等分的时间间隔表示为η=t<sub>2j+2</sub>‑t<sub>2j+1</sub>,因此算法式(4)在偶数段上有,<maths num="0004"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msub><mi>v</mi><mn>1</mn></msub><mo>=</mo><msub><mi>b</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>c</mi><mi>o</mi><mi>s</mi><mi>&omega;</mi><mi>t</mi><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>v</mi><mn>2</mn></msub><mo>=</mo><mn>0</mn></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001053978790000021.GIF" wi="1062" he="147" /></maths>将式(7)代入到链式系统在时间t∈[t<sub>2i+1</sub>,t<sub>2i+2</sub>]上积分,得:<maths num="0005"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msub><mi>z</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>b</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mi>&eta;</mi><mo>+</mo><msub><mi>z</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>z</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>z</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mrow><msub><mi>z</mi><mi>n</mi></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow></munderover><mfrac><mrow><msup><mrow><mo>(</mo><msub><mi>b</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mi>&eta;</mi><mo>)</mo></mrow><mi>k</mi></msup><msub><mi>z</mi><mrow><mi>n</mi><mo>-</mo><mi>k</mi></mrow></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow></mrow><mrow><mi>k</mi><mo>!</mo></mrow></mfrac><mo>+</mo><msub><mi>z</mi><mi>n</mi></msub><mrow><mo>(</mo><msub><mi>t</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001053978790000022.GIF" wi="1286" he="391" /></maths>通过迭代计算式(6)和式(8),得到系统运动到时间T的目标位形zf,<maths num="0006"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><msubsup><mi>z</mi><mn>1</mn><mi>f</mi></msubsup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>3</mn></mrow></munderover><msub><mi>b</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mi>&eta;</mi><mo>+</mo><msubsup><mi>z</mi><mn>1</mn><mn>0</mn></msubsup></mrow></mtd></mtr><mtr><mtd><mrow><msubsup><mi>z</mi><mn>2</mn><mi>f</mi></msubsup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow></munderover><msub><mi>b</mi><mrow><mn>2</mn><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mi>&eta;</mi><mo>+</mo><msubsup><mi>z</mi><mn>2</mn><mn>0</mn></msubsup></mrow></mtd></mtr><mtr><mtd><mtable><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr><mtr><mtd><mo>.</mo></mtd></mtr></mtable></mtd></mtr><mtr><mtd><mrow><msubsup><mi>z</mi><mi>n</mi><mi>f</mi></msubsup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>3</mn></mrow></munderover><mfrac><msup><mrow><mo>(</mo><mrow><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mi>i</mi></mrow><mrow><mi>n</mi><mo>-</mo><mn>3</mn></mrow></munderover><msub><mi>b</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mi>&eta;</mi></mrow><mo>)</mo></mrow><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow></msup><mrow><mrow><mo>(</mo><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow><mo>)</mo></mrow><mo>!</mo></mrow></mfrac><msub><mi>b</mi><mrow><mn>2</mn><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mi>&eta;</mi><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>2</mn></mrow></munderover><mfrac><msup><mrow><mo>(</mo><mrow><munderover><mi>&Sigma;</mi><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>3</mn></mrow></munderover><msub><mi>b</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mi>&eta;</mi></mrow><mo>)</mo></mrow><mi>k</mi></msup><mrow><mi>k</mi><mo>!</mo></mrow></mfrac><msubsup><mi>z</mi><mrow><mi>n</mi><mo>-</mo><mi>k</mi></mrow><mn>0</mn></msubsup><mo>+</mo><msubsup><mi>z</mi><mi>n</mi><mn>0</mn></msubsup></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001053978790000023.GIF" wi="1406" he="607" /></maths>式(9)中含有n个方程和2n‑3个待定系数,将所有待定系数重新表示为两个系数矢量B<sub>O</sub>=[b<sub>1</sub>,b<sub>3</sub>,…,b<sub>2n‑3</sub>]<sup>T</sup>和B<sub>E</sub>=[b<sub>2</sub>,b<sub>4</sub>,…,b<sub>2n‑4</sub>]<sup>T</sup>,其中B<sub>O</sub>和B<sub>E</sub>分别称为奇数时间段系数矢量和偶数时间段系数矢量;由式(9)知B<sub>E</sub>中n‑2个元素满足,<maths num="0007"><math><![CDATA[<mrow><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>3</mn></mrow></munderover><msub><mi>b</mi><mrow><mn>2</mn><mi>j</mi><mo>+</mo><mn>2</mn></mrow></msub><mo>=</mo><mfrac><mrow><msubsup><mi>z</mi><mn>1</mn><mi>f</mi></msubsup><mo>-</mo><msubsup><mi>z</mi><mn>1</mn><mn>0</mn></msubsup></mrow><mi>&eta;</mi></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001053978790000024.GIF" wi="1029" he="142" /></maths>任意给定一组满足式(10)的B<sub>E</sub>,当<img file="FDA0001053978790000025.GIF" wi="147" he="70" />时,B<sub>O</sub>中n‑1个系数可以由式(9)中剩余的n‑1个方程唯一确定;证毕;当<img file="FDA0001053978790000026.GIF" wi="150" he="70" />时,有<img file="FDA0001053978790000027.GIF" wi="247" he="127" />由式(9)知奇数时间段的系数矢量B<sub>O</sub>无解;解决的办法是设置一个中间位形<img file="FDA0001053978790000028.GIF" wi="411" he="71" />且满足<img file="FDA0001053978790000029.GIF" wi="171" he="67" />系统的路径规划问题分为两个步骤,第一步先控制系统从初始位形z<sup>0</sup>运动到中间位形z<sup>c</sup>,然后将中间位形z<sup>c</sup>看成一个新的初始位形,控制系统运动到目标位形z<sup>f</sup>;故当<img file="FDA00010539787900000210.GIF" wi="154" he="68" />时,系统的路径就是以z<sup>c</sup>为中间位形、首尾连接的两段路径组成。
地址 721016 陕西省宝鸡市渭滨区宝光路44号院5号楼603号