移动热源中心旋转变换(子程序数学模型说明)

qx',y',z'=63Qffππafbcexp-3x'af2+y'b2+z'c2,x' > 0qx',y',z'=63Qfrππarbcexp-3x'ar2+y'b2+z'c2,x'< 0

针对此空间椭圆方程,可以利用旋转椭圆参数方程对此方程进行改进。

下面是二维平面,坐标轴转换。

在机械臂打印过程中,因为装有工具头的Kuka机械臂在尖端上,针对同一个点位,有且仅有8种姿态,对应就有8种不同的热源作用方向。

在金属增材制造中,机械臂挤出装置在打印过程中会不断旋转调整角度,怎样在仿真中实现热源的旋转并与机械臂挤出装置作用方向同时一致呢?

为后续机械臂加入传感器测热源做基于物理上的实时电弧增材制造仿真做准备。

我们需要了解的一个最大的问题就是:热源旋转或者行走是x,y,z在变化,不涉及到其他参数,在任何情况下包括接入实时数据和相关的自动化几何线生成代码,都是针对x,y,z做变化,直接放进x,y,z,公式中的其他参数不变(根据自己实际情况)

有了上述思想,我们就可以对我们的热源模型进行改进。

1)基本旋转矩阵


图中显示了相对于x、y和z轴的旋转角度α、β和γ,显示了围绕z轴旋转一个角度γ的情况。通过收集旋转坐标系的标准基向量,我们可以构造绕z轴的旋转矩阵。

 

同理我们有: 

绕x轴旋转:

 

 绕y轴旋转:

 

2)欧拉角a:

欧拉角相对于运动的坐标系旋转一个坐标系是很重要的。因此,一个旋转发生在另一个旋转之前,因此我们从左到右乘以相应的旋转矩阵(后乘法)。例如,当我们绕x轴旋转一个坐标系,然后绕当前的y轴旋转,最后绕当前的z轴旋转,我们得到XYZ顺序的旋转矩阵:

 有了以上的坐标点旋转变化,我们对其参数化转换,如下列旋转2pi-a之后的坐标变化,

倘若我们要对热源模型进行旋转变化,我们需要对R_{Euler}进行逆变化。

 以下给出类似思想的Dflux子程序例子:

      INCLUDE 'ABA_PARAM.INC'
      parameter(one=1.d0)
      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME

               real:: PI,fr,ff,af,ar,b,c,v,x1,y1,L1,x2,y2,r,cita1,L2,x3,y3,cita2,L3,t1,t2,t3,Q,cita0,x0,y0,xx0,yy0
	x=COORDS(1)
	y=COORDS(2)
	z=COORDS(3)
C     
	PI=3.1415
C 热源参数
                fr=0.6
                ff=1.4
                af=0.04
                ar=0.08 
                b=0.04 
                c=0.010 
                v=0.0050  
C  L1、L2、L3三段路径长度、t1、t2、t3三段路径的结束时间
                x1=0.0
                y1=0.090
                L1=0.090
                x2=-0.039673
                y2=0.093603
                r=0.02
                cita1 = PI+atan( (y2-y1)/(x2+r) )
                L2 = cita1*r
                x3 = -0.305
                y3 = 0.15
                cita2=PI+atan( (y3-y2)/(x3-x2) )
                L3=sqrt( (x3-x2)**2+(y3-y2)**2 )
                t1=L1/v
                t2=(L1+L2)/v 
                t3=(L1+L2+L3)/v      

C     JLTYP=1,表示为体热源 Q热源功率
C	JLTYP=1
               Q=0.8*30*250               

C 以时间作为判定,cita是热源局部坐标系与整体坐标系的夹角,x0,y0是热源中心坐标;xx0,yy0是将整体坐标系的坐标变换到局部坐标系
  
                if ( TIME(2).LE.t1 ) then
                   cita0 = 0                 
                   x0 = 0  
                   y0 = v*TIME(2)
                   xx0 =  (x-x0)*cos(cita0)+(y-y0)*sin(cita0) 
                   yy0 =-(x-x0)*sin(cita0)+(y-y0)*cos(cita0) 
                     if ( yy0.LE.0) then
                       FLUX(1) = 6*sqrt(3.0)/(PI*sqrt(PI)*ar*b*c)*fr*Q*exp(-3*( xx0/b)**2-3*( yy0/ar)**2-3*( z/c)**2)
                   else
                       FLUX(1) = 6*sqrt(3.0)/(PI*sqrt(PI)*ar*b*c)*ff*Q*exp(-3*( xx0/b)**2-3*( yy0/af)**2-3*( z/c )**2)
                    endif

                  elseif ( TIME(2).GT.t1.and.TIME(2).LE.t2) then
                     cita0 = v*( TIME(2) - t1)/r
                     x0 = r*( -1+cos(cita0) )  
                       y0 = y1+r*sin(cita0)
                       xx0 =  (x-x0)*cos(cita0)+(y-y0)*sin(cita0) 
                     yy0 =-(x-x0)*sin(cita0)+(y-y0)*cos(cita0)                    
                       if ( yy0.LE.0) then
                         FLUX(1) = 6*sqrt(3.0)/(PI*sqrt(PI)*ar*b*c)*fr*Q*exp(-3*( xx0/b)**2-3*( yy0/ar)**2-3*( z/c)**2)
                       else
                         FLUX(1) = 6*sqrt(3.0)/(PI*sqrt(PI)*ar*b*c)*ff*Q*exp(-3*( xx0/b)**2-3*( yy0/af)**2-3*( z/c)**2)
                       endif
    
                  elseif ( TIME(2).GT.t2.and.TIME(2).LE.t3) then
                       cita0 = cita2
                       x0 = x2+v*(TIME(2)-t2)*cos(cita0)
                       y0 = y2+v*(TIME(2)-t2)*sin(cita0)  
                       xx0 =  (x-x0)*cos(cita0)+(y-y0)*sin(cita0) 
                       yy0 =-(x-x0)*sin(cita0)+(y-y0)*cos(cita0)          
                       if ( yy0.LE.0) then
                         FLUX(1) = 6*sqrt(3.0)/(PI*sqrt(PI)*ar*b*c)*fr*Q*exp(-3*( xx0/b)**2-3*( yy0/ar)**2-3*( z/c)**2)
                       else
                         FLUX(1) = 6*sqrt(3.0)/(PI*sqrt(PI)*ar*b*c)*ff*Q*exp(-3*( xx0/b)**2-3*( yy0/af)**2-3*( z/c)**2)
                       endif
               
                endif

      RETURN
      END

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的前任奶瓶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值