diff --git a/energy/src/energy/clear/clear.cpp b/energy/src/energy/clear/clear.cpp index 8efbdbc..bd7d946 100644 --- a/energy/src/energy/clear/clear.cpp +++ b/energy/src/energy/clear/clear.cpp @@ -8,11 +8,10 @@ using namespace std; using namespace cv; - //---------------------------------------------------------------------------------------------------------------------- // 此函数用于清空各vector // --------------------------------------------------------------------------------------------------------------------- -void Energy::clearAll(){ +void Energy::clearAll() { fans.clear(); armors.clear(); flow_strip_fans.clear(); @@ -24,10 +23,11 @@ void Energy::clearAll(){ //---------------------------------------------------------------------------------------------------------------------- // 此函数用于图像预处理 // --------------------------------------------------------------------------------------------------------------------- -void Energy::initImage(cv::Mat &src){ +void Energy::initImage(cv::Mat &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); + if (show_energy)waitKey(1); } diff --git a/energy/src/energy/clear/energy_init.cpp b/energy/src/energy/clear/energy_init.cpp index 80caba9..c518df5 100644 --- a/energy/src/energy/clear/energy_init.cpp +++ b/energy/src/energy/clear/energy_init.cpp @@ -82,7 +82,7 @@ void Energy::initEnergy() { void Energy::initEnergyPartParam() { // gimbal_energy_part_param_.GRAY_THRESH = 120;//home // gimbal_energy_part_param_.GRAY_THRESH = 200;//official - gimbal_energy_part_param_.GRAY_THRESH = 180;//game + gimbal_energy_part_param_.GRAY_THRESH =180;//game gimbal_energy_part_param_.SPLIT_GRAY_THRESH = 180; gimbal_energy_part_param_.FAN_GRAY_THRESH = 75; gimbal_energy_part_param_.ARMOR_GRAY_THRESH = 80; diff --git a/energy/src/energy/run.cpp b/energy/src/energy/run.cpp index 9cf3006..fd5d95b 100644 --- a/energy/src/energy/run.cpp +++ b/energy/src/energy/run.cpp @@ -106,6 +106,8 @@ void Energy::runBig(cv::Mat &gimbal_src) { if (save_mark)writeDownSlightChange(gimbal_src); getPredictPoint(target_point); getAimPoint(predict_point); +// cout << "yaw: " << yaw_rotation << '\t' << "pitch: " << pitch_rotation << '\t' << "shoot: " << shoot << endl; +// waitKey(0); judgeShootInGimbal(); sendEnergy(); } diff --git a/energy/src/energy/send/send.cpp b/energy/src/energy/send/send.cpp index 2feaa77..2a9ab2e 100644 --- a/energy/src/energy/send/send.cpp +++ b/energy/src/energy/send/send.cpp @@ -18,34 +18,51 @@ void Energy::sendEnergy() { if (camera_cnt == 1) { sum_yaw += yaw_rotation; sum_pitch += pitch_rotation; - MINMAX(sum_yaw, -100, 100); - MINMAX(sum_pitch, -100, 100); + if (ROBOT_ID == 3 || ROBOT_ID == 4 || ROBOT_ID == 8) { + MINMAX(sum_yaw, -100, 100); + MINMAX(sum_yaw, -100, 100); + } else if (ROBOT_ID == 7) { + float yaw_I_component = BIG_YAW_AIM_KI * sum_yaw; + float pitch_I_component = BIG_PITCH_AIM_KI * sum_pitch; + MINMAX(yaw_I_component, -3, 3); + MINMAX(pitch_I_component, -3, 3); +// MINMAX(yaw_I_component, -2, 2); +// MINMAX(pitch_I_component, -2, 2); + } + double tmp_yaw = yaw_rotation; double tmp_pitch = pitch_rotation; - yaw_rotation = BIG_YAW_AIM_KP * yaw_rotation + BIG_YAW_AIM_KI * sum_yaw + BIG_YAW_AIM_KD * (yaw_rotation - last_yaw); + yaw_rotation = BIG_YAW_AIM_KP * yaw_rotation + BIG_YAW_AIM_KI * sum_yaw + + BIG_YAW_AIM_KD * (yaw_rotation - last_yaw); pitch_rotation = BIG_PITCH_AIM_KP * pitch_rotation + BIG_PITCH_AIM_KI * sum_pitch + - BIG_PITCH_AIM_KD * (pitch_rotation - last_pitch); + BIG_PITCH_AIM_KD * (pitch_rotation - last_pitch); +// cout << BIG_YAW_AIM_KP * yaw_rotation << '\t' << BIG_YAW_AIM_KI * sum_yaw << '\t' +// << BIG_YAW_AIM_KD * (yaw_rotation - last_yaw) << endl; last_yaw = tmp_yaw; last_pitch = tmp_pitch; + if (ROBOT_ID == 7) { + MINMAX(yaw_rotation, -6, 6); + MINMAX(pitch_rotation, -6, 6); + } } else if (is_chassis) { - sum_yaw += yaw_rotation - mcu_data.curr_yaw; - sum_pitch += pitch_rotation - mcu_data.curr_pitch; - double tmp_yaw = yaw_rotation; - double tmp_pitch = pitch_rotation; - yaw_rotation = BIG_YAW_AIM_KP * (yaw_rotation - mcu_data.curr_yaw) + BIG_YAW_AIM_KI * sum_yaw; - pitch_rotation = BIG_PITCH_AIM_KP * (pitch_rotation - mcu_data.curr_pitch) + BIG_PITCH_AIM_KI * sum_pitch; - last_yaw = tmp_yaw; - last_pitch = tmp_pitch; +// sum_yaw += yaw_rotation - mcu_data.curr_yaw; +// sum_pitch += pitch_rotation - mcu_data.curr_pitch; +// double tmp_yaw = yaw_rotation; +// double tmp_pitch = pitch_rotation; +// yaw_rotation = BIG_YAW_AIM_KP * (yaw_rotation - mcu_data.curr_yaw) + BIG_YAW_AIM_KI * sum_yaw; +// pitch_rotation = BIG_PITCH_AIM_KP * (pitch_rotation - mcu_data.curr_pitch) + BIG_PITCH_AIM_KI * sum_pitch; +// last_yaw = tmp_yaw; +// last_pitch = tmp_pitch; } - } else if (is_small){ - sum_yaw += yaw_rotation; - sum_pitch += pitch_rotation; - MINMAX(sum_yaw, -100, 100); - MINMAX(sum_pitch, -100, 100); + } else if (is_small) { double tmp_yaw = yaw_rotation; double tmp_pitch = pitch_rotation; yaw_rotation = SMALL_YAW_AIM_KP * yaw_rotation + SMALL_YAW_AIM_KD * (yaw_rotation - last_yaw); pitch_rotation = SMALL_PITCH_AIM_KP * pitch_rotation + SMALL_PITCH_AIM_KD * (pitch_rotation - last_pitch); + if (ROBOT_ID == 7) { + MINMAX(yaw_rotation, -6, 6); + MINMAX(pitch_rotation, -6, 6); + } last_yaw = tmp_yaw; last_pitch = tmp_pitch; } diff --git a/others/include/config/setconfig.h b/others/include/config/setconfig.h index c8bc35c..492b1a7 100644 --- a/others/include/config/setconfig.h +++ b/others/include/config/setconfig.h @@ -35,35 +35,40 @@ #ifndef ENERGY_CAMERA_GAIN #define ENERGY_CAMERA_GAIN (20) #endif + +#ifndef ROBOT_ID + #define ROBOT_ID (0) +#endif + #ifndef SMALL_YAW_AIM_KD - #define SMALL_YAW_AIM_KD (0) + #define SMALL_YAW_AIM_KD (0.35) #endif #ifndef SMALL_YAW_AIM_KP - #define SMALL_YAW_AIM_KP (4) + #define SMALL_YAW_AIM_KP (0.85) #endif #ifndef SMALL_PITCH_AIM_KD - #define SMALL_PITCH_AIM_KD (0) + #define SMALL_PITCH_AIM_KD (0.35) #endif #ifndef SMALL_PITCH_AIM_KP - #define SMALL_PITCH_AIM_KP (3.7) + #define SMALL_PITCH_AIM_KP (0.85) #endif #ifndef BIG_YAW_AIM_KD - #define BIG_YAW_AIM_KD (0) + #define BIG_YAW_AIM_KD (0.35) #endif #ifndef BIG_YAW_AIM_KP - #define BIG_YAW_AIM_KP (6.5) + #define BIG_YAW_AIM_KP (0.85) #endif #ifndef BIG_YAW_AIM_KI - #define BIG_YAW_AIM_KI (0.1) + #define BIG_YAW_AIM_KI (0) #endif #ifndef BIG_PITCH_AIM_KD - #define BIG_PITCH_AIM_KD (0) + #define BIG_PITCH_AIM_KD (0.35) #endif #ifndef BIG_PITCH_AIM_KP - #define BIG_PITCH_AIM_KP (6.5) + #define BIG_PITCH_AIM_KP (0.85) #endif #ifndef BIG_PITCH_AIM_KI - #define BIG_PITCH_AIM_KI (0.1) + #define BIG_PITCH_AIM_KI (0) #endif #ifndef COMPENSATE_YAW #define COMPENSATE_YAW (5) @@ -72,7 +77,7 @@ #define COMPENSATE_PITCH (74) #endif #ifndef EXTRA_DELTA_X - #define EXTRA_DELTA_X (10) + #define EXTRA_DELTA_X (0) #endif #ifndef EXTRA_DELTA_Y #define EXTRA_DELTA_Y (10)