摄像头测试代码
在main.c文件中img_processing();函数里pts_left和pts_right两个数组储存边线坐标
This commit is contained in:
57
app/gl_cross.c
Normal file
57
app/gl_cross.c
Normal file
@@ -0,0 +1,57 @@
|
||||
#include "zf_common_headfile.h"
|
||||
#include "gl_headfile.h"
|
||||
|
||||
enum cross_type_e cross_type = CROSS_NONE;
|
||||
bool far_Lpt0_found, far_Lpt1_found;
|
||||
int32_t Both_Boder_None_Cross;
|
||||
|
||||
void CheckCross() {
|
||||
bool Xfound = Lpt0_found && Lpt1_found;
|
||||
if (cross_type == CROSS_NONE && Xfound){
|
||||
cross_type = CROSS_BEGIN;
|
||||
}
|
||||
}
|
||||
|
||||
void RunCross() {
|
||||
bool Xfound = Lpt0_found && Lpt1_found;
|
||||
aim_distance = 0.4;
|
||||
//检测到十字,先按照近线走
|
||||
if (cross_type == CROSS_BEGIN) {
|
||||
if (Lpt0_found) {
|
||||
mid_left_count = pts_resample_left_count = Lpt0_rpts0s_id;
|
||||
track_type = TRACK_LEFT;
|
||||
}
|
||||
if (Lpt1_found) {
|
||||
mid_right_count = pts_resample_right_count = Lpt1_rpts1s_id;
|
||||
track_type = TRACK_RIGHT;
|
||||
}
|
||||
|
||||
//近角点过少,进入远线控制
|
||||
if ((Xfound && (Lpt0_rpts0s_id < 0.2 / RESAMPLEDIST || Lpt1_rpts1s_id < 0.2 / RESAMPLEDIST)) || (pts_resample_left_count <20 && pts_resample_right_count<20)) {
|
||||
cross_type = CROSS_IN;
|
||||
//cross_encoder = current_encoder;
|
||||
}
|
||||
|
||||
}
|
||||
//远线控制进十字,begin_y渐变靠近防丢线
|
||||
else if (cross_type == CROSS_IN) {
|
||||
//寻远线,算法与近线相同
|
||||
cross_farline();
|
||||
|
||||
if (pts_resample_left_count < 5 && pts_resample_right_count < 5) {
|
||||
Both_Boder_None_Cross++;
|
||||
}
|
||||
if (Both_Boder_None_Cross > 2 && pts_resample_left_count > 20 && pts_resample_right_count > 20) {
|
||||
cross_type = CROSS_NONE;
|
||||
Both_Boder_None_Cross = 0;
|
||||
}
|
||||
if (far_Lpt1_found) { track_type = TRACK_RIGHT; }
|
||||
else if (far_Lpt0_found) { track_type = TRACK_LEFT; }
|
||||
else if (Both_Boder_None_Cross > 0 && pts_resample_right_count < 5) { track_type = TRACK_RIGHT; }
|
||||
else if (Both_Boder_None_Cross > 0 && pts_resample_left_count < 5) { track_type = TRACK_LEFT; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void cross_farline(){}
|
||||
Reference in New Issue
Block a user