Ejemplo n.º 1
0
 def bias_n_li(self, theta):  #接收一个list类型的theta参数;返回【所有级】的结果
     runout = self.runout
     r = self.r
     H = self.H
     p = [0] * (len(theta))
     for i in range(len(theta)):
         vector_down = pre.pfit(
             self.gcfl(r[i * 4], runout[i * 4], 0, theta[i]))
         vector_up = pre.pfit(
             self.gcfl(r[i * 4 + 1], runout[i * 4 + 1], 0, theta[i]))
         center_down = pre.circ(
             self.gcra(r[i * 4 + 2], runout[i * 4 + 2], 0, theta[i]))
         center_up = pre.circ(
             self.gcra(r[i * 4 + 3], runout[i * 4 + 3], 0, theta[i]))
         results = pre.eccentric(center_down[1], center_down[2],
                                 center_up[1], center_up[2], vector_down[0],
                                 vector_down[1], vector_down[2],
                                 vector_up[0], vector_up[1], vector_up[2],
                                 H[i])
         p[i] = np.array([[1, 0, results[2], results[0]],
                          [0, 1, results[3], results[1]],
                          [-results[2], -results[3], 1, H[i]], [0, 0, 0,
                                                                1]])
     e, phase = [0] * (len(p)), [0] * (len(p))
     m = 1
     for i in range(len(p)):
         m = np.dot(m, p[i])
         #偏心量
         e[i] = np.sqrt(m[0, 3]**2 + m[1, 3]**2)
         #偏心相位
         phase[i] = self.get_phase(m[0, 3], m[1, 3])
     return np.stack((e, phase), axis=1)
Ejemplo n.º 2
0
 def bias_2(self, part1_theta, part2_theta):
     runout = self.runout
     r = self.r
     H = self.H
     #生成坐标
     part1_flat_coordinate_down = self.gcfl(r[0], runout[0], 0, part1_theta)
     part1_flat_coordinate_up = self.gcfl(r[1], runout[1], 0, part1_theta)
     part1_radial_coordinate_down = self.gcra(r[2], runout[2], 0,
                                              part1_theta)
     part1_radial_coordinate_up = self.gcra(r[3], runout[3], 0, part1_theta)
     #part1两端圆心及法向量
     part1_center_down = pre.circ(part1_radial_coordinate_down)
     part1_center_up = pre.circ(part1_radial_coordinate_up)
     part1_vector_down = pre.pfit(part1_flat_coordinate_down)
     part1_vector_up = pre.pfit(part1_flat_coordinate_up)
     #生成坐标
     part2_flat_coordinate_down = self.gcfl(r[4], runout[4], 0, part2_theta)
     part2_flat_coordinate_up = self.gcfl(r[5], runout[5], 0, part2_theta)
     part2_radial_coordinate_down = self.gcra(r[6], runout[6], 0,
                                              part2_theta)
     part2_radial_coordinate_up = self.gcra(r[7], runout[7], 0, part2_theta)
     #part2两端圆心及法向量
     part2_center_down = pre.circ(part2_radial_coordinate_down)
     part2_center_up = pre.circ(part2_radial_coordinate_up)
     part2_vector_down = pre.pfit(part2_flat_coordinate_down)
     part2_vector_up = pre.pfit(part2_flat_coordinate_up)
     #求出装配后偏心偏斜量
     part1_results = pre.eccentric(
         part1_center_down[1], part1_center_down[2], part1_center_up[1],
         part1_center_up[2], part1_vector_down[0], part1_vector_down[1],
         part1_vector_down[2], part1_vector_up[0], part1_vector_up[1],
         part1_vector_up[2], H[0])
     part2_results = pre.eccentric(
         part2_center_down[1], part2_center_down[2], part2_center_up[1],
         part2_center_up[2], part2_vector_down[0], part2_vector_down[1],
         part2_vector_down[2], part2_vector_up[0], part2_vector_up[1],
         part2_vector_up[2], H[1])
     part1_x_center = part1_results[0]
     part1_y_center = part1_results[1]
     part1_theta_y = part1_results[2]
     part1_theta_x = part1_results[3]
     part2_x_center = part2_results[0]
     part2_y_center = part2_results[1]
     part2_theta_y = part2_results[2]
     part2_theta_x = part2_results[3]
     p1 = np.array([[1, 0, part1_theta_y, part1_x_center],
                    [0, 1, part1_theta_x, part1_y_center],
                    [-part1_theta_y, -part1_theta_x, 1, H[0]], [0, 0, 0,
                                                                1]])
     p2 = np.array([[1, 0, part2_theta_y, part2_x_center],
                    [0, 1, part2_theta_x, part2_y_center],
                    [-part2_theta_y, -part2_theta_x, 1, H[1]], [0, 0, 0,
                                                                1]])
     m = np.matmul(p1, p2)
     #偏心量
     e = np.sqrt(m[0, 3]**2 + m[1, 3]**2)
     #偏心相位
     phase = self.get_phase(m[0, 3], m[1, 3])
     return [e, phase]
Ejemplo n.º 3
0
    def getPara2(self):
        runout = self.runout
        r = self.r
        para = [[]] * len(r)
        for i in range(int(len(r) / 4)):
            vector_down = pre.pfit(pre.gcfl(r[i * 4], runout[i * 4], 0))
            vector_up = pre.pfit(pre.gcfl(r[i * 4 + 1], runout[i * 4 + 1], 0))
            args_1 = list(zip([vector_down] * 36,
                              [-i * 10
                               for i in range(36)]))  # 需对相位取负结果才和之前一样,原因未知??
            args_2 = list(zip([vector_up] * 36, [-i * 10 for i in range(36)]))
            para[i * 4] = [i for i in map(self.spin_vec, args_1)]
            para[i * 4 + 1] = [i for i in map(self.spin_vec, args_2)]

            center_down = pre.circ(pre.gcra(r[i * 4 + 2], runout[i * 4 + 2],
                                            0))
            center_up = pre.circ(pre.gcra(r[i * 4 + 3], runout[i * 4 + 3], 0))
            args_3 = list(zip([center_down] * 36, [i * 10 for i in range(36)]))
            args_4 = list(zip([center_up] * 36, [i * 10 for i in range(36)]))
            para[i * 4 + 2] = [i for i in map(self.spin_cen, args_3)]
            para[i * 4 + 3] = [i for i in map(self.spin_cen, args_4)]
        return para
Ejemplo n.º 4
0
 def cen(self, args):
     runout = args[0]
     r = args[1]
     theta = args[2]
     res = pre.circ(pre.gcra(r, pre.spin(runout, theta), 0))
     return res
def pene_f(part1_runout, part2_runout):
    penetration = []
    for i in range(len(part1_runout)):
        penetration.append(part1_runout[i] - part2_runout[i])
    return max(penetration)


penetration_f = pene_f(part1_flat_runout_up, part2_flat_runout_down)
penetration_ff = pene_f(new_part1_flat_node_data_up[:, 3],
                        new_part2_flat_node_data_down[:, 3])
"""np.savetxt("G:/19.12.25whole model (less grids)/check_new_flat_data.csv", new_part2_flat_node_data, delimiter=',')"""
"""============================================================shut up============================================================"""
part1_radial_runout_down = pre.idata(ad_part1_runout, [4])
part1_radial_runout_coordinate_down = pre.gcra(80 / 2,
                                               part1_radial_runout_down, 0)
part1_circle_center_down = pre.circ(part1_radial_runout_coordinate_down)
part1_radial_node_data_down = pre.idata(ad_part1_radial_node_down,
                                        [0, 1, 2, 3])
new_part1_radial_node_data_down = rep.rrure2(part1_radial_runout_down,
                                             part1_radial_node_data_down)

part1_radial_runout_up = -pre.idata(ad_part1_runout, [2])
part1_radial_runout_coordinate_up = pre.gcra(200 / 2, part1_radial_runout_up,
                                             0)
part1_circle_center_up = pre.circ(part1_radial_runout_coordinate_up)
part1_radial_node_data_up = pre.idata(ad_part1_radial_node_up, [0, 1, 2, 3])
new_part1_radial_node_data_up = rep.rrure2(part1_radial_runout_up,
                                           part1_radial_node_data_up)

part2_radial_runout_down = pre.idata(ad_part2_runout, [3])
part2_radial_runout_coordinate_down = pre.gcra(200 / 2,
Ejemplo n.º 6
0
start2 = time.perf_counter()
#两零件高度
H1 = 805 - 118
H2 = 328 + 65 - 5
"""==================================================================测量位置===================================================================="""
"""==================================================================(1)止口====================================================================="""
part1_radial_data_x_down = np.array(pd.read_csv("G:/19.12.25whole model (less grids)/Step5----replaced(90)/Step8——仿真结果/1.13_server_inp4圆心对准,有跳动,过盈0,大变形,加重力, 弱弹簧3300N(frictional)/基准止口x.txt", sep='\t', usecols=[0,1,2,4]))
part1_radial_data_y_down = np.array(pd.read_csv("G:/19.12.25whole model (less grids)/Step5----replaced(90)/Step8——仿真结果/1.13_server_inp4圆心对准,有跳动,过盈0,大变形,加重力, 弱弹簧3300N(frictional)/基准止口y.txt", sep='\t', usecols=[0,1,2,4]))
part2_radial_data_x_up = np.array(pd.read_csv("G:/19.12.25whole model (less grids)/Step5----replaced(90)/Step8——仿真结果/1.13_server_inp4圆心对准,有跳动,过盈0,大变形,加重力, 弱弹簧3300N(frictional)/位置止口x.txt", sep='\t', usecols=[0,1,2,4]))
part2_radial_data_y_up = np.array(pd.read_csv("G:/19.12.25whole model (less grids)/Step5----replaced(90)/Step8——仿真结果/1.13_server_inp4圆心对准,有跳动,过盈0,大变形,加重力, 弱弹簧3300N(frictional)/位置止口y.txt", sep='\t', usecols=[0,1,2,4]))

new_part1_radial_data_down = np.vstack((part1_radial_data_x_down[:, 1] + part1_radial_data_x_down[:, 3], part1_radial_data_y_down[:, 2] + part1_radial_data_y_down[:, 3])).T
new_part2_radial_data_up = np.vstack((part2_radial_data_x_up[:, 1] + part2_radial_data_x_up[:, 3], part2_radial_data_y_up[:, 2] + part2_radial_data_y_up[:, 3])).T

part1_circle_center_down = pre.circ(new_part1_radial_data_down)
part2_circle_center_up = pre.circ(new_part2_radial_data_up)

"""==================================================================(2)端面===================================================================="""
part1_flat_data_down = np.array(pd.read_csv("G:/19.12.25whole model (less grids)/Step5----replaced(90)/Step8——仿真结果/1.13_server_inp4圆心对准,有跳动,过盈0,大变形,加重力, 弱弹簧3300N(frictional)/基准端面.txt", sep='\t'))
part2_flat_data_up = np.array(pd.read_csv("G:/19.12.25whole model (less grids)/Step5----replaced(90)/Step8——仿真结果/1.13_server_inp4圆心对准,有跳动,过盈0,大变形,加重力, 弱弹簧3300N(frictional)/位置端面.txt", sep='\t'))

new_part1_flat_data_down = np.vstack((part1_flat_data_down[:, 1], part1_flat_data_down[:, 2], part1_flat_data_down[:, 3] + part1_flat_data_down[:, 4] + H1)).T
new_part2_flat_data_up = np.vstack((part2_flat_data_up[:, 1], part2_flat_data_up[:, 2], part2_flat_data_up[:, 3] + part2_flat_data_up[:, 4] - H2)).T

part1_normal_vector_down = pre.planefit(new_part1_flat_data_down)
part2_normal_vector_up = pre.planefit(new_part2_flat_data_up)

"""==================================================================拟合矩阵===================================================================="""

results = pre.eccentric(part1_circle_center_down[1], part1_circle_center_down[2], part2_circle_center_up[1], part2_circle_center_up[2], part1_normal_vector_down[0], part1_normal_vector_down[1], part1_normal_vector_down[2], part2_normal_vector_up[0], part2_normal_vector_up[1], part2_normal_vector_up[2], H1 + H2)
Ejemplo n.º 7
0
part1_flat_runout_up = pre.idata(ad_part1_runout, [1])
part1_flat_runout_coordinate_up = pre.gcfl(206.5 / 2, part1_flat_runout_up, 0)
part1_normal_vector_up = pre.planefit(part1_flat_runout_coordinate_up)
part1_flat_node_data_up = pre.idata(ad_part1_flat_node_up, [0,1,2,3])
new_part1_flat_node_data_up = rep.frure(206.5 / 2, part1_normal_vector_up[0], part1_normal_vector_up[1], part1_normal_vector_up[2], part1_normal_vector_up[3], part1_flat_runout_up, part1_flat_node_data_up, 0)
new_part1_flat_runout_up = new_part1_flat_node_data_up[:, 3]
part2_flat_runout_down = -pre.idata(ad_part2_runout, [4])
part2_flat_runout_coordinate_down = pre.gcfl(206.5 / 2, part2_flat_runout_down, 0)
part2_normal_vector_down = pre.planefit(part2_flat_runout_coordinate_down)
part2_flat_node_data_down = pre.idata(ad_part2_flat_node_down, [0,1,2,3])
new_part2_flat_node_data_down = rep.frure(206.5 / 2, part2_normal_vector_down[0], part2_normal_vector_down[1], part2_normal_vector_down[2], part2_normal_vector_down[3], part2_flat_runout_down, part2_flat_node_data_down, 0)
new_part2_flat_runout_down = new_part2_flat_node_data_down[:, 3]

part1_radial_runout_up = -pre.idata(ad_part1_runout, [2])
part1_radial_runout_coordinate_up = pre.gcra(200 / 2, part1_radial_runout_up, 0)
part1_circle_center_up = pre.circ(part1_radial_runout_coordinate_up)
part1_radial_node_data_up = pre.idata(ad_part1_radial_node_up, [0,1,2,3])
new_part1_radial_runout_up = rep.rrure3(part1_radial_runout_up, part1_radial_node_data_up)
part2_radial_runout_down = pre.idata(ad_part2_runout, [3])
part2_radial_runout_coordinate_down = pre.gcra(200 / 2, part2_radial_runout_down, 0)
part2_circle_center_down = pre.circ(part2_radial_runout_coordinate_down[:, 0:3])
part2_radial_node_data_down = pre.idata(ad_part2_radial_node_down, [0,1,2,3])
new_part2_radial_runout_down = rep.rrure3(part2_radial_runout_down, part2_radial_node_data_down)

dif_f = np.stack((new_part1_flat_runout_up, new_part2_flat_runout_down, new_part1_flat_runout_up - new_part2_flat_runout_down), axis=1)
dif_r = np.stack((new_part1_radial_runout_up, new_part2_radial_runout_down, new_part1_radial_runout_up - new_part2_radial_runout_down), axis=1)

#joint
#端面
part1_flat_data_up = np.array(pd.read_csv("G:/19.12.25whole model (less grids)/Step5----replaced(0)/Step8——仿真结果/1.8_inp4圆心对准,有跳动,过盈0,大变形,加重力, 弱弹簧3300N(frictional)/part1端面.txt", sep='\t'))
part2_flat_data_down = np.array(pd.read_csv("G:/19.12.25whole model (less grids)/Step5----replaced(0)/Step8——仿真结果/1.8_inp4圆心对准,有跳动,过盈0,大变形,加重力, 弱弹簧3300N(frictional)/part2端面.txt", sep='\t'))