Paramater.h 7.65 KB
#ifndef __PARAMATER_H
#define __PARAMATER_H
#include "bsp.h"

typedef struct
{
	/***************IO输入信号***************/
	bool 			i_QuickStopSig;						//急停
	bool 			i_StartSig;								//启动
	bool			i_StopSig;								//暂停
	bool			i_BumperSig;							//防撞条
	bool			i_RadarSigFront_1;				//前雷达最外层信号
	bool			i_RadarSigFront_2;				//前雷达中间层信号
	bool			i_RadarSigFront_3;				//前雷达最里层信号
	bool			i_RadarSigBack_1;					//后雷达最外层信号
	bool			i_RadarSigBack_2;					//后雷达中间层信号
	bool			i_RadarSigBack_3;					//后雷达最里层信号
	
	bool      i_HandLiftSig;
	bool      i_HandDownSig;
	bool			i_HandFrontSig;
	bool			i_HandBackSig;
	bool			i_HandTurnLeftSig;
	bool 			i_HandTurnRightSig;
	
	bool			i_HandCentringUp;					//手动上对中
	bool			i_HandCentringDown;				//手动下对中
	
	bool			i_AutoCentringUp;					//手动上对中
	bool			i_AutoCentringDown;				//手动下对中
	
	bool			i_RotateOkSig;						//平台旋转到位
	bool			i_RotateZeroSig;					//平台旋转零点信号
	bool 			i_Lift1UpLimit;						//下升降上限位
	bool			i_Lift1DownLimit;					//下升降下限位
	
	bool 			i_Lift2UpLimit;						//上升降上限位
	bool			i_Lift2DownLimit;					//上升降下限位

	bool			i_Shift1_LimitLeft;				//下层平移左极限
	bool			i_Shift1_LimitRight;			//下层平移右极限
	bool			i_Shift1_Origin;					//下层平移原点
	bool			i_Shift1ArrivalLeft;			//下层料框左到位对射
	bool			i_Shift1ArrivalRight;			//下层料框右到位对射
	
	bool			i_Shift2_LimitLeft;				//上层平移左极限
	bool      i_Shift2_LimitRight;			//上层平移右极限
	bool      i_Shift2_Origin;					//上层平移原点
	bool			i_Shift2ArrivalLeft;			//上层料框左到位对射
	bool			i_Shift2ArrivalRight;			//上层料框右到位对射
	
	bool			i_Push1_Limit;						//下层推杆极限
	bool			i_Push1_Origain;					//下层推杆原点
	
	bool			i_Push2_Limit;						//上层推杆极限
	bool			i_Push2_Origain;					//上层推杆原点
	
	bool 			i_LightStopFlagL;					//左光电停车
	bool 			i_LightStopFlagR;					//右光电停车
	
	/***************判断标志位****************/
	bool      i_Reduction;							//雷达避障一级减速
	bool      i_DoubleReduction;				//雷达避障二级减速
	u32 			Error_Flag;								//错误状态回报标志位	
	
	bool			i_StartFirst;							//第一次启动按钮触发
	bool      i_MaterialTesting;				//物料检测
	bool 			i_MaterialOKFlag;					//物料检测到位		
	bool 			i_DamperFLAG;							//阻挡块状态  1弹起  0缩回
	
	/**************双层SMT**************/
	

	
	
	u8 				i_MaterialFlagSecond;			//上层物料状态  1有料0无料2中间状态(有料到无料,或者无料到有料)
	u8 				i_MaterialFlagFirst;			//下层物料状态  1有料0无料2中间状态(有料到无料,或者无料到有料)
	
	
	
	short 		i_quadEncoder1;						//正交编码器1
	short 		i_quadEncoder2;						//正交编码器2
	short 		i_quadEncoder3;						//正交编码器3
	short 		i_quadEncoder4;						//正交编码器4
	
	bool			i_QRCodeCenterStopFlag;		//地面二维码中心停车
	bool			i_PlatformStopFlag;				//平台纠正停车
	bool		  i_QRCodeOKFlag;						//二维码数据
	bool 			i_UpdatePathSig;					//系统更新路径标志,为1才可以接收系统下发路径
	int 			i_LiftHeightFirst;				//下举升实际高度
	int 			i_LiftHeightSecond;				//上举升实际高度
	//二维码数据
	float 		QR_Compensation_X;				//二维码对接X补偿值
	float 		QR_Compensation_Y;				//二维码对接Y补偿值
	float 		QR_XbiasFromros;					//相机下发X偏移值
	float 		QR_YbiasFromros;					//相机下发Y偏移值
	//测试二维码旋转不到位脱轨
	float 		testCurAngle;
	float 		testTarAngle;
	float			testDiffAngle;
	//激光数据
	bool 			SlamConnectError;					//SLAM与控制器通讯中断	
	u8 				OnlinePointSig;						
	float 		Coordinate_X;
	float 		Coordinate_Y;
	float 		Coordinate_W;
	
	float 		Voltage;
	float 		Voltage1;
	short			Current;
	u8				StartChargingSig;
	u8				VolProtectSig;
	u16				SOC;
	u16				SingleVoltage;
	u32 			SystemTime;								//系统时间,单位MS
}AGVPublicInfo;
 
typedef struct
{
	u16 AGVID;									//agvID号
	u16 AdvanceParkSpeed;				//预停车速度
	u16 AdvanceParkPos;					//预停车距离
	u16 OnlyAnglePos;						//只纠偏角度距离设置
	u16 HandSpeed;							//点动速度
	u16 HandSpeedSlope;					//点动速度斜坡
	u16 AutoSpeedSlope;					//自动速度斜坡
	u16 HandTurnSpeed;					//点动转弯速度
	u16 LiftSpeed;							//举升速度
	u16 ShiftSpeed;							//移轴速度
	u16 PushSpeed;							//推杆速度
	u16 angleTurnSpeed;					//点动转弯速度
	float anglecompensation;    //角度补偿
	float anglecompensation1;    //角度补偿
	
	int SetLift1Height;			//设置举升1高度
	int SetLift2Height;			//设置举升2高度
	int ChargingTime;						//充电时间
	int LimitPusherPos;					//推杆极限位置
	int TargerPusherPos;				//推杆目标位置
	int lastlandIDSig;
	
}AGVParameterInfo;

typedef struct
{
	float SetBaseSpeed;						//实际给的行走速度
	bool	Au_Hand;							//站点0手动/1自动	

	//手动动作信号
	u8 	HandMotorState;					//手动行走
	u8 	HandLiftState;					//手动举升
	u8 	HandShiftState;					//手动移轴或者皮带滚筒
	u8 	HandPushState;					//手动推杆	
	u8 	MusicFlag;  						//设置音乐
	u8 	Barrier_ONOFF;					//红外开关
	u8 	Music_ONOFF;						//音乐开关
	u8 	Heartstate;						//心跳包状态
	u16 Vol;										//设置音量
	u16 LaserState;							//设置激光避障状态
	
	u8 	AGVControlState;				//寻找货架纠偏控制
	//双层SMT自动对接信号
	short Shift2State;		//上层滚筒指令
	short Shift1State;			//下层滚筒指令
	
	short CenterCommandCount;		//调度指令计数器
	u8 	AGVCenterControlStateUp;				//寻找货架纠偏控制
	u8	AGVCenterControlStateDown;	//寻找地面二维码中心
	
	//调度动作信号
	u16		LaserArea;						//设置激光区域
	u8 		standSiteID; 					//当前站点ID 自己虚拟的12345
	u8		LightStopSig;					//对接信号
	short DispatchSpeed;				//调度下发的路径速度
	short NextDispatchSpeed;		//调度下发的下一个路径速度
	u8 		CurDirection;					//当前运行方向
	u8 		NextDirection;				//下一个运行方向
	u8 		RunStraightState;			//0,沿X直行  1沿Y直行
	u8    RunState;
	
	u8		UdpSendFlag;					//当为0的时候才允许切换内容
	int 		LandMarkID;
	float SetPlatformTurnAngle;					//设置原地旋转平台角度
	float SetChassisTurnAngle;					//设置原地旋转底盘角度
	
	float X_compensation;				//单独工位特殊补偿 龙旗项目使用中
	float Y_compensation;				//单独工位特殊补偿 龙旗项目使用中
	float W_compensation;				//单独工位特殊补偿 龙旗项目使用中
}AGVCommandInfo;

typedef struct
{
	AGVCommandInfo Command;//屏幕或者调度指令
	
	AGVParameterInfo Parameter;//屏幕保存的参数
	
	AGVPublicInfo  Public;	//接的外设信号(相机 激光 IO 光电 报警)
	
}AGVStruct;//agv结构体
extern AGVStruct agv;

typedef struct
{		
	//坐标之间的距离
	float AngleDifference;//车身角度偏差 public
	
	float CenterOffset;//中心偏移量 public
	
	float TurnAngleDifference;
	
	float DistanceAgvToSTART;
	
	float DistanceAgvToTARGET;
	
	float DistanceSTARTtoTARGET;//起点和终点距离
	
	float VerticalDistanceAgvToTARGET;//距离终点垂直距离 public
	
	float VerticalDistanceAgvToSTART;//距离起点垂直距离 public
	
}navigationPublic;//底盘控制发布的值

typedef struct
{			
	float SetCalculationRadius;//算出来的转弯半径
		
	float TarAngle;//直行是当前路径的方向角度 转弯是出弯线路的角度
	
	float OutputOffset;//最终pid算出来的补偿值

	u8 FirstZeroPoint;//光电停靠第一次自然到达点位	
	
	float FrontViewDistance;//前视距离
	
	float FrontViewAngle;//当前位置与预瞄点连线形成的角度
	
}navigationPrivate;//底盘算法的变量

typedef struct
{		
	float Kp;								//比例P
		
	float Ki;								//积分I
	
	float Kd;								//微分D
	
	float PosCofficient;		//位置权重系数
	
	float AngleCofficient;	//角度权重系数  前进正  后退负
	
	float MaxLimit;					//最大限制
	
}navigationPID;
extern navigationPID pid;

typedef struct
{		
	navigationPublic Public;//导航模块发布的和路径的偏差
	
	navigationPrivate Private;//导航模块自己使用的变量

	navigationPID PIDPara[4];//当前运行方向(直行 转弯 旋转)导航模块需要的pid参数
	
}navigationStruct;//导航控制结构体

extern navigationStruct navi;

void initPathInfo();//初始化单机运行路径
	
void reportRPTPose(u16 IntervalTime);

extern void ConnectOvertime();

extern void clearPathInfomation();

extern void InitParamater();

#endif