Paramater.h
7.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
#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