公司代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

183 lines
4.8 KiB

8 months ago
/*
* fsm.h
*
* Created on: Oct 18, 2024
* Author: akeguo
*/
#ifndef INC_FSM_H_
#define INC_FSM_H_
#include <stdint.h>
#include <math.h>
#include "BHBF_ROBOT.h"
#include "robot_state.h"
#include "BSP/bsp_include.h"
#include "MSP/msp_PID.h"
#include "MSP/msp_MK32_1.h"
extern char IsRobotHaltSateChangedFlag;
typedef enum _MoveSTATE_t
{
Move_HALT = 0, //停止
Move_Forwards, //前进,没有纠偏的前进
Move_Backwards, //后退,没有纠偏的前进
Move_TurnLeft, //左转
Move_TurnRight, //右转
Move_Vertical_Task_Forwards, //竖直方向前进 保持竖直运行
Move_Vertical_Task_Backwards, //竖直方向后退前进 保持竖直运行
Move_Horizontal_Task_Forwards_Left, //水平方向前进,保持水平方向
Move_Horizontal_Task_Backwards_Left, //水平方向后退,保持水平方向
Move_Horizontal_Task_Forwards_Right, //水平方向前进,保持水平方向
Move_Horizontal_Task_Backwards_Right, //水平方向后退,保持水平方向
Move_Head_To_Left_Enum,
Move_Head_To_UP_Enum,
Move_Head_To_Right_Enum,
Move_Head_To_Down_Enum,
} MoveSTATE_t;
typedef enum _Motor_Power_STATE_t
{
Power_OFF = 0, Power_ON = 1
} Motor_Power_STATE_t;
typedef enum _LaneChangeSTATE_t
{
Lane_HALT = 0, //自动模式停止
Lane_Turn_To_Straight_Up, //自动 运行到竖直向上
Lane_Turn_To_Straight_Down, //自动 运行到竖直向下
Lane_Turn_To_Horizontal_Left, //
Lane_Turn_To_Horizontal_Right, //
Lane_Vertical_Task_Move_Forwards, //竖直方向前进 保持竖直运行
Lane_Vertical_Task_Move_Backwards, //竖直方向后退前进 保持竖直运行
Lane_Horizontal_Task_Move_Forwards, //水平方向前进,保持水平方向
Lane_Horizontal_Task_Move_Backwards, //水平方向后退,保持水平方向
} LaneChangeSTATE_t;
//设置 换道距离和设置后退距离
typedef enum _laneChangeControlSTATE_t
{
Lane_Change_Stop = 0, Lane_Change_Start,
} LaneChangeControlSTATE;
//自动模式下运行,
typedef enum _autoMoveSTATE_t
{
Auto_Move_Start = 0,
Auto_Move_HeadToRight_Backwards,
Auto_Move_HeadToUp_Forwards,
Auto_Move_HeadToLeft_Backwards,
Auto_Move_HeadToUp_Backwards,
Auto_Move_Vertical_Left_LaneChange_Up,
Auto_Move_Vertical_Left_LaneChange_Down,
Auto_Move_Vertical_Right_LaneChange_Up,
Auto_Move_Vertical_Right_LaneChange_Down,
Auto_Move_Horizontal_Left_LaneChange,
Auto_Move_Horizontal_Right_LaneChange,
Auto_Move_Stop,
Auto_Move_Time_Wait,
Auto_Move_Time_Wait2,
} AutoMoveSTATE_t;
//设置 换道距离和设置后退距离
typedef enum _SetSTATE_t
{
OtherMode = 0, SetLaneChangeDistance, SetBackwardsDistance,
} SetSTATE_t;
typedef enum _PaintGunSTATE_t
{
PaintGunOFF = 0, PaintGunON = 1
} PaintGunSTATE_t;
typedef enum {
MoveTaskTimeCheck_finish = 0, // 自动作业后退定时结束
MoveTaskTimeCheck_start = 1, // 自动作业后退定时开始
}MoveTaskTimeCheck_t;
typedef struct _transition_t
{
int State; //状态
void (*robotRun)(void); //执行相关动作
} transition_t;
typedef enum _vertical_LaneChangeState
{
VerticalChange_TurnToUP,
VerticalChange_TurnToDown,
VerticalChange_TurnToLeft,
VerticalChange_TurnToRight,
VerticalChange_DelayMove,
VerticalChange_End,
VerticalChange_StateZero,
//0---6
} Lane_Vertical_ChangeState;
typedef enum _horizontal_LaneChangeState
{
HorizontalChange_TurnToUP,
HorizontalChange_TurnToDown,
HorizontalChange_TurnToLeft,
HorizontalChange_TurnToRight,
HorizontalChange_DelayMove,
HorizontalChange_End,
HorizontalChange_StateZero,
} Lane_Horizontal_ChangeState;
typedef enum _iV_Information_State
{
IV_Ding_Su_Shui_Ping_Hou_Tui, //定速巡航水平后退
IV_Ding_Su_Shui_Ping_Qian_Jin, //定速巡航水平前进
IV_Ding_Su_Shu_Zhi_Qian_Jin, //定速巡航竖直前进
IV_Ding_Su_Shu_Zhi_Hou_Tui, //定速巡航竖直后退
IV_Ding_Su_Shou_Dong_Hou_Tui, //定速巡航手动后退
IV_Ding_Su_Shou_Dong_Qian_Jin, //定速巡航手动前进
IV_Shui_Ping_Huang_Dao, //水平换道
IV_Shu_Zhi_Huang_Dao, //竖直换道
IV_Shui_Ping_Mo_Shi_Qian_Jin, //水平模式前进
IV_Shui_Ping_Mo_Shi_Hou_Tui, //水平模式后退
IV_Shu_Zhi_Mo_Shi_Qian_Jin, //垂直模式前进
IV_Shu_Zhi_Mo_Shi_Hou_Tui, //垂直模式后退
IV_Shou_Dong_Qian_Jin, //手动控制前进
IV_Shou_Dong_Hou_Tui, //手动控制后退
IV_Shou_Dong_Zuo_Zhuan, //手动控制左转
IV_Shou_Dong_You_Zhuan, //手动控制右转
} IV_Information_State;
extern MoveSTATE_t CurrentMoveState;
extern PaintGunSTATE_t Current_PaintGun_STATE;//机器人喷枪状态
extern LaneChangeSTATE_t CurrentLaneChangeSTATE;
extern Lane_Horizontal_ChangeState CurrentHorizontal_ChangeState;
extern Lane_Vertical_ChangeState Current_Vertical_ChangeState;
extern char is_upper_computer_take_over_control;
extern char Switch_Off_Flag;
void action_perfrom(transition_t transitions[], int length, int state);
void GF_Dispatch();
void action_perfrom();
void Fsm_Init();
#endif /* INC_FSM_H_ */