From 1db78ef53bd6a832fdc9659792e00ee3f137dfcc Mon Sep 17 00:00:00 2001 From: xinyang Date: Thu, 9 May 2019 21:46:39 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E9=80=80=E5=87=BA?= =?UTF-8?q?=E8=BF=BD=E8=B8=AA=E6=A8=A1=E5=BC=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- armor/src/armor_finder/armor_finder.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/armor/src/armor_finder/armor_finder.cpp b/armor/src/armor_finder/armor_finder.cpp index f20361d..168d1ba 100644 --- a/armor/src/armor_finder/armor_finder.cpp +++ b/armor/src/armor_finder/armor_finder.cpp @@ -19,6 +19,7 @@ ArmorFinder::ArmorFinder(EnemyColor color, Uart &u, string paras_folder, const b } void ArmorFinder::run(cv::Mat &src) { + static int tracking_cnt = 0; cv::Mat src_use; src_use = src.clone(); cv::cvtColor(src_use, src_gray, CV_RGB2GRAY); @@ -42,12 +43,13 @@ void ArmorFinder::run(cv::Mat &src) { tracker = TrackerToUse::create(); tracker->init(src_use, armor_box); state = TRACKING_STATE; + tracking_cnt = 0; LOGM(STR_CTR(WORD_LIGHT_CYAN, "into track")); } } break; case TRACKING_STATE: - if(!stateTrackingTarget(src_use)){ + if(++tracking_cnt<100 && !stateTrackingTarget(src_use)){ state = SEARCHING_STATE; LOGM(STR_CTR(WORD_LIGHT_YELLOW ,"into search!")); } From 6225abf161017f5f7cd7225f50ba98f2dbc2428f Mon Sep 17 00:00:00 2001 From: xinyang Date: Thu, 9 May 2019 21:50:52 +0800 Subject: [PATCH 2/5] fix bug --- armor/src/armor_finder/armor_finder.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/armor/src/armor_finder/armor_finder.cpp b/armor/src/armor_finder/armor_finder.cpp index 168d1ba..2904e41 100644 --- a/armor/src/armor_finder/armor_finder.cpp +++ b/armor/src/armor_finder/armor_finder.cpp @@ -1,7 +1,7 @@ // // Created by xinyang on 19-3-27. // -#define LOG_LEVEL LOG_NONE +//#define LOG_LEVEL LOG_NONE #include #include #include @@ -49,7 +49,7 @@ void ArmorFinder::run(cv::Mat &src) { } break; case TRACKING_STATE: - if(++tracking_cnt<100 && !stateTrackingTarget(src_use)){ + if(++tracking_cnt>100 || !stateTrackingTarget(src_use)){ state = SEARCHING_STATE; LOGM(STR_CTR(WORD_LIGHT_YELLOW ,"into search!")); } From 156e4e08611373bcbb7df438f0b115ffc7b7314c Mon Sep 17 00:00:00 2001 From: xinyang Date: Fri, 10 May 2019 19:38:26 +0800 Subject: [PATCH 3/5] fix bug --- main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/main.cpp b/main.cpp index 5b5ae10..cd3c3b6 100644 --- a/main.cpp +++ b/main.cpp @@ -65,6 +65,7 @@ int main(int argc, char *argv[]) { delete video_armor; delete video_energy; cout << "Program fails. Restarting" << endl; + continue; } Mat energy_src, armor_src; From bc1707961cb8aed23f5b43edd345dd574e696ad8 Mon Sep 17 00:00:00 2001 From: xinyang Date: Fri, 10 May 2019 19:39:24 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=B2=E5=8F=A3?= =?UTF-8?q?=E6=9C=89=E6=97=B6=E6=89=93=E4=B8=8D=E5=BC=80=E7=9A=84=EF=BD=82?= =?UTF-8?q?=EF=BD=95=EF=BD=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- others/src/uart/uart.cpp | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/others/src/uart/uart.cpp b/others/src/uart/uart.cpp index 06de6ef..e9ea4f7 100644 --- a/others/src/uart/uart.cpp +++ b/others/src/uart/uart.cpp @@ -7,33 +7,51 @@ #include #include -using std::cout; -using std::cerr; -using std::clog; -using std::dec; -using std::endl; -using std::hex; +using namespace std; GMAngle_t aim; +string get_uart_dev_name(){ + FILE* ls = popen("ls /dev/ttyUSB* --color=never", "r"); + char name[20] = {0}; + fscanf(ls, "%s", name); + return name; +} Uart::Uart(){ if(wait_uart){ - while((fd = open("/dev/ttyUSB0", O_RDWR)) < 0); + string name; + do{ + name = get_uart_dev_name(); + if(name == ""){ + continue; + } + }while((fd=open(name.data(), O_RDWR)) < 0); }else{ - fd = open("/dev/ttyUSB0", O_RDWR); + string name = get_uart_dev_name(); + if(name == ""){ + cerr<<"open port error"< Date: Fri, 10 May 2019 20:46:33 +0800 Subject: [PATCH 5/5] fix bug --- .../searching_state/searching_state.cpp | 8 ++++---- main.cpp | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) 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 fa541f5..39a9a05 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 @@ -117,10 +117,10 @@ static bool findArmorBoxes(LightBlobs &light_blobs, std::vector &arm cv::Rect2d rect_left = light_blobs.at(static_cast(i)).rect.boundingRect(); cv::Rect2d rect_right = light_blobs.at(static_cast(j)).rect.boundingRect(); double min_x, min_y, max_x, max_y; - min_x = fmin(rect_left.x, rect_right.x); - max_x = fmax(rect_left.x + rect_left.width, rect_right.x + rect_right.width); - min_y = fmin(rect_left.y, rect_right.y) - 3; - max_y = fmax(rect_left.y + rect_left.height, rect_right.y + rect_right.height) + 3; + min_x = fmin(rect_left.x, rect_right.x) - 4; + max_x = fmax(rect_left.x + rect_left.width, rect_right.x + rect_right.width) + 4; + min_y = fmin(rect_left.y, rect_right.y) - 4; + max_y = fmax(rect_left.y + rect_left.height, rect_right.y + rect_right.height) + 4; if (min_x < 0 || max_x > 640 || min_y < 0 || max_y > 480) { continue; } diff --git a/main.cpp b/main.cpp index 5b5ae10..eddd1bc 100644 --- a/main.cpp +++ b/main.cpp @@ -30,14 +30,14 @@ 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; +bool use_classifier = true; void uartReceive(Uart *uart); int main(int argc, char *argv[]) { process_options(argc, argv); Uart uart; - thread receive(uartReceive, &uart); +// thread receive(uartReceive, &uart); bool flag = true; while (flag) { @@ -53,13 +53,13 @@ int main(int argc, char *argv[]) { WrapperHead *video_armor; WrapperHead *video_energy; if (from_camera) { - video_armor = new CameraWrapper(0, "armor"); - video_energy = new CameraWrapper(1, "energy"); + video_armor = new CameraWrapper(0/*, "armor"*/); +// video_energy = new CameraWrapper(1, "energy"); } else { video_armor = new VideoWrapper("/home/xinyang/Desktop/DataSets/video/blue_4.mp4"); video_energy = new VideoWrapper("/home/xinyang/Desktop/DataSets/video/blue_4.mp4"); } - if (video_armor->init() && video_energy->init()) { + if (video_armor->init()/* && video_energy->init()*/) { cout << "Video source initialization successfully." << endl; } else { delete video_armor; @@ -70,7 +70,7 @@ int main(int argc, char *argv[]) { Mat energy_src, armor_src; for(int i=0; i<10; i++){ video_armor->read(armor_src); - video_energy->read(armor_src); +// video_energy->read(armor_src); } ArmorFinder armorFinder(ENEMY_BLUE, uart, PROJECT_DIR"/tools/para/", use_classifier); @@ -79,7 +79,7 @@ int main(int argc, char *argv[]) { energy.setAllyColor(ally_color); energy.setRotation(energy_part_rotation); - bool ok = video_armor->read(armor_src) && video_energy->read(armor_src); + bool ok = video_armor->read(armor_src)/* && video_energy->read(armor_src)*/; while (ok) { CNT_TIME(WORD_LIGHT_CYAN, "Total", {