Merge branch 'master' of https://github.com/lloi7/RM_auto-aim
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
//
|
//
|
||||||
// Created by xinyang on 19-3-27.
|
// Created by xinyang on 19-3-27.
|
||||||
//
|
//
|
||||||
#define LOG_LEVEL LOG_NONE
|
//#define LOG_LEVEL LOG_NONE
|
||||||
#include <log.h>
|
#include <log.h>
|
||||||
#include <options/options.h>
|
#include <options/options.h>
|
||||||
#include <show_images/show_images.h>
|
#include <show_images/show_images.h>
|
||||||
@@ -19,6 +19,7 @@ ArmorFinder::ArmorFinder(EnemyColor color, Uart &u, string paras_folder, const b
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ArmorFinder::run(cv::Mat &src) {
|
void ArmorFinder::run(cv::Mat &src) {
|
||||||
|
static int tracking_cnt = 0;
|
||||||
cv::Mat src_use;
|
cv::Mat src_use;
|
||||||
src_use = src.clone();
|
src_use = src.clone();
|
||||||
cv::cvtColor(src_use, src_gray, CV_RGB2GRAY);
|
cv::cvtColor(src_use, src_gray, CV_RGB2GRAY);
|
||||||
@@ -42,12 +43,13 @@ void ArmorFinder::run(cv::Mat &src) {
|
|||||||
tracker = TrackerToUse::create();
|
tracker = TrackerToUse::create();
|
||||||
tracker->init(src_use, armor_box);
|
tracker->init(src_use, armor_box);
|
||||||
state = TRACKING_STATE;
|
state = TRACKING_STATE;
|
||||||
|
tracking_cnt = 0;
|
||||||
LOGM(STR_CTR(WORD_LIGHT_CYAN, "into track"));
|
LOGM(STR_CTR(WORD_LIGHT_CYAN, "into track"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TRACKING_STATE:
|
case TRACKING_STATE:
|
||||||
if(!stateTrackingTarget(src_use)){
|
if(++tracking_cnt>100 || !stateTrackingTarget(src_use)){
|
||||||
state = SEARCHING_STATE;
|
state = SEARCHING_STATE;
|
||||||
LOGM(STR_CTR(WORD_LIGHT_YELLOW ,"into search!"));
|
LOGM(STR_CTR(WORD_LIGHT_YELLOW ,"into search!"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,10 +117,10 @@ static bool findArmorBoxes(LightBlobs &light_blobs, std::vector<cv::Rect2d> &arm
|
|||||||
cv::Rect2d rect_left = light_blobs.at(static_cast<unsigned long>(i)).rect.boundingRect();
|
cv::Rect2d rect_left = light_blobs.at(static_cast<unsigned long>(i)).rect.boundingRect();
|
||||||
cv::Rect2d rect_right = light_blobs.at(static_cast<unsigned long>(j)).rect.boundingRect();
|
cv::Rect2d rect_right = light_blobs.at(static_cast<unsigned long>(j)).rect.boundingRect();
|
||||||
double min_x, min_y, max_x, max_y;
|
double min_x, min_y, max_x, max_y;
|
||||||
min_x = fmin(rect_left.x, rect_right.x);
|
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);
|
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) - 3;
|
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) + 3;
|
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) {
|
if (min_x < 0 || max_x > 640 || min_y < 0 || max_y > 480) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
15
main.cpp
15
main.cpp
@@ -30,14 +30,14 @@ int state = ENERGY_STATE;
|
|||||||
float curr_yaw = 0, curr_pitch = 0;
|
float curr_yaw = 0, curr_pitch = 0;
|
||||||
float mark_yaw = 0, mark_pitch = 0;
|
float mark_yaw = 0, mark_pitch = 0;
|
||||||
int mark = 0;
|
int mark = 0;
|
||||||
bool use_classifier = false;
|
bool use_classifier = true;
|
||||||
|
|
||||||
void uartReceive(Uart *uart);
|
void uartReceive(Uart *uart);
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
process_options(argc, argv);
|
process_options(argc, argv);
|
||||||
Uart uart;
|
Uart uart;
|
||||||
thread receive(uartReceive, &uart);
|
// thread receive(uartReceive, &uart);
|
||||||
bool flag = true;
|
bool flag = true;
|
||||||
|
|
||||||
while (flag) {
|
while (flag) {
|
||||||
@@ -53,24 +53,25 @@ int main(int argc, char *argv[]) {
|
|||||||
WrapperHead *video_armor;
|
WrapperHead *video_armor;
|
||||||
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() && video_energy->init()) {
|
if (video_armor->init()/* && video_energy->init()*/) {
|
||||||
cout << "Video source initialization successfully." << endl;
|
cout << "Video source initialization successfully." << endl;
|
||||||
} else {
|
} else {
|
||||||
delete video_armor;
|
delete video_armor;
|
||||||
delete video_energy;
|
delete video_energy;
|
||||||
cout << "Program fails. Restarting" << endl;
|
cout << "Program fails. Restarting" << endl;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
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/", use_classifier);
|
ArmorFinder armorFinder(ENEMY_BLUE, uart, PROJECT_DIR"/tools/para/", use_classifier);
|
||||||
@@ -79,7 +80,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", {
|
||||||
|
|||||||
@@ -7,33 +7,51 @@
|
|||||||
#include <options/options.h>
|
#include <options/options.h>
|
||||||
#include <log.h>
|
#include <log.h>
|
||||||
|
|
||||||
using std::cout;
|
using namespace std;
|
||||||
using std::cerr;
|
|
||||||
using std::clog;
|
|
||||||
using std::dec;
|
|
||||||
using std::endl;
|
|
||||||
using std::hex;
|
|
||||||
|
|
||||||
GMAngle_t aim;
|
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(){
|
Uart::Uart(){
|
||||||
if(wait_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{
|
}else{
|
||||||
fd = open("/dev/ttyUSB0", O_RDWR);
|
string name = get_uart_dev_name();
|
||||||
|
if(name == ""){
|
||||||
|
cerr<<"open port error"<<endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fd = open(name.data(), O_RDWR);
|
||||||
if(fd < 0) {
|
if(fd < 0) {
|
||||||
cerr<<"open port error"<<endl;
|
cerr<<"open port error"<<endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fd = open("/dev/ttyUSB1", O_RDWR);
|
||||||
|
// 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 )
|
||||||
{
|
{
|
||||||
cerr<<"set opt error"<<endl;
|
cerr<<"set opt error"<<endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cout<<"uart port success"<<endl;
|
cout << "uart port success" << endl;
|
||||||
|
|
||||||
buff[0] = 's';
|
buff[0] = 's';
|
||||||
buff[1] = '+';
|
buff[1] = '+';
|
||||||
|
|||||||
Reference in New Issue
Block a user