From 52dd50ab601b01abe30fbaf1f600c69194a7fe93 Mon Sep 17 00:00:00 2001 From: xinyang Date: Thu, 9 May 2019 20:18:08 +0800 Subject: [PATCH] something --- CMakeLists.txt | 1 + main.cpp | 13 ++++-- others/include/options/options.h | 66 ++++------------------------ others/src/camera/camera_wrapper.cpp | 7 ++- others/src/options/options.cpp | 8 ++-- others/src/uart/uart.cpp | 22 +++++++--- tools/bind-monitor.sh | 2 +- 7 files changed, 42 insertions(+), 77 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 98501bf..9663ec0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ SET(CMAKE_CXX_STANDARD 11) SET(CMAKE_BUILD_TYPE RELEASE) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPATH=\"\\\"${PROJECT_SOURCE_DIR}\\\"\"") +# Todo ## 使用编译期固定选项,以略微提升性能。 #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIX_OPTIONS") ## 固定使用相机运行 diff --git a/main.cpp b/main.cpp index d37a1c5..2e0b7b7 100644 --- a/main.cpp +++ b/main.cpp @@ -53,19 +53,23 @@ int main(int argc, char *argv[]) { WrapperHead *video_energy; if (from_camera) { video_armor = new CameraWrapper(0, "armor"); -// video_energy = new CameraWrapper(1, "energy"); + 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()) { + if (video_armor->init() && video_energy->init()) { cout << "Video source initialization successfully." << endl; + } else { + delete video_armor; + delete video_energy; + cout << "Program fails. Restarting" << endl; } 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/"); @@ -74,7 +78,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", { @@ -103,6 +107,7 @@ int main(int argc, char *argv[]) { }); } delete video_armor; + delete video_energy; cout << "Program fails. Restarting" << endl; } diff --git a/others/include/options/options.h b/others/include/options/options.h index 082b927..5563a0a 100644 --- a/others/include/options/options.h +++ b/others/include/options/options.h @@ -5,64 +5,16 @@ #ifndef _OPTIONS_H_ #define _OPTIONS_H_ -#ifdef FIX_OPTIONS - #ifdef SHOW_ARMOR_BOX - #define show_armor_box true - #else - #define show_armor_box false - #endif - #ifdef SHOW_ARMOR_BOXES - #define show_armor_boxes true - #else - #define show_armor_boxes false - #endif - - #ifdef SHOW_LIGHT_BLOBS - #define show_light_blobs true - #else - #define show_light_blobs false - #endif - - #ifdef SHOW_ORIGIN - #define show_origin true - #else - #define show_origin false - #endif - - #ifdef SAVE_LABELLED - #define save_labelled true - #else - #define save_labelled false - #endif - - #ifdef RUN_WITH_CAMERA - #define run_with_camera true - #else - #define run_with_camera false - #endif - - #ifdef SAVE_VIDEO - #define save_video true - #else - #define save_video false - #endif - - #ifdef COLLECT_DATA - #define collect_data true - #else - #define collect_data false - #endif -#else /* FIX_OPTIONS */ - extern bool show_armor_box; - extern bool show_armor_boxes; - extern bool show_light_blobs; - extern bool show_origin; - extern bool save_labelled; - extern bool run_with_camera; - extern bool save_video; - extern bool collect_data; -#endif /* FIX_OPTIONS */ +extern bool show_armor_box; +extern bool show_armor_boxes; +extern bool show_light_blobs; +extern bool show_origin; +extern bool save_labelled; +extern bool run_with_camera; +extern bool save_video; +extern bool collect_data; +extern bool wait_uart; void process_options(int argc, char *argv[]); diff --git a/others/src/camera/camera_wrapper.cpp b/others/src/camera/camera_wrapper.cpp index ad2c152..e765b1e 100644 --- a/others/src/camera/camera_wrapper.cpp +++ b/others/src/camera/camera_wrapper.cpp @@ -40,14 +40,13 @@ bool CameraWrapper::init() { for(i=0; i= camera_cnts){ @@ -72,7 +71,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/others/src/options/options.cpp b/others/src/options/options.cpp index 036acb4..088dc73 100644 --- a/others/src/options/options.cpp +++ b/others/src/options/options.cpp @@ -6,7 +6,6 @@ #include #include -#ifndef FIX_OPTIONS bool show_armor_box = false; bool show_armor_boxes = false; bool show_light_blobs = false; @@ -15,6 +14,7 @@ bool save_labelled = false; bool run_with_camera = false; bool save_video = false; bool collect_data = false; +bool wait_uart = false; void process_options(int argc, char *argv[]){ if(argc >= 2){ @@ -61,12 +61,12 @@ void process_options(int argc, char *argv[]){ }else if(strcmp(argv[i], "--collect-data") == 0){ collect_data = true; LOGM("Enable data collection!"); + }else if(strcmp(argv[i], "--wait-uart") == 0){ + wait_uart = true; + LOGM("Wait uart until available!"); }else{ LOGW("Unknown option: %s. Use --help to see options.", argv[i]); } } } } -#else -void process_options(int argc, char *argv[]){}; -#endif /* FIX_OPTIONS */ diff --git a/others/src/uart/uart.cpp b/others/src/uart/uart.cpp index 819ea4a..06de6ef 100644 --- a/others/src/uart/uart.cpp +++ b/others/src/uart/uart.cpp @@ -4,6 +4,7 @@ #include #include +#include #include using std::cout; @@ -17,11 +18,14 @@ GMAngle_t aim; Uart::Uart(){ - fd = open("/dev/ttyUSB0", O_RDWR); - if(fd < 0) - { - cerr<<"open port error"<((z_tmp >> 0) & 0xFF); buff[7] = 'e'; - write(fd, buff, 8); - + int cnt=0; + while((cnt+=write(fd, buff+cnt, 8-cnt))!=-1 && cnt<8); + if(cnt==-1 && wait_uart){ + LOGE("Uart send fail, the uart device may offline! Restart!"); + exit(-1); + } } uint8_t Uart::receive() { diff --git a/tools/bind-monitor.sh b/tools/bind-monitor.sh index 5e27975..c52b59a 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 "echo \"sjturm\" | sudo -S $1/tools/monitor.sh \"$2/run --run-with-camera --show-armor-box --wait-uart\"" >> $2/monitor-run chmod +x $2/monitor-run