状态下发延时
This commit is contained in:
@@ -14,6 +14,7 @@ float (*rpts)[2];
|
||||
int rpts_num;
|
||||
float last_pure_angle = 0.0f;
|
||||
int8_t turn_flag = 0;
|
||||
int circle_flag = 1;
|
||||
// 计算最小二乘法斜率的函数
|
||||
float leastSquaresSlope(float points[][2], int n)
|
||||
{
|
||||
@@ -293,45 +294,67 @@ void MidLineTrack()
|
||||
// // float dn_near = Q_sqrt(dx_near * dx_near + dy_near * dy_near);
|
||||
// // float error_near = -atan2f(dx_near, dy_near) * 180 / PI32;
|
||||
}
|
||||
if (circle_type == CIRCLE_LEFT_IN || circle_type == CIRCLE_RIGHT_IN ) {
|
||||
|
||||
if (circle_type == CIRCLE_LEFT_IN || circle_type == CIRCLE_RIGHT_IN) {
|
||||
state_type = CIRCLE_STATE;
|
||||
timer_clear(TIM_3);
|
||||
timer_start(TIM_3);
|
||||
}
|
||||
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 (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) {
|
||||
if (circle_flag == 1)
|
||||
{
|
||||
state_type = CIRCLE_STATE;
|
||||
}
|
||||
|
||||
uint16 ti = timer_get(TIM_3);
|
||||
if (ti >= 1000) {
|
||||
timer_stop(TIM_3);
|
||||
timer_clear(TIM_3);
|
||||
|
||||
circle_flag = 0;
|
||||
}
|
||||
if (circle_flag == 0)
|
||||
{
|
||||
state_type = CIRCLE_RUNNING_STATE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (circle_type == CIRCLE_NONE)
|
||||
{
|
||||
circle_flag = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
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) {
|
||||
state_type = STRAIGHT_STATE;
|
||||
}
|
||||
last_state = state_type;
|
||||
// last_state = state_type;
|
||||
if (state_type == STRAIGHT_STATE) {
|
||||
aim_distance = straight_aim;
|
||||
} else if (state_type == TURN_STATE) {
|
||||
aim_distance = mid_aim;
|
||||
}
|
||||
// }else{
|
||||
// aim_distance = common_aim;
|
||||
// }
|
||||
|
||||
if (last_state == STRAIGHT_STATE && (state_type == TURN_STATE || state_type == CIRCLE_STATE)) {
|
||||
turn_flag = 1;
|
||||
timer_clear(TIM_3);
|
||||
timer_start(TIM_3);
|
||||
}
|
||||
if (turn_flag == 1) {
|
||||
aim_distance = turn_aim;
|
||||
|
||||
uint16 ti = timer_get(TIM_3);
|
||||
if (ti >= 2000) {
|
||||
turn_flag = 0;
|
||||
timer_stop(TIM_3);
|
||||
timer_clear(TIM_3);
|
||||
}
|
||||
}
|
||||
|
||||
// if (last_state == STRAIGHT_STATE && (state_type == TURN_STATE || state_type == CIRCLE_STATE)) {
|
||||
// turn_flag = 1;
|
||||
// timer_clear(TIM_3);
|
||||
// timer_start(TIM_3);
|
||||
// }
|
||||
// if (turn_flag == 1) {
|
||||
// aim_distance = turn_aim;
|
||||
|
||||
// uint16 ti = timer_get(TIM_3);
|
||||
// if (ti >= 2000) {
|
||||
// turn_flag = 0;
|
||||
// timer_stop(TIM_3);
|
||||
// timer_clear(TIM_3);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user