diff --git a/armor/include/armor_finder/armor_finder.h b/armor/include/armor_finder/armor_finder.h index 9d74f97..0d30ef9 100644 --- a/armor/include/armor_finder/armor_finder.h +++ b/armor/include/armor_finder/armor_finder.h @@ -16,7 +16,7 @@ typedef enum{ class ArmorFinder{ public: - ArmorFinder(EnemyColor color, Uart &u, string paras_folder); + ArmorFinder(EnemyColor color, Uart &u, string paras_folder, const bool &use); ~ArmorFinder() = default; private: @@ -36,6 +36,7 @@ private: int contour_area; Uart &uart; + const bool &use_classifier; bool stateSearchingTarget(cv::Mat &src); bool stateTrackingTarget(cv::Mat &src); diff --git a/armor/src/armor_finder/armor_finder.cpp b/armor/src/armor_finder/armor_finder.cpp index 8ee25c2..f20361d 100644 --- a/armor/src/armor_finder/armor_finder.cpp +++ b/armor/src/armor_finder/armor_finder.cpp @@ -8,12 +8,13 @@ #include #include -ArmorFinder::ArmorFinder(EnemyColor color, Uart &u, string paras_folder) : +ArmorFinder::ArmorFinder(EnemyColor color, Uart &u, string paras_folder, const bool &use) : uart(u), enemy_color(color), state(STANDBY_STATE), classifier(std::move(paras_folder)), - contour_area(0) + contour_area(0), + use_classifier(use) { } @@ -32,7 +33,7 @@ void ArmorFinder::run(cv::Mat &src) { case SEARCHING_STATE: if(stateSearchingTarget(src_use)){ if((armor_box & cv::Rect2d(0, 0, 640, 480)) == armor_box) { - if(!classifier){ + if(!classifier && use_classifier){ cv::Mat roi = src_use.clone()(armor_box), roi_gray; cv::cvtColor(roi, roi_gray, CV_RGB2GRAY); cv::threshold(roi_gray, roi_gray, 180, 255, cv::THRESH_BINARY); diff --git a/armor/src/armor_finder/state_machine/searching_state/searching_state.cpp b/armor/src/armor_finder/state_machine/searching_state/searching_state.cpp index 2d017bf..fa541f5 100644 --- a/armor/src/armor_finder/state_machine/searching_state/searching_state.cpp +++ b/armor/src/armor_finder/state_machine/searching_state/searching_state.cpp @@ -194,7 +194,7 @@ bool ArmorFinder::stateSearchingTarget(cv::Mat &src) { showArmorBoxVector("boxes", split, armor_boxes); cv::waitKey(1); } - if(classifier){ + if(classifier && use_classifier){ for(auto box : armor_boxes){ cv::Mat roi = src(box).clone(); cv::resize(roi, roi, cv::Size(48, 36)); diff --git a/main.cpp b/main.cpp index d37a1c5..a9f20b4 100644 --- a/main.cpp +++ b/main.cpp @@ -30,6 +30,7 @@ int state = ARMOR_STATE; float curr_yaw = 0, curr_pitch = 0; float mark_yaw = 0, mark_pitch = 0; int mark = 0; +bool use_classifier = false; void uartReceive(Uart *uart); @@ -68,7 +69,7 @@ int main(int argc, char *argv[]) { // video_energy->read(armor_src); } - ArmorFinder armorFinder(ENEMY_BLUE, uart, PROJECT_DIR"/tools/para/"); + ArmorFinder armorFinder(ENEMY_BLUE, uart, PROJECT_DIR"/tools/para/", use_classifier); Energy energy(uart); energy.setAllyColor(ally_color); @@ -114,6 +115,7 @@ int main(int argc, char *argv[]) { void uartReceive(Uart *uart) { char buffer[100]; int cnt = 0; + LOGM("data receive start!"); while (true) { char data; while ((data = uart->receive()) != '\n') { @@ -123,7 +125,8 @@ void uartReceive(Uart *uart) { cnt = 0; } } - if (cnt == 10) { +// LOGM("%d", cnt); + if (cnt == 11) { if (buffer[8] == 'e') { state = ENERGY_STATE; LOG(RECEIVE_LOG_LEVEL, "Energy state"); @@ -131,6 +134,13 @@ void uartReceive(Uart *uart) { state = ARMOR_STATE; LOG(RECEIVE_LOG_LEVEL, "Armor state"); } + if (buffer[10] == 0){ + use_classifier = false; + LOG(RECEIVE_LOG_LEVEL, "Classifier off!"); + } else if(buffer[10] == 1){ + use_classifier = true; + LOG(RECEIVE_LOG_LEVEL, "Classifier on!"); + } memcpy(&curr_yaw, buffer, 4); memcpy(&curr_pitch, buffer + 4, 4); LOG(RECEIVE_LOG_LEVEL, "Get yaw:%f pitch:%f", curr_yaw, curr_pitch); diff --git a/others/src/camera/camera_wrapper.cpp b/others/src/camera/camera_wrapper.cpp index ad2c152..d72331b 100644 --- a/others/src/camera/camera_wrapper.cpp +++ b/others/src/camera/camera_wrapper.cpp @@ -72,7 +72,7 @@ stop: CameraGetExposureTime(h_camera, &t); LOGM("Exposure time: %lfms", t/1000.0); // 模拟增益4 - CameraSetAnalogGain(h_camera, 60); + CameraSetAnalogGain(h_camera, 63); // 使用预设LUT表 CameraSetLutMode(h_camera, LUTMODE_PRESET); // 抗频闪 diff --git a/tools/bind-monitor.sh b/tools/bind-monitor.sh index 5e27975..add604c 100755 --- a/tools/bind-monitor.sh +++ b/tools/bind-monitor.sh @@ -1,5 +1,5 @@ #!/bin/bash echo "#!/bin/bash" > $2/monitor-run -echo "$1/tools/monitor.sh \"$2/run --run-with-camera\"" >> $2/monitor-run +echo "$1/tools/monitor.sh \"$2/run --run-with-camera --show-armor-box\"" >> $2/monitor-run chmod +x $2/monitor-run