一种爬行焊接机器人和焊缝间夹角估计方法与流程

文档序号:12456787阅读:来源:国知局

技术特征:

1.一种爬行焊接机器人和焊缝间夹角估计方法,其特征在于:包括如下步骤:

步骤一:获取传感器采集的信息;传感器包括激光焊缝跟踪传感器和陀螺仪,信息具体包括激光焊缝跟踪传感器采集的焊缝楞的焊缝楞的坐标,陀螺仪测量的机器人角速度信息;

获得k时刻的焊缝楞的坐标X1m(k)和X2m(k),陀螺仪测量的机器人角速度ωm(k);

步骤二:获取激光焊缝跟踪传感器的运动信息;

获得k时刻的机器人前进速度VC(k),码盘计算出的机器人转角Δθm(k);

步骤三:根据焊缝楞的坐标、机器人角速度以及前进速度和转角,建立状态方程,使用卡尔曼滤波器对爬行焊接机器人与焊缝间夹角进行最优估计,并得到焊缝楞的坐标的滤波值;

步骤四:重复上述步骤,不断地得到新的结果,直到焊接过程结束。

2.根据权利要求1所述的一种爬行焊接机器人和焊缝间夹角估计方法,其特征在于:步骤三中具体方法如下:

A.建立状态方程如下:

<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>&theta;</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mi>&omega;</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mn>1</mn> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mn>2</mn> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mi>&delta;</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mi>T</mi> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>V</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>T</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>V</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <msup> <mi>T</mi> <mn>2</mn> </msup> <mo>/</mo> <mn>2</mn> </mrow> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>V</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>T</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>V</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <msup> <mi>T</mi> <mn>2</mn> </msup> <mo>/</mo> <mn>2</mn> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>&theta;</mi> <mo>(</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mi>&omega;</mi> <mo>(</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mn>1</mn> </msub> <mo>(</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mn>2</mn> </msub> <mo>(</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mi>&delta;</mi> <mo>(</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <mi>W</mi> </mrow>

<mrow> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>&Delta;</mi> <msub> <mi>&theta;</mi> <mi>m</mi> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&omega;</mi> <mi>m</mi> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mrow> <mn>1</mn> <mi>m</mi> </mrow> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>m</mi> </mrow> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mi>T</mi> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>&theta;</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mi>&omega;</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mn>1</mn> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mn>2</mn> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mi>&delta;</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> <mo>+</mo> <mi>V</mi> </mrow>

其中,T为采样时间,k为时刻,VC为爬行焊接机器人前进速度,θ为爬行焊接机器人与焊缝间夹角,ω为爬行焊接机器人旋转角速度,X1和X2分别为焊缝第一、第二条楞的横坐标,δ为陀螺仪零偏,Δθm为通过码盘计算的爬行机器人转角,ωm为陀螺仪测量的角速度,X1m和X2m分别为激光焊缝跟踪传感器测量的焊缝第一、第二条楞的横坐标,W为系统误差矩阵,V为测量误差矩阵;

将上式简记为:

X(k)=Φ(k,k-1)X(k-1)+W

Z(k)=HX(k)+V

其中,X为状态值向量,Φ为状态转移矩阵,Z为观测值向量,H为观测矩阵,其值分别为:

<mrow> <mi>X</mi> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>&theta;</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mi>&omega;</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mn>1</mn> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mn>2</mn> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <mi>&delta;</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> </mrow>

<mrow> <mi>&Phi;</mi> <mrow> <mo>(</mo> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mi>T</mi> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>V</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>T</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>V</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <msup> <mi>T</mi> <mn>2</mn> </msup> <mo>/</mo> <mn>2</mn> </mrow> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>V</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>T</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>V</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <msup> <mi>T</mi> <mn>2</mn> </msup> <mo>/</mo> <mn>2</mn> </mrow> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>

<mrow> <mi>Z</mi> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>&Delta;</mi> <msub> <mi>&theta;</mi> <mi>m</mi> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>&omega;</mi> <mi>m</mi> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mrow> <mn>1</mn> <mi>m</mi> </mrow> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>X</mi> <mrow> <mn>2</mn> <mi>m</mi> </mrow> </msub> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mtd> </mtr> </mtable> </mfenced> </mrow>

<mrow> <mi>H</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mi>T</mi> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> </mtr> </mtable> </mfenced> </mrow>

B.使用卡尔曼滤波器进行滤波,递推得到k时刻的状态值向量的估计值

<mrow> <mover> <mi>X</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>=</mo> <mi>&Phi;</mi> <mrow> <mo>(</mo> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mover> <mi>X</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

P(k|k-1)=Φ(k,k-1)P(k-1|k-1)ΦT(k,k-1)+Q

K(k)=P(k|k-1)HT(HP(k|k-1)HT+R)-1

P(k|k)=(I-K(k)H)P(k|k-1)

<mrow> <mover> <mi>X</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>=</mo> <mover> <mi>X</mi> <mo>^</mo> </mover> <mrow> <mo>(</mo> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>+</mo> <mi>K</mi> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <mi>Z</mi> <mo>(</mo> <mi>k</mi> <mo>)</mo> <mo>-</mo> <mi>H</mi> <mover> <mi>X</mi> <mo>^</mo> </mover> <mo>(</mo> <mrow> <mi>k</mi> <mo>|</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> </mrow> <mo>)</mo> <mo>)</mo> </mrow> </mrow>

其中,Q为系统误差W的协方差矩阵,R为测量误差V的协方差矩阵,为状态值向量的估计值,P为状态值向量的估计值的噪声协方差矩阵,I为单位矩阵,K为增益矩阵;

C.得到k时刻的爬行焊接机器人与焊缝间夹角估计值和滤波后的焊缝楞的横坐标

3.根据权利要求2所述的一种爬行焊接机器人和焊缝间夹角估计方法,其特征在于:建立的矩阵形式的状态方程展开后,包括如下方程:

<mrow> <msub> <mi>X</mi> <mi>n</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>V</mi> <mi>C</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>)</mo> </mrow> <mi>T</mi> <mo>&CenterDot;</mo> <mi>&theta;</mi> <mrow> <mo>(</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>+</mo> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> <msup> <mi>VT</mi> <mn>2</mn> </msup> <mi>&omega;</mi> <mrow> <mo>(</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>X</mi> <mi>n</mi> </msub> <mrow> <mo>(</mo> <mi>k</mi> <mo>-</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

其中,n代表焊缝的第n条楞,且不包括噪声项。

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