|
|
|
import math
|
|
|
|
import numpy as np
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
import calc_way
|
|
|
|
import get_data
|
|
|
|
import calc_slope_line
|
|
|
|
import cv2
|
|
|
|
import model
|
|
|
|
import os
|
|
|
|
import time
|
|
|
|
|
|
|
|
model = model.Model()
|
|
|
|
alpha = model.alpha
|
|
|
|
beta = model.beta
|
|
|
|
q=model.q
|
|
|
|
|
|
|
|
def vs_measurement(txt_name, position = 784):
|
|
|
|
# 加载数据
|
|
|
|
state, x_bot, y_bot, x_top, y_top = get_data.get_data(txt_name)
|
|
|
|
if state == 0:
|
|
|
|
return 0, None, None
|
|
|
|
# 拟合上下沿
|
|
|
|
slope_bot, intercept_bot, r2_bot = calc_slope_line.linear_regression(x_bot, y_bot)
|
|
|
|
slope_top, intercept_top, r2_top = calc_slope_line.linear_regression(x_top, y_top)
|
|
|
|
Xw_bot = []
|
|
|
|
Yw_bot = []
|
|
|
|
for i in range(len(x_bot)):
|
|
|
|
Xw, Yw = calc_way.calc_distance(x_bot[i], y_bot[i], alpha, beta)
|
|
|
|
Xw_bot.append(Xw)
|
|
|
|
Yw_bot.append(Yw)
|
|
|
|
slope_Xw, intercept_Xw, r2_Xw = calc_slope_line.linear_regression(Xw_bot, Yw_bot)
|
|
|
|
# 计算路沿与车身夹角
|
|
|
|
angle = math.atan(slope_Xw)
|
|
|
|
# 位置修正
|
|
|
|
position = position
|
|
|
|
# 确认目标点位置并计算高度
|
|
|
|
Yw_pos = slope_Xw * position + intercept_Xw
|
|
|
|
x_pos, y_pos = calc_way.calc_distance2(position, Yw_pos, alpha, beta)
|
|
|
|
print(x_pos, y_pos)
|
|
|
|
k_pos = calc_slope_line.get_k(alpha, beta, x_pos, y_pos)
|
|
|
|
b_pos = calc_slope_line.get_b(x_pos, y_pos, k_pos)
|
|
|
|
print(k_pos, b_pos)
|
|
|
|
x_pos_top, y_pos_top = calc_slope_line.find_intersection((k_pos, -1, b_pos), (slope_top, -1, intercept_top))
|
|
|
|
Zw_pos = calc_way.calc_height(x_pos, y_pos, x_pos_top, y_pos_top, alpha, beta)
|
|
|
|
distance_pos = -(Yw_pos - 53) * math.cos(angle)
|
|
|
|
return 1, Zw_pos, distance_pos
|
|
|
|
|
|
|
|
|
|
|
|
# result = vs_measurement(r"C:\Users\Administrator\Desktop\BYD\7.16\0716\new175.8595023857456.txt", position=900)
|
|
|
|
# print(result)
|