pref: 整理部分文件和变量

This commit is contained in:
2024-01-06 16:22:49 +08:00
parent a3bb280c7e
commit 8f0a04b962
12 changed files with 181 additions and 193 deletions

View File

@@ -1,17 +0,0 @@
#include "zf_common_headfile.h"
#include "cw_servo.h"
void cw_servo_init(void)
{
pwm_init(SERVO_L_PWM_CHANNEL, 50, 1000);
pwm_init(SERVO_R_PWM_CHANNEL, 50, 1000);
}
void cw_servo_set_angle(float servo_l_angle, float servo_r_angle)
{
uint32_t servo_l_duty_s = (uint32_t)(servo_l_angle * SERVO_L_DUTY_PER_ANGLE);
uint32_t servo_r_duty_s = (uint32_t)(servo_r_angle * SERVO_R_DUTY_PER_ANGLE);
pwm_set_duty(SERVO_L_PWM_CHANNEL, servo_l_duty_s);
pwm_set_duty(SERVO_R_PWM_CHANNEL, servo_r_duty_s);
}

View File

@@ -1,20 +0,0 @@
#ifndef _CW_SERVO_H__
#define _CW_SERVO_H__
#include "zf_common_headfile.h"
#define SERVO_L_PWM_CHANNEL TIM2_PWM_MAP0_CH1_A0
#define SERVO_R_PWM_CHANNEL TIM2_PWM_MAP0_CH2_A1
#define SERVO_MAX_ANGLE_RANGE (90.0F)
#define SERVO_L_DUTY_MAX (1100.0F)
#define SERVO_L_DUTY_MIN (900.0F)
#define SERVO_R_DUTY_MAX (1100.0F)
#define SERVO_R_DUTY_MIN (900.0F)
#define SERVO_L_DUTY_PER_ANGLE ((SERVO_L_DUTY_MAX - SERVO_L_DUTY_MIN) / SERVO_MAX_ANGLE_RANGE)
#define SERVO_R_DUTY_PER_ANGLE ((SERVO_R_DUTY_MAX - SERVO_R_DUTY_MIN) / SERVO_MAX_ANGLE_RANGE)
extern void cw_servo_init(void);
extern void cw_servo_set_angle(float servo_l_angle, float servo_r_angle);
#endif

View File

@@ -1,8 +1,6 @@
#ifndef COMMON_H_
#define COMMON_H_
#define IMAGE_H (MT9V03X_H)
#define IMAGE_W (MT9V03X_W)
#define BEGINH_L (61)
@@ -16,9 +14,9 @@
#define FILTER_KERNELSIZE (7) // 滤波核大小
#define SELFADAPT_OFFSET (8) // 适应性块大小
#define PIXPERMETER (56)
#define RESAMPLEDIST (0.02)
#define ANGLEDIST (0.2)
#define ROADWIDTH (0.45)
#define RESAMPLEDIST (0.02f)
#define ANGLEDIST (0.2f)
#define ROADWIDTH (0.45f)
#define FRAMENONE (1)
#define FRAMETOLEFT (5)
#define FRAMETORIGHT (5)
@@ -27,6 +25,4 @@ int32_t limit(int32_t x, int32_t low, int32_t up);
int clip(int x, int low, int up);
float fclip(float x, float low, float up);
#endif /* COMMON_H_ */

62
app/gl_data.c Normal file
View File

@@ -0,0 +1,62 @@
#include "gl_data.h"
uint8_t (*Img_Gray)[MT9V03X_W];
int32_t pts_left[PT_MAXLEN][2];
int32_t pts_right[PT_MAXLEN][2];
int32_t pts_left_count;
int32_t pts_right_count;
float pts_inv_l[PT_MAXLEN][2];
float pts_inv_r[PT_MAXLEN][2];
int32_t pts_inv_l_count;
int32_t pts_inv_r_count;
float pts_filter_l[PT_MAXLEN][2];
float pts_filter_r[PT_MAXLEN][2];
int32_t pts_filter_l_count;
int32_t pts_filter_r_count;
float pts_resample_left[PT_MAXLEN][2];
float pts_resample_right[PT_MAXLEN][2];
int32_t pts_resample_left_count;
int32_t pts_resample_right_count;
float mid_left[PT_MAXLEN][2];
float mid_right[PT_MAXLEN][2];
int32_t mid_left_count;
int32_t mid_right_count;
float angle_new_left[PT_MAXLEN];
float angle_new_right[PT_MAXLEN];
int angle_new_left_num;
int angle_new_right_num;
uint8_t mt9v03x_image_copy[MT9V03X_H][MT9V03X_W];
float angle_left[PT_MAXLEN];
float angle_right[PT_MAXLEN];
int angle_left_num;
int angle_right_num;
int Lpt0_rpts0s_id;
int Lpt1_rpts1s_id;
bool Lpt0_found;
bool Lpt1_found;
int Lpt1[2];
int Lpt0[2];
int Lpt_in0_rpts0s_id;
int Lpt_in1_rpts1s_id;
bool Lpt_in0_found;
bool Lpt_in1_found;
int Lpt_in1[2];
int Lpt_in0[2];
bool is_straight0;
bool is_straight1;
bool is_turn0;
bool is_turn1;
float rptsn[PT_MAXLEN][2];
int32_t rptsn_num;
float aim_distance;
track_type_e track_type = TRACK_RIGHT;

74
app/gl_data.h Normal file
View File

@@ -0,0 +1,74 @@
#pragma once
#ifndef _GL_DATA_H
#define _GL_DATA_H
#include "gl_headfile.h"
typedef enum track_type_e {
TRACK_LEFT = 0,
TRACK_RIGHT,
} track_type_e;
extern uint8_t (*Img_Gray)[MT9V03X_W];
extern int32_t pts_left[PT_MAXLEN][2];
extern int32_t pts_right[PT_MAXLEN][2];
extern int32_t pts_left_count;
extern int32_t pts_right_count;
extern float pts_inv_l[PT_MAXLEN][2];
extern float pts_inv_r[PT_MAXLEN][2];
extern int32_t pts_inv_l_count;
extern int32_t pts_inv_r_count;
extern float pts_filter_l[PT_MAXLEN][2];
extern float pts_filter_r[PT_MAXLEN][2];
extern int32_t pts_filter_l_count;
extern int32_t pts_filter_r_count;
extern float pts_resample_left[PT_MAXLEN][2];
extern float pts_resample_right[PT_MAXLEN][2];
extern int32_t pts_resample_left_count;
extern int32_t pts_resample_right_count;
extern float mid_left[PT_MAXLEN][2];
extern float mid_right[PT_MAXLEN][2];
extern int32_t mid_left_count;
extern int32_t mid_right_count;
extern float angle_new_left[PT_MAXLEN];
extern float angle_new_right[PT_MAXLEN];
extern int angle_new_left_num;
extern int angle_new_right_num;
extern uint8_t mt9v03x_image_copy[MT9V03X_H][MT9V03X_W];
extern float angle_left[PT_MAXLEN];
extern float angle_right[PT_MAXLEN];
extern int angle_left_num;
extern int angle_right_num;
extern int Lpt0_rpts0s_id;
extern int Lpt1_rpts1s_id;
extern bool Lpt0_found;
extern bool Lpt1_found;
extern int Lpt1[2];
extern int Lpt0[2];
extern int Lpt_in0_rpts0s_id;
extern int Lpt_in1_rpts1s_id;
extern bool Lpt_in0_found;
extern bool Lpt_in1_found;
extern int Lpt_in1[2];
extern int Lpt_in0[2];
extern bool is_straight0;
extern bool is_straight1;
extern bool is_turn0;
extern bool is_turn1;
extern float rptsn[PT_MAXLEN][2];
extern int32_t rptsn_num;
extern float aim_distance;
extern track_type_e track_type;
#endif

View File

@@ -1,8 +1,6 @@
#ifndef GL_HEADFILE
#define GL_HEADFILE
#include "gl_state.h"
#include "gl_img_process.h"
#include "gl_common.h"
@@ -14,8 +12,7 @@
#include "gl_tracking.h"
#include "gl_circle.h"
#include "gl_cross.h"
#include "gl_data.h"
#include "math.h"
#endif /* STATE_H_ */

View File

@@ -3,20 +3,26 @@
enum state_type_e {
COMMON_STATE = 0,
CROSS_STATE,HALF_STATE,
CIRCLE_IN_STATE,CIRCLE_BEGIN_STATE,
CIRCLE_RUNNING_STATE,CIRCLE_OUT_STATE,
TURN_STATE,STRAIGHT_STATE,
BREAK_STATE,BAR_STATE,
RAMP_STATE,GARAGE_OUT_STATE,
GARAGE_IN_STATE,GARAGE_STOP_STATE,
CROSS_STATE,
HALF_STATE,
CIRCLE_IN_STATE,
CIRCLE_BEGIN_STATE,
CIRCLE_RUNNING_STATE,
CIRCLE_OUT_STATE,
TURN_STATE,
STRAIGHT_STATE,
BREAK_STATE,
BAR_STATE,
RAMP_STATE,
GARAGE_OUT_STATE,
GARAGE_IN_STATE,
GARAGE_STOP_STATE,
GARAGE_PASS_STATE,
};
extern enum state_type_e state_type;
#define CROSS_AIM (0.49)
#define COMMON_AIM (0.31)
#define CROSS_AIM (0.49f)
#define COMMON_AIM (0.31f)
#endif /* STATE_H_ */

View File

@@ -25,94 +25,29 @@
#include "gl_headfile.h"
#include "by_rt_button.h"
#include "by_fan_control.h"
#include "cw_servo.h"
#include "./page/cw_page.h"
uint8_t (*Img_Gray)[MT9V03X_W];
// uint8_t *mt9v03x_image_copy[0];
int32_t pts_left[PT_MAXLEN][2];
int32_t pts_right[PT_MAXLEN][2];
int32_t pts_left_count, pts_right_count;
float pts_inv_l[PT_MAXLEN][2], pts_inv_r[PT_MAXLEN][2];
int32_t pts_inv_l_count, pts_inv_r_count;
float pts_filter_l[PT_MAXLEN][2], pts_filter_r[PT_MAXLEN][2];
int32_t pts_filter_l_count, pts_filter_r_count;
float pts_resample_left[PT_MAXLEN][2], pts_resample_right[PT_MAXLEN][2];
int32_t pts_resample_left_count, pts_resample_right_count;
float mid_left[PT_MAXLEN][2], mid_right[PT_MAXLEN][2];
int32_t mid_left_count, mid_right_count;
float angle_new_left[PT_MAXLEN];
float angle_new_right[PT_MAXLEN];
int angle_new_left_num, angle_new_right_num;
uint8_t mt9v03x_image_copy[MT9V03X_H][MT9V03X_W];
float angle_left[PT_MAXLEN];
float angle_right[PT_MAXLEN];
int angle_left_num, angle_right_num;
int Lpt0_rpts0s_id, Lpt1_rpts1s_id;
bool Lpt0_found, Lpt1_found;
int Lpt1[2], Lpt0[2];
int Lpt_in0_rpts0s_id, Lpt_in1_rpts1s_id;
bool Lpt_in0_found, Lpt_in1_found;
int Lpt_in1[2], Lpt_in0[2];
bool is_straight0, is_straight1;
bool is_turn0, is_turn1;
float rptsn[PT_MAXLEN][2];
int rptsn_num;
float aim_distance;
enum track_type_e track_type = TRACK_RIGHT;
int frame_count = 0;
uint16_t pwm_cnt = 500;
void img_processing();
void get_corners();
int main(void)
{
clock_init(SYSTEM_CLOCK_120M);
system_delay_init();
debug_init();
mt9v03x_init();
pwm_init(TIM2_PWM_MAP0_CH1_A0, 50, 1000);
pwm_init(TIM2_PWM_MAP0_CH2_A1, 50, 1000);
ips200_init(IPS200_TYPE_SPI);
by_gpio_init();
by_exit_init();
by_pwm_init();
// cw_servo_init();
// while (imu660ra_init())
// ;
Page_Init();
while (1) {
// ips200_show_uint(0, 0, pwm_cnt, 6);
// uint8_t temp_status = by_get_rb_status();
// if (2 == temp_status) {
// pwm_cnt += 50;
// } else if (3 == temp_status) {
// pwm_cnt -= 50;
// }
// pwm_cnt = (uint16_t)clip(pwm_cnt, 500, 1000);
// by_pwm_update_duty(4000);
// pwm_set_duty(TIM2_PWM_MAP0_CH1_A0, pwm_cnt);
// pwm_set_duty(TIM2_PWM_MAP0_CH2_A1, pwm_cnt);
// by_pwm_update_duty(pwm_cnt);
Page_Run();
if (mt9v03x_finish_flag) {
// 该操作消耗大概 1970 个 tick折合约 110us
memcpy(mt9v03x_image_copy[0], mt9v03x_image[0], (sizeof(mt9v03x_image_copy) / sizeof(uint8_t)));
mt9v03x_finish_flag = 0;

View File

@@ -2,50 +2,5 @@
#define MAIN_H
#include "zf_common_headfile.h"
#include "gl_common.h"
// extern uint8 *mt9v03x_image_copy[0];
extern int32_t pts_left[PT_MAXLEN][2], pts_right[PT_MAXLEN][2]; // 0:H,1:W
extern int32_t pts_left_count, pts_right_count;
extern float pts_inv_l[PT_MAXLEN][2], pts_inv_r[PT_MAXLEN][2];
extern int32_t pts_inv_l_count, pts_inv_r_count;
extern float pts_filter_l[PT_MAXLEN][2], pts_filter_r[PT_MAXLEN][2];
extern int32_t pts_filter_l_count, pts_filter_r_count;
extern float pts_resample_left[PT_MAXLEN][2], pts_resample_right[PT_MAXLEN][2];
extern int32_t pts_resample_left_count, pts_resample_right_count;
extern uint8_t mt9v03x_image_copy[MT9V03X_H][MT9V03X_W];
extern float mid_left[PT_MAXLEN][2], mid_right[PT_MAXLEN][2];
extern int32_t mid_left_count, mid_right_count;
extern float angle_left[PT_MAXLEN];
extern float angle_right[PT_MAXLEN];
extern int angle_left_num, angle_right_num;
extern float angle_new_left[PT_MAXLEN];
extern float angle_new_right[PT_MAXLEN];
extern int angle_new_left_num, angle_new_right_num;
extern int Lpt0_rpts0s_id, Lpt1_rpts1s_id;
extern bool Lpt0_found, Lpt1_found;
extern int Lpt1[2], Lpt0[2];
extern int Lpt_in0_rpts0s_id, Lpt_in1_rpts1s_id;
extern bool Lpt_in0_found, Lpt_in1_found;
extern int Lpt_in1[2], Lpt_in0[2];
extern bool is_straight0, is_straight1;
extern bool is_turn0, is_turn1;
extern float rptsn[PT_MAXLEN][2];
extern int rptsn_num;
extern float aim_distance;
enum track_type_e {
TRACK_LEFT,
TRACK_RIGHT,
};
extern enum track_type_e track_type;
#endif // MAIN_H

View File

@@ -1,6 +1,6 @@
#include "cw_page_ui_widget.h"
#include "zf_common_headfile.h"
#include "main.h"
#include "gl_data.h"
/**
* @brief 绘制光标

View File

@@ -115,8 +115,8 @@
// --------------------双排 SPI 接口两寸屏幕引脚定义--------------------//
#define IPS200_DEFAULT_DISPLAY_DIR (IPS200_PORTAIT) // 默认的显示方向
#define IPS200_DEFAULT_PENCOLOR (RGB565_BLACK ) // 默认的画笔颜色
#define IPS200_DEFAULT_BGCOLOR (RGB565_YELLOW ) // 默认的背景颜色
#define IPS200_DEFAULT_PENCOLOR (RGB565_YELLOW ) // 默认的画笔颜色
#define IPS200_DEFAULT_BGCOLOR (RGB565_BLACK ) // 默认的背景颜色
#define IPS200_DEFAULT_DISPLAY_FONT (IPS200_8X16_FONT) // 默认的字体模式
// 控制语句