拉毛小板程序
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

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