#ifndef NAVI_H #define NAVI_H #include "Action.h" #include "pid.h" #include "ahrs.h" #include "bmi088.h" #include "map.h" typedef enum { AUTO_MODE, // 自动跑点模式 MANUAL_MODE , // 控制模式 NO_MODE } Navi_Mode_t; typedef struct { Navi_Mode_t mode; int Trig_flag;//触发沿,初始值为零,两种控制模式下,这个值变为1,会使cnt+1,为-1,使cnt-1 } Navi_COT_MODE_t; typedef struct{ float pos_x; float pos_y; float last_pos_x; float last_pos_y; }chassis_position_t; typedef enum{ YES, NO, NEXT1, NEXT2 }is_cpt_e; typedef struct{ pid_param_t pid_PosSpeed_x_param; pid_param_t pid_PosSpeed_y_param; pid_param_t pid_pos_x_out_param; pid_param_t pid_pos_x_inner_param; pid_param_t pid_pos_y_out_param; pid_param_t pid_pos_y_inner_param; pid_param_t pid_OutAngle_param; pid_param_t pid_InnerAngle_param; pid_param_t path_speed_pid_param; }ops_pid_param_t; typedef struct { ops_pid_param_t ops_pid; const point_t *path; int8_t path_num; }ops_param_t; /** * @brief * */ typedef struct { Action_POS_t *chassis_pos; fp32 current_x; fp32 current_y; fp32 next_mapx; fp32 next_mapy; const point_t *chassis_map; const ops_param_t *param; PathState_t state; Navi_COT_MODE_t Navi_Mode; AHRS_Eulr_t ops_imu_pos; AHRS_Gyro_t ops_gyro; pid_type_def pid_PosSpeed_x; pid_type_def pid_PosSpeed_y; pid_type_def pid_pos_x_out; pid_type_def pid_pos_x_inner; pid_type_def pid_pos_y_out; pid_type_def pid_pos_y_inner; pid_type_def pid_OutAngle; pid_type_def pid_InnerAngle; pid_type_def path_speed_pid; is_cpt_e POS_IS_CPT; struct { fp32 vx; fp32 vy; fp32 yaw_angle; }final_out; }ops_t; int8_t Action_init(ops_t *o,const ops_param_t *param,Action_POS_t *pos); int8_t go_path(ops_t *o,CMD_ACTION_t *ops_out); #endif