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.
263 lines
6.3 KiB
263 lines
6.3 KiB
/*
|
|
* fsm.h
|
|
*
|
|
* Created on: Oct 18, 2024
|
|
* Author: akeguo
|
|
*/
|
|
|
|
#ifndef INC_FSM_H_
|
|
#define INC_FSM_H_
|
|
#include "stdint.h"
|
|
//typedef enum _STATE_t
|
|
//{
|
|
// Manual = 0,
|
|
// Auto,
|
|
// Abnormal,
|
|
// SetLaneChangeDistance,
|
|
// SetBackwardsDistance,
|
|
// LaneChangeMode,
|
|
// Forwards,
|
|
// Backwards,
|
|
// TurnLeft,
|
|
// TurnRight,
|
|
// HALT
|
|
//} STATE_t;
|
|
|
|
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;
|
|
|
|
|
|
|
|
// 区域自动作业阶段:0-准备(允许手动),1-运行(自动逻辑)
|
|
typedef enum RegionAuto_Phase
|
|
{
|
|
RegionAuto_Ready = 0, // 准备阶段:允许手动控制
|
|
RegionAuto_Running = 1 // 自动运行阶段:执行自动逻辑,禁止手动
|
|
} RegionAuto_Phase;
|
|
|
|
|
|
|
|
|
|
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_HeadToLeft_Backwards,
|
|
Auto_Move_HeadToUp_Forwards,
|
|
Auto_Move_HeadToUp_Backwards,
|
|
Auto_Move_Horizontal_LaneChange_Left,
|
|
Auto_Move_Horizontal_LaneChange_Right,
|
|
Auto_Move_Vertical_LaneChange_Left,
|
|
Auto_Move_Vertical_LaneChange_Left2,
|
|
Auto_Move_Vertical_LaneChange_Right,
|
|
Auto_Move_Vertical_LaneChange_Right2,
|
|
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 _SwingSTATE_t
|
|
{
|
|
SwingHALT = 0,
|
|
SwingLeft = 1,
|
|
SwingRight = 2,
|
|
SwingHome=3,
|
|
|
|
} SwingSTATE_t;
|
|
|
|
typedef enum _TiltSTATE_t
|
|
{
|
|
TiltHALT = 0,
|
|
TiltUP = 1,
|
|
TiltDown = 2,
|
|
TiltHome=3,
|
|
TiltCurrentModeDown=5
|
|
} TiltSTATE_t;
|
|
|
|
typedef enum _RougheningEndState_t
|
|
{
|
|
RougheningEndHALT = 0,
|
|
RougheningEndSwingClockwise = 1,
|
|
RougheningEndSwingAnticlockwise = 2,
|
|
|
|
} RougheningEndState_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,
|
|
VerticalChange_Delay1,
|
|
VerticalChange_Delay2,
|
|
VerticalChange_Delay3,
|
|
|
|
} Lane_Vertical_ChangeState;
|
|
|
|
|
|
typedef enum _horizontal_LaneChangeState
|
|
{
|
|
HorizontalChange_TurnToUP,
|
|
HorizontalChange_TurnToDown,
|
|
HorizontalChange_TurnToLeft,
|
|
HorizontalChange_TurnToRight,
|
|
HorizontalChange_DelayMove,
|
|
HorizontalChange_End,
|
|
HorizontalChange_StateZero,
|
|
HorizontalChange_Delay1,
|
|
HorizontalChange_Delay2,
|
|
HorizontalChange_Delay3,
|
|
HorizontalChange_Delay4,
|
|
|
|
} Lane_Horizontal_ChangeState;
|
|
|
|
|
|
typedef enum {
|
|
Horizontal_No = 0, // 未定义
|
|
Horizontal_Head_To_Left_Flag = 1, // 水平向左
|
|
Horizontal_Head_To_Right_Flag = 2, // 水平向右
|
|
} Horizontal_LaneChangeFlag_t;
|
|
|
|
typedef enum {
|
|
Veritical_No = 0, //未定义
|
|
Veritical_To_Left_Flag = 1, //竖直向左
|
|
Veritical_To_Right_Flag = 2, //竖直向右
|
|
} Vertical_LaneChangeFlag_t;
|
|
|
|
typedef enum {
|
|
RegionAuto_Horizontal_Left = 1, // 区域自动水平作业
|
|
RegionAuto_Horizontal_Right = 2, // 区域自动水平作业
|
|
RegionAuto_Vertical_left = 3, // 区域自动竖直向左作业
|
|
RegionAuto_Vertical_Right = 4 // 区域自动竖直向右作业
|
|
} RegionAuto_t;
|
|
|
|
typedef enum {
|
|
Define_Task = 1, // 定义任务目标
|
|
Adjust_Pressure = 2, // 调整压力
|
|
Launch_Tool = 3, // 启动前端工具
|
|
Launch_Tool_Delay = 4, // 启动前端工具成功
|
|
Perform_Tasks = 5 // 开始执行任务
|
|
} RegionAutoMoveStart_t;
|
|
|
|
typedef enum {
|
|
Tilt_Manual_Mode = 0, // 升降推杆手动调整模式
|
|
Tilt_Auto_Mode = 1, // 升降推杆自动调整模式
|
|
} TiltWorkingMode_t;
|
|
|
|
typedef enum {
|
|
Serial_Mode_Config = 0, // 串口模式确定
|
|
Action_Execute = 1, // 动作执行
|
|
Action_Shut_down = 2 // 动作关闭
|
|
} GV_Main_Core_Mode_t;
|
|
|
|
|
|
|
|
typedef enum {
|
|
MoveTaskTimeCheck_finish = 0, // 自动作业后退定时结束
|
|
MoveTaskTimeCheck_start = 1, // 自动作业后退定时开始
|
|
}MoveTaskTimeCheck_t;
|
|
|
|
|
|
|
|
typedef enum {
|
|
InitialState_Detection_start = 1, // 上电遥控器状态自检开始
|
|
InitialState_Detection_finish = 2, // 上电遥控器状态自检通过
|
|
|
|
}InitialState_Detection_t;
|
|
|
|
typedef enum {
|
|
Wind_State_OFF = 0, // 风刀关闭
|
|
Wind_State_ON = 1, // 风刀开启
|
|
}Wind_State_t;
|
|
|
|
|
|
|
|
typedef enum {
|
|
EmegencyStop__CloseDevice = 0, // 关闭执行器
|
|
EmegencyStop_PowerOff = 1, // 断开电源
|
|
}EmegencyStop_State_t;
|
|
|
|
|
|
extern MoveSTATE_t CurrentMoveState;
|
|
extern SwingSTATE_t CurrentSwingState;
|
|
extern TiltSTATE_t CurrentTiltState; //点头,抬头
|
|
|
|
extern LaneChangeSTATE_t CurrentLaneChangeSTATE;
|
|
extern RougheningEndState_t CurrentRougheningEndState; //拉毛运动或者不动
|
|
extern SetSTATE_t CurrentSetState; //设置
|
|
extern RegionAuto_t CurrentRegionAuto;
|
|
|
|
|
|
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_ */
|
|
|