something

This commit is contained in:
xinyang
2019-05-09 20:18:08 +08:00
parent 13ffc6efe6
commit 52dd50ab60
7 changed files with 42 additions and 77 deletions

View File

@@ -5,6 +5,7 @@ SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_BUILD_TYPE RELEASE) SET(CMAKE_BUILD_TYPE RELEASE)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPATH=\"\\\"${PROJECT_SOURCE_DIR}\\\"\"") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPATH=\"\\\"${PROJECT_SOURCE_DIR}\\\"\"")
# Todo
## 使用编译期固定选项,以略微提升性能。 ## 使用编译期固定选项,以略微提升性能。
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIX_OPTIONS") #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIX_OPTIONS")
## 固定使用相机运行 ## 固定使用相机运行

View File

@@ -53,19 +53,23 @@ int main(int argc, char *argv[]) {
WrapperHead *video_energy; WrapperHead *video_energy;
if (from_camera) { if (from_camera) {
video_armor = new CameraWrapper(0, "armor"); video_armor = new CameraWrapper(0, "armor");
// video_energy = new CameraWrapper(1, "energy"); video_energy = new CameraWrapper(1, "energy");
} else { } else {
video_armor = new VideoWrapper("/home/xinyang/Desktop/DataSets/video/blue_4.mp4"); video_armor = new VideoWrapper("/home/xinyang/Desktop/DataSets/video/blue_4.mp4");
video_energy = 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; cout << "Video source initialization successfully." << endl;
} else {
delete video_armor;
delete video_energy;
cout << "Program fails. Restarting" << endl;
} }
Mat energy_src, armor_src; Mat energy_src, armor_src;
for(int i=0; i<10; i++){ for(int i=0; i<10; i++){
video_armor->read(armor_src); video_armor->read(armor_src);
// video_energy->read(armor_src); video_energy->read(armor_src);
} }
ArmorFinder armorFinder(ENEMY_BLUE, uart, PROJECT_DIR"/tools/para/"); ArmorFinder armorFinder(ENEMY_BLUE, uart, PROJECT_DIR"/tools/para/");
@@ -74,7 +78,7 @@ int main(int argc, char *argv[]) {
energy.setAllyColor(ally_color); energy.setAllyColor(ally_color);
energy.setRotation(energy_part_rotation); 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) { while (ok) {
CNT_TIME(WORD_LIGHT_CYAN, "Total", { CNT_TIME(WORD_LIGHT_CYAN, "Total", {
@@ -103,6 +107,7 @@ int main(int argc, char *argv[]) {
}); });
} }
delete video_armor; delete video_armor;
delete video_energy;
cout << "Program fails. Restarting" << endl; cout << "Program fails. Restarting" << endl;
} }

View File

@@ -5,64 +5,16 @@
#ifndef _OPTIONS_H_ #ifndef _OPTIONS_H_
#define _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 extern bool show_armor_box;
#define show_armor_boxes true extern bool show_armor_boxes;
#else extern bool show_light_blobs;
#define show_armor_boxes false extern bool show_origin;
#endif extern bool save_labelled;
extern bool run_with_camera;
#ifdef SHOW_LIGHT_BLOBS extern bool save_video;
#define show_light_blobs true extern bool collect_data;
#else extern bool wait_uart;
#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 */
void process_options(int argc, char *argv[]); void process_options(int argc, char *argv[]);

View File

@@ -40,14 +40,13 @@ bool CameraWrapper::init() {
for(i=0; i<camera_cnts; i++){ for(i=0; i<camera_cnts; i++){
camera_status = CameraInit(&camera_enum_list[i], -1, -1, &h_camera); camera_status = CameraInit(&camera_enum_list[i], -1, -1, &h_camera);
if (camera_status != CAMERA_STATUS_SUCCESS) { if (camera_status != CAMERA_STATUS_SUCCESS) {
LOGE("Camera 0 initialization failed with code %d. See camera_status.h to find the code meaning.", camera_status); CameraUnInit(h_camera);
goto stop; continue;
} }
CameraGetFriendlyName(h_camera, camera_name); CameraGetFriendlyName(h_camera, camera_name);
if(name=="NULL" || strcmp(name.data(), camera_name)==0){ if(name=="NULL" || strcmp(name.data(), camera_name)==0){
break; break;
} }
stop:
CameraUnInit(h_camera); CameraUnInit(h_camera);
} }
if(i >= camera_cnts){ if(i >= camera_cnts){
@@ -72,7 +71,7 @@ stop:
CameraGetExposureTime(h_camera, &t); CameraGetExposureTime(h_camera, &t);
LOGM("Exposure time: %lfms", t/1000.0); LOGM("Exposure time: %lfms", t/1000.0);
// 模拟增益4 // 模拟增益4
CameraSetAnalogGain(h_camera, 60); CameraSetAnalogGain(h_camera, 63);
// 使用预设LUT表 // 使用预设LUT表
CameraSetLutMode(h_camera, LUTMODE_PRESET); CameraSetLutMode(h_camera, LUTMODE_PRESET);
// 抗频闪 // 抗频闪

View File

@@ -6,7 +6,6 @@
#include <log.h> #include <log.h>
#include <cstring> #include <cstring>
#ifndef FIX_OPTIONS
bool show_armor_box = false; bool show_armor_box = false;
bool show_armor_boxes = false; bool show_armor_boxes = false;
bool show_light_blobs = false; bool show_light_blobs = false;
@@ -15,6 +14,7 @@ bool save_labelled = false;
bool run_with_camera = false; bool run_with_camera = false;
bool save_video = false; bool save_video = false;
bool collect_data = false; bool collect_data = false;
bool wait_uart = false;
void process_options(int argc, char *argv[]){ void process_options(int argc, char *argv[]){
if(argc >= 2){ if(argc >= 2){
@@ -61,12 +61,12 @@ void process_options(int argc, char *argv[]){
}else if(strcmp(argv[i], "--collect-data") == 0){ }else if(strcmp(argv[i], "--collect-data") == 0){
collect_data = true; collect_data = true;
LOGM("Enable data collection!"); LOGM("Enable data collection!");
}else if(strcmp(argv[i], "--wait-uart") == 0){
wait_uart = true;
LOGM("Wait uart until available!");
}else{ }else{
LOGW("Unknown option: %s. Use --help to see options.", argv[i]); LOGW("Unknown option: %s. Use --help to see options.", argv[i]);
} }
} }
} }
} }
#else
void process_options(int argc, char *argv[]){};
#endif /* FIX_OPTIONS */

View File

@@ -4,6 +4,7 @@
#include <uart/uart.h> #include <uart/uart.h>
#include <energy/param_struct_define.h> #include <energy/param_struct_define.h>
#include <options/options.h>
#include <log.h> #include <log.h>
using std::cout; using std::cout;
@@ -17,11 +18,14 @@ GMAngle_t aim;
Uart::Uart(){ Uart::Uart(){
fd = open("/dev/ttyUSB0", O_RDWR); if(wait_uart){
if(fd < 0) while((fd = open("/dev/ttyUSB0", O_RDWR)) < 0);
{ }else{
cerr<<"open port error"<<endl; fd = open("/dev/ttyUSB0", O_RDWR);
return; if(fd < 0) {
cerr<<"open port error"<<endl;
return;
}
} }
if(set_opt(fd, 115200, 8, 'N', 1) < 0 ) if(set_opt(fd, 115200, 8, 'N', 1) < 0 )
@@ -146,8 +150,12 @@ void Uart::sendTarget(float x, float y, float z) {
buff[6] = static_cast<char>((z_tmp >> 0) & 0xFF); buff[6] = static_cast<char>((z_tmp >> 0) & 0xFF);
buff[7] = 'e'; 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() { uint8_t Uart::receive() {

View File

@@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
echo "#!/bin/bash" > $2/monitor-run 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 chmod +x $2/monitor-run