From e1c7e04138a1c13e7f5ca9f7d650deceb142f6b4 Mon Sep 17 00:00:00 2001 From: sun Date: Thu, 18 Jul 2019 20:53:56 +0800 Subject: [PATCH] energy change --- energy/src/energy/clear/clear.cpp | 4 +-- energy/src/energy/clear/energy_init.cpp | 18 +++++------ energy/src/energy/find/energy_finder.cpp | 4 +-- energy/src/energy/get/aim_point_get.cpp | 4 +-- energy/src/energy/get/origin_get.cpp | 8 +++-- energy/src/energy/judge/judge_contour.cpp | 1 + energy/src/energy/run.cpp | 37 ++++++++++++----------- others/src/additions/additions.cpp | 2 +- 8 files changed, 42 insertions(+), 36 deletions(-) diff --git a/energy/src/energy/clear/clear.cpp b/energy/src/energy/clear/clear.cpp index b323af1..5aefa1b 100644 --- a/energy/src/energy/clear/clear.cpp +++ b/energy/src/energy/clear/clear.cpp @@ -23,8 +23,8 @@ void Energy::clearAll(){ // 此函数用于图像预处理 // --------------------------------------------------------------------------------------------------------------------- void Energy::initImage(cv::Mat &src){ - imagePreprocess(src); - if(show_process)imshow("img_preprocess", src); +// imagePreprocess(src); +// if(show_process)imshow("img_preprocess", src); if (src.type() == CV_8UC3)cvtColor(src, src, COLOR_BGR2GRAY); threshold(src, src, energy_part_param_.GRAY_THRESH, 255, THRESH_BINARY); if (show_process)imshow("bin", src); diff --git a/energy/src/energy/clear/energy_init.cpp b/energy/src/energy/clear/energy_init.cpp index 07a4703..fe76569 100644 --- a/energy/src/energy/clear/energy_init.cpp +++ b/energy/src/energy/clear/energy_init.cpp @@ -125,15 +125,15 @@ void Energy::initEnergyPartParam() { gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_MAX = 100000; gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_MIN = 0; - gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MIN = 40; - gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MAX = 65; - gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MIN = 8; - gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MAX = 20; + gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MIN = 45; + gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MAX = 70; + gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MIN = 12; + gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MAX = 24; gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MAX = 12; // gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MIN = 4; - gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MIN = 2.7; - gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_RATIO_MIN = 0.5; - gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_INTERSETION_AREA_MIN = 117; + gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_HW_RATIO_MIN = 2.5; + gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_AREA_RATIO_MIN = 0.6; + gimbal_energy_part_param_.FLOW_STRIP_CONTOUR_INTERSETION_AREA_MIN = 100; gimbal_energy_part_param_.TWIN_ANGEL_MAX = 10; gimbal_energy_part_param_.TARGET_INTERSETION_CONTOUR_AREA_MIN = 40; @@ -229,11 +229,11 @@ void Energy::initRotation() { else if (target_polar_angle > last_target_polar_angle) anticlockwise_rotation_init_cnt++; } //由于刚开始圆心判断不准,角度变化可能计算有误,因此需要在角度正向或逆向变化足够大时才可确定是否为顺逆时针 - if (clockwise_rotation_init_cnt == 30) { + if (clockwise_rotation_init_cnt == 15) { energy_rotation_direction = CLOCKWISE;//顺时针变化30次,确定为顺时针 cout << "rotation: " << energy_rotation_direction << endl; energy_rotation_init = false; - } else if (anticlockwise_rotation_init_cnt == 30) { + } else if (anticlockwise_rotation_init_cnt == 15) { energy_rotation_direction = ANTICLOCKWISE;//逆时针变化30次,确定为顺时针 cout << "rotation: " << energy_rotation_direction << endl; energy_rotation_init = false; diff --git a/energy/src/energy/find/energy_finder.cpp b/energy/src/energy/find/energy_finder.cpp index 100a16b..f9dcf8e 100644 --- a/energy/src/energy/find/energy_finder.cpp +++ b/energy/src/energy/find/energy_finder.cpp @@ -228,7 +228,7 @@ bool Energy::findFlowStrip(const cv::Mat src) { // Size2f cur_size = cur_rect.size; // float length = cur_size.height > cur_size.width ? cur_size.height : cur_size.width; // float width = cur_size.height < cur_size.width ? cur_size.height : cur_size.width; -// if (length / width > 4 && width > 7 && width<30) { +// if (length / width > 2.5 && width > 7 && width<40) { // cout << cur_rect.center << endl; // flow_strip = cv::minAreaRect(flow_strip_contour); // cout << "flow strip area: " << length << '\t' << width << endl; @@ -252,7 +252,7 @@ bool Energy::findCenterROI(const cv::Mat src) { vector mask_rect; target_armor.points(vertices); //计算矩形的4个顶点 for (int i = 0; i < 4; i++) - line(src_mask, vertices[i], vertices[(i + 1) % 4], Scalar(0, 0, 0), 15); + line(src_mask, vertices[i], vertices[(i + 1) % 4], Scalar(0, 0, 0), 20); // imshow("fill", src_mask); if (!findFlowStrip(src_mask))return false; float length = target_armor.size.height > target_armor.size.width ? diff --git a/energy/src/energy/get/aim_point_get.cpp b/energy/src/energy/get/aim_point_get.cpp index 33bbf7b..4364048 100644 --- a/energy/src/energy/get/aim_point_get.cpp +++ b/energy/src/energy/get/aim_point_get.cpp @@ -13,8 +13,8 @@ using namespace cv; // --------------------------------------------------------------------------------------------------------------------- void Energy::getAimPoint(cv::Point target_point) { //五号车 - double dx = -(target_point.x - 320 - 10); - double dy = -(target_point.y - 240 - 22); + double dx = -(target_point.x - 320 - 3); + double dy = -(target_point.y - 240 - 74); //四号车 // double dx = -(target_point.x - 320 + 16); // double dy = -(target_point.y - 240 - 82); diff --git a/energy/src/energy/get/origin_get.cpp b/energy/src/energy/get/origin_get.cpp index 6dfb8e5..06f1840 100644 --- a/energy/src/energy/get/origin_get.cpp +++ b/energy/src/energy/get/origin_get.cpp @@ -13,8 +13,12 @@ using namespace cv; // --------------------------------------------------------------------------------------------------------------------- bool Energy::getOrigin() { if (!auto_mark && !manual_mark) { - double dx = -(circle_center_point.x - 320 - 10); - double dy = -(circle_center_point.y - 240 - 22); +//五号车 +// double dx = -(circle_center_point.x - 320 - 10); +// double dy = -(circle_center_point.y - 240 - 22); +//四号车 + double dx = -(circle_center_point.x - 320 - 3); + double dy = -(circle_center_point.y - 240 - 74); center_delta_yaw = static_cast(atan(dx / FOCUS_PIXAL) * 180 / PI); center_delta_pitch = static_cast(atan(dy / FOCUS_PIXAL) * 180 / PI); if (abs(center_delta_yaw) > 0.3 || abs(center_delta_pitch) > 0.3) { diff --git a/energy/src/energy/judge/judge_contour.cpp b/energy/src/energy/judge/judge_contour.cpp index 31b115a..957702e 100644 --- a/energy/src/energy/judge/judge_contour.cpp +++ b/energy/src/energy/judge/judge_contour.cpp @@ -204,6 +204,7 @@ bool Energy::isValidFlowStripContour(const vector &flow_strip_contour length > energy_part_param_.FLOW_STRIP_CONTOUR_LENGTH_MAX || width > energy_part_param_.FLOW_STRIP_CONTOUR_WIDTH_MAX) { // cout<<"length width fail."<ReadData((uint8_t *) buffer, sizeof(mcuData)+1); if (buffer[sizeof(mcuData)] == '\n') { memcpy(&mcuData, buffer, sizeof(mcuData)); -// LOGM("Get, state:%c, mark:%d!", mcuData.state, (int) mcuData.mark); + LOGM("Get, state:%c, mark:%d!", mcuData.state, (int) mcuData.mark); // LOGM("Get yaw: %f, pitch: %f!", mcuData.curr_yaw, mcuData.curr_pitch); // static int t = time(nullptr); // static int cnt = 0;