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
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_ */
|