测试bug

This commit is contained in:
Glz
2024-06-26 17:27:38 +08:00
parent 57e132c535
commit 2b5ea8434e
6 changed files with 31 additions and 17 deletions

View File

@@ -36,7 +36,7 @@ void RunBarrier()
} else if (barrier_type == BARRIER_LEFT_RUNNING) { } else if (barrier_type == BARRIER_LEFT_RUNNING) {
track_type = TRACK_RIGHT; track_type = TRACK_RIGHT;
time_barrier = timer_get(TIM_3); time_barrier = timer_get(TIM_3);
if (time_barrier >= 250) { if (time_barrier >= 220) {
barrier_type = BARRIER_NONE; barrier_type = BARRIER_NONE;
track_type = TRACK_RIGHT; track_type = TRACK_RIGHT;
timer_start(TIM_3); timer_start(TIM_3);
@@ -59,7 +59,7 @@ void RunBarrier()
} else if (barrier_type == BARRIER_RIGHT_RUNNING) { } else if (barrier_type == BARRIER_RIGHT_RUNNING) {
track_type = TRACK_LEFT; track_type = TRACK_LEFT;
time_barrier = timer_get(TIM_3); time_barrier = timer_get(TIM_3);
if (time_barrier >= 250) { if (time_barrier >= 220) {
timer_start(TIM_3); timer_start(TIM_3);
timer_clear(TIM_3); timer_clear(TIM_3);
barrier_type = BARRIER_NONE; barrier_type = BARRIER_NONE;

View File

@@ -10,4 +10,4 @@ float straight_aim=0.35f;
float turn_aim=0.35f; float turn_aim=0.35f;
float mid_aim=0.5f; float mid_aim=0.5f;
float barrier_aim=0.5f; float barrier_aim=0.5f;
float barrier_offset=17.0f; float barrier_offset=10.0f;

View File

@@ -6,6 +6,8 @@ enum state_type_e {
TURN_STATE, TURN_STATE,
STRAIGHT_STATE, STRAIGHT_STATE,
CIRCLE_STATE, CIRCLE_STATE,
CIRCLE_RUNNING_STATE,
BARRIER_STATE,
}; };
extern enum state_type_e last_state; extern enum state_type_e last_state;
extern enum state_type_e state_type; extern enum state_type_e state_type;

View File

@@ -177,19 +177,19 @@ void MidLineTrack()
mid_track = mid_right; mid_track = mid_right;
mid_track_count = mid_right_count; mid_track_count = mid_right_count;
} }
float x[mid_track_count / 2]; float x[mid_track_count];
float y[mid_track_count / 2]; float y[mid_track_count];
for (int i = 0; i < mid_track_count / 2; i++) { for (int i = 0; i < mid_track_count; i++) {
x[i] = mid_track[i][1]; x[i] = mid_track[i][1];
y[i] = mid_track[i][0]; y[i] = mid_track[i][0];
} }
if (mid_track_count <= 4) { if (mid_track_count <= 5) {
curvature = last_curvature; curvature = last_curvature;
/* code */ /* code */
} else { } else {
curvature = calculate_curvature(x, y, mid_track_count / 2); curvature = calculate_curvature(x, y, mid_track_count);
} }
last_curvature = curvature; last_curvature = curvature;
} }
@@ -223,18 +223,18 @@ void MidLineTrack()
GetLinesResample(mid_track + begin_id, mid_track_count - begin_id, rptsn, &rptsn_num, RESAMPLEDIST * PIXPERMETER); GetLinesResample(mid_track + begin_id, mid_track_count - begin_id, rptsn, &rptsn_num, RESAMPLEDIST * PIXPERMETER);
if (cross_type == CROSS_IN) { if (cross_type == CROSS_IN) {
float x[rptsn_num / 2]; float x[rptsn_num];
float y[rptsn_num / 2]; float y[rptsn_num];
for (int i = 0; i < rptsn_num / 2; i++) { for (int i = 0; i < rptsn_num; i++) {
x[i] = rptsn[i][1]; x[i] = rptsn[i][1];
y[i] = rptsn[i][0]; y[i] = rptsn[i][0];
} }
if (rptsn_num <= 4) { if (rptsn_num <= 5) {
curvature = last_curvature; curvature = last_curvature;
/* code */ /* code */
} else { } else {
curvature = calculate_curvature(x, y, rptsn_num / 2); curvature = calculate_curvature(x, y, rptsn_num);
} }
last_curvature = curvature; last_curvature = curvature;
} }
@@ -271,10 +271,10 @@ void MidLineTrack()
float temp_near = 0; float temp_near = 0;
if (barrier_type == BARRIER_LEFT_BEGIN || barrier_type == BARRIER_LEFT_RUNNING) { if (barrier_type == BARRIER_LEFT_BEGIN || barrier_type == BARRIER_LEFT_RUNNING) {
dx_near = mid_track[aim_idx_near][1] - cx + barrier_offset; dx_near = mid_track[aim_idx_near][1] - cx + barrier_offset;
pure_angle = -atanf(PIXPERMETER * 2.0f * 0.2f * dx / dn) / PI32 * 180.0f - 20; pure_angle = -atanf(PIXPERMETER * 2.0f * 0.2f * dx / dn) / PI32 * 180.0f - 25;
} else if (barrier_type == BARRIER_RIGHT_BEGIN || barrier_type == BARRIER_RIGHT_RUNNING) { } else if (barrier_type == BARRIER_RIGHT_BEGIN || barrier_type == BARRIER_RIGHT_RUNNING) {
dx_near = mid_track[aim_idx_near][1] - cx - barrier_offset; dx_near = mid_track[aim_idx_near][1] - cx - barrier_offset;
pure_angle = -atanf(PIXPERMETER * 2.0f * 0.2f * dx / dn) / PI32 * 180.0f + 20; pure_angle = -atanf(PIXPERMETER * 2.0f * 0.2f * dx / dn) / PI32 * 180.0f + 25;
} else { } else {
// pure_angle = -atanf(PIXPERMETER * 2.0f * 0.2f * 0.5f * dx / dn) / PI32 * 180.0f; // pure_angle = -atanf(PIXPERMETER * 2.0f * 0.2f * 0.5f * dx / dn) / PI32 * 180.0f;
if (dy > 0) { if (dy > 0) {
@@ -293,9 +293,19 @@ void MidLineTrack()
// // float dn_near = Q_sqrt(dx_near * dx_near + dy_near * dy_near); // // float dn_near = Q_sqrt(dx_near * dx_near + dy_near * dy_near);
// // float error_near = -atan2f(dx_near, dy_near) * 180 / PI32; // // float error_near = -atan2f(dx_near, dy_near) * 180 / PI32;
} }
if (circle_type == CIRCLE_LEFT_IN || circle_type == CIRCLE_LEFT_OUT || circle_type == CIRCLE_RIGHT_IN || circle_type == CIRCLE_RIGHT_OUT || circle_type == CIRCLE_LEFT_RUNNING || circle_type == CIRCLE_RIGHT_RUNNING || circle_type == CIRCLE_LEFT_BEGIN || circle_type == CIRCLE_RIGHT_BEGIN) { if (circle_type == CIRCLE_LEFT_IN || circle_type == CIRCLE_RIGHT_IN ) {
state_type = CIRCLE_STATE; state_type = CIRCLE_STATE;
} }
if (circle_type == CIRCLE_LEFT_RUNNING || circle_type == CIRCLE_RIGHT_RUNNING || circle_type == CIRCLE_RIGHT_OUT || circle_type == CIRCLE_LEFT_OUT || circle_type == CIRCLE_LEFT_END || circle_type == CIRCLE_RIGHT_END)
{
state_type = CIRCLE_RUNNING_STATE;
}
if (barrier_type == BARRIER_LEFT_BEGIN || barrier_type == BARRIER_LEFT_RUNNING || barrier_type == BARRIER_RIGHT_BEGIN || barrier_type == BARRIER_RIGHT_RUNNING)
{
state_type = BARRIER_STATE;
}
if (cross_type == CROSS_BEGIN || cross_type == CROSS_IN) { if (cross_type == CROSS_BEGIN || cross_type == CROSS_IN) {
state_type = STRAIGHT_STATE; state_type = STRAIGHT_STATE;
} }

View File

@@ -68,10 +68,10 @@ int main(void)
state_type = COMMON_STATE; state_type = COMMON_STATE;
img_processing(); img_processing();
get_corners(); get_corners();
aim_distance_select();
tracking(); tracking();
ElementJudge(); ElementJudge();
ElementRun(); ElementRun();
aim_distance_select();
MidLineTrack(); MidLineTrack();
//bt_printf("type= %d", (int)curvature); //bt_printf("type= %d", (int)curvature);
} }

View File

@@ -56,6 +56,8 @@ static void Loop()
ips200_show_int(90, 18 + 92, circle_type, 1); ips200_show_int(90, 18 + 92, circle_type, 1);
ips200_show_int(90, 18 + 110, s_type, 1); ips200_show_int(90, 18 + 110, s_type, 1);
ips200_show_float(90, 18 + 128, curvature, 4, 5); ips200_show_float(90, 18 + 128, curvature, 4, 5);
ips200_show_int(90, 18 + 146, Lpt0_found_barrier_in, 1);
ips200_show_int(90, 18 + 164, Lpt1_found_barrier_in, 1);
} }
/** /**
* @brief 页面事件 * @brief 页面事件