发明名称 一种基于割线法的无速度波动参数曲线直接插补方法
摘要 一种基于割线法的无速度波动参数曲线直接插补方法,它有七大步骤;在参数曲线的直接插补中,用割线法替代传统的弦线法,使用连续的割线段去逼近被插补参数曲线。这种基于割线法的无速度波动参数曲线直接插补方法的关键是在插补过程中形成插补割线段,即要求每一个插补周期形成的插补直线段与被插补参数曲线相交形成割线。本发明的基于割线法的无速度波动参数曲线直接插补方法能实现无速度波动插补,而且在相同几何误差的约束下能达到比其他参数曲线直接插补方法更高的插补精度,同时由于该参数曲线直接插补方法消除了速度波动,因此使得平滑进给速度规划变得更简单,提高了插补器的效率,它适用于高速高精度数控系统的参数曲线插补器。
申请公布号 CN103926881B 申请公布日期 2016.08.17
申请号 CN201410160317.1 申请日期 2014.04.21
申请人 北京航空航天大学 发明人 刘强;刘焕;李传军
分类号 G05B19/41(2006.01)I 主分类号 G05B19/41(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 一种基于割线法的无速度波动参数曲线直接插补方法,其特征在于:该方法具体步骤如下:步骤一:参数曲线为C(u)={x(u),y(u),z(u)},u为曲线参数,0≤u≤1;插补开始时,设第0个插补点参数为u<sub>0</sub>=0,第0个插补点为P<sub>0</sub>=C(u<sub>0</sub>)={x<sub>0</sub>,y<sub>0</sub>,z<sub>0</sub>};步骤二:第i个插补周期的指令进给速度为V<sub>i</sub>,插补周期为T<sub>c</sub>,计算指令插补步长为L<sub>i</sub>=V<sub>i</sub>T<sub>c</sub>;步骤三:使用Taylor二阶展开法计算下一个插补参数值的初值<img file="FDA0000493851680000011.GIF" wi="80" he="78" />如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow></msubsup><mo>=</mo><msub><mi>u</mi><mi>i</mi></msub><mo>+</mo><mfrac><mi>du</mi><mi>dt</mi></mfrac><msub><mo>|</mo><msub><mi>u</mi><mi>i</mi></msub></msub><msub><mi>T</mi><mi>c</mi></msub><mo>+</mo><mfrac><mrow><msup><mi>d</mi><mn>2</mn></msup><mi>u</mi></mrow><msup><mi>dt</mi><mn>2</mn></msup></mfrac><msub><mo>|</mo><msub><mi>u</mi><mi>i</mi></msub></msub><mfrac><msup><msub><mi>T</mi><mi>c</mi></msub><mn>2</mn></msup><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mfrac><mi>du</mi><mi>dt</mi></mfrac><msub><mo>|</mo><msub><mi>u</mi><mi>i</mi></msub></msub><mo>=</mo><msub><mi>V</mi><mi>i</mi></msub><mo>/</mo><mo>|</mo><mo>|</mo><msup><mi>C</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow><msub><mo>|</mo><msub><mi>u</mi><mi>i</mi></msub></msub><mo>|</mo><mo>|</mo></mtd></mtr><mtr><mtd><mfrac><mrow><msup><mi>d</mi><mn>2</mn></msup><mi>u</mi></mrow><msup><mi>dt</mi><mn>2</mn></msup></mfrac><msub><mo>|</mo><msub><mi>u</mi><mi>i</mi></msub></msub><mo>=</mo><mo>-</mo><msup><msub><mi>V</mi><mi>i</mi></msub><mn>2</mn></msup><mo>&lang;</mo><msup><mi>C</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow><msub><mo>|</mo><msub><mi>u</mi><mi>i</mi></msub></msub><mo>,</mo><msup><mi>C</mi><mrow><mo>&prime;</mo><mo>&prime;</mo></mrow></msup><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow><msub><mo>|</mo><msub><mi>u</mi><mi>i</mi></msub></msub><mo>&rang;</mo><mo>/</mo><msup><mrow><mo>|</mo><mo>|</mo><msup><mi>C</mi><mo>&prime;</mo></msup><mrow><mo>(</mo><mi>u</mi><mo>)</mo></mrow><msub><mo>|</mo><msub><mi>u</mi><mi>i</mi></msub></msub><mo>|</mo><mo>|</mo></mrow><mn>4</mn></msup></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000493851680000012.GIF" wi="950" he="427" /></maths>步骤四:当前插补点P<sub>i</sub>={x<sub>i</sub>,y<sub>i</sub>,z<sub>i</sub>}至下一个插补参数值初值<img file="FDA0000493851680000013.GIF" wi="84" he="78" />对应的曲线上的点<img file="FDA0000493851680000014.GIF" wi="158" he="78" />的距离为<img file="FDA0000493851680000015.GIF" wi="435" he="98" />使用一种基于冗余系数的牛顿迭代法修正下一个插补参数如下:<maths num="0002" id="cmaths0002"><math><![CDATA[<mfenced open='{' close='' separators=''><mtable><mtr><mtd><mtable></mtable><mi>do</mi><mo>:</mo><mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>&Delta;L</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>=</mo><mo>|</mo><mo>|</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>-</mo><msub><mi>P</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mtd></mtr><mtr><mtd><mi>F</mi><mrow><mo>(</mo><msubsup><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>=</mo><mo>|</mo><mo>|</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>-</mo><msub><mi>P</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&epsiv;</mi><mo>)</mo></mrow><msubsup><mi>&Delta;L</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup></mtd></mtr><mtr><mtd><msup><mi>F</mi><mo>&prime;</mo></msup><mo>(</mo><msubsup><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>)</mo><mo>=</mo><mfrac><mrow><mo>&lang;</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>)</mo><mo>-</mo><msub><mi>P</mi><mi>i</mi></msub><mo>,</mo><msup><mi>C</mi><mo>&prime;</mo></msup><mo>(</mo><msubsup><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>&rang;</mo></mrow><mrow><mo>|</mo><mo>|</mo><mi>C</mi><mrow><mo>(</mo><msubsup><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>-</mo><msub><mi>P</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow></mfrac></mtd></mtr><mtr><mtd></mtd></mtr></mtable></mfenced><mo>,</mo><mi>j</mi><mo>=</mo><mn>0,1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><mi>until</mi><mo>:</mo><msub><mi>&tau;L</mi><mi>i</mi></msub><mo>&lt;</mo><msubsup><mi>&Delta;L</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>&lt;</mo><msub><mi>L</mi><mi>i</mi></msub><mo>,</mo><mi>then</mi><mo>:</mo><msub><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msubsup><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000493851680000016.GIF" wi="1103" he="619" /></maths>其中ε、τ为冗余系数,ε控制着算法的收敛速度,τ控制着割线段相对于被插补曲线的位置,两个系数需要相互协调才能保证迭代算法迅速收敛,取ε=0.01、τ=0.9能使算法在2次迭代内结束;迭代算法结束后,下一个插补参数的终值为u<sub>i+1</sub>,对应的曲线上的点为C(u<sub>i+1</sub>);步骤五:当前插补点P<sub>i</sub>={x<sub>i</sub>,y<sub>i</sub>,z<sub>i</sub>}至点C(u<sub>i+1</sub>)的单位方向向量为:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msub><mover><mi>d</mi><mo>&RightArrow;</mo></mover><mi>i</mi></msub><mrow><mo>(</mo><mi>C</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>P</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>/</mo><mo>|</mo><mo>|</mo><mi>C</mi><mrow><mo>(</mo><msub><mi>u</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>P</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo></mrow>]]></math><img file="FDA0000493851680000017.GIF" wi="639" he="94" /></maths>该方向向量决定刀具在当前插补周期内的移动方向;步骤六:下一个无速度波动插补点为:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>P</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mo>{</mo><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>,</mo><msub><mi>z</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>}</mo><mo>=</mo><msub><mi>P</mi><mi>i</mi></msub><mo>+</mo><msub><mi>L</mi><mi>i</mi></msub><msub><mover><mi>d</mi><mo>&RightArrow;</mo></mover><mi>i</mi></msub></mrow>]]></math><img file="FDA0000493851680000021.GIF" wi="627" he="87" /></maths>步骤七:如果u<sub>i+1</sub>≤1则增加插补周期数为i=i+1,返回步骤二;否则参数曲线直接插补完成,生成的P<sub>i</sub>={x<sub>i</sub>,y<sub>i</sub>,z<sub>i</sub>}(i=0,1,2,...)为插补过程生成的无速度波动误差插补点;插补过程几何误差计算:第i个插补周期的插补参数u<sub>i</sub>处的曲线上的点为C(u<sub>i</sub>),对应的无速度波动插补点为P<sub>i</sub>,曲率半径为ρ<sub>i</sub>,以及主法矢为<img file="FDA0000493851680000022.GIF" wi="83" he="85" />经过割线法插补得到的下一个无速度波动插补点为P<sub>i+1</sub>,推导在第i个插补周期的径向误差和弓高误差分别为:<maths num="0005" id="cmaths0005"><math><![CDATA[<mfenced open='{' close=''><mtable><mtr><mtd><msubsup><mi>e</mi><mi>i</mi><mi>r</mi></msubsup><mo>=</mo><mo>|</mo><msub><mi>&rho;</mi><mi>i</mi></msub><mo>-</mo><mo>|</mo><mo>|</mo><mi>C</mi><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>&rho;</mi><mi>i</mi></msub><msub><mover><mi>n</mi><mo>&RightArrow;</mo></mover><mi>i</mi></msub><mo>-</mo><msub><mi>P</mi><mi>i</mi></msub><mo>|</mo><mo>|</mo><mo>|</mo></mtd></mtr><mtr><mtd><msubsup><mi>e</mi><mi>i</mi><mi>c</mi></msubsup><mo>=</mo><mo>|</mo><msub><mi>&rho;</mi><mi>i</mi></msub><mo>-</mo><mo>|</mo><mo>|</mo><mi>C</mi><mrow><mo>(</mo><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>&rho;</mi><mi>i</mi></msub><msub><mover><mi>n</mi><mo>&RightArrow;</mo></mover><mi>i</mi></msub><mo>-</mo><mfrac><mrow><msub><mi>P</mi><mi>i</mi></msub><mo>+</mo><msub><mi>P</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mrow><mn>2</mn></mfrac><mo>|</mo><mo>|</mo><mo>|</mo></mtd></mtr></mtable></mfenced>]]></math><img file="FDA0000493851680000023.GIF" wi="706" he="283" /></maths>其中,各步骤中的符号‘||·||’为直线长度计算,符号‘&lt;·,·&gt;’为向量的数量积计算。
地址 100191 北京市海淀区学院路37号