Paramater.c
2.98 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
#include "Paramater.h"
AGVStruct agv;
navigationPID pid;
navigationStruct navi;
/*定义用于计算的点
StartPoint TargetPoint直线运行当前点(起点)和下一个点(目标点)
CurrentCenterPoint agv运动中心实时坐标
PointOne,PointTwo,PointThree,PointFour弧线转弯用的四个点,上一个点,当前点,下一个点,下两个点
A,B为单机测试时,放置屏幕可以调整的坐标
*/
CoordinatePoints StartPoint, TargetPoint, CurrentCenterPoint, PointOne, PointTwo, PointThree, PointFour, CircleCenterPoint,FrontViewPoint;
void initPidData()
{
navi.PIDPara[0].Kp = 0.5;//高速
navi.PIDPara[0].Ki = 0;
navi.PIDPara[0].Kd = 0;
navi.PIDPara[0].PosCofficient = 1;
navi.PIDPara[0].AngleCofficient = 8;
navi.PIDPara[0].MaxLimit = 50;
navi.PIDPara[1].Kp = 1;//低速
navi.PIDPara[1].Ki = 0;
navi.PIDPara[1].Kd = 0;
navi.PIDPara[1].PosCofficient = 0.8;
navi.PIDPara[1].AngleCofficient =15;
navi.PIDPara[1].MaxLimit = 50;
navi.PIDPara[2].Kp = 1;
navi.PIDPara[2].Ki = 0;
navi.PIDPara[2].Kd = 0;
navi.PIDPara[2].PosCofficient = 0.6;
navi.PIDPara[2].AngleCofficient = 15;
navi.PIDPara[2].MaxLimit = 50;
navi.PIDPara[3].Kp = 1;
navi.PIDPara[3].Ki = 0;
navi.PIDPara[3].Kd = 0;
navi.PIDPara[3].PosCofficient = 0;
navi.PIDPara[3].AngleCofficient = 15;
navi.PIDPara[3].MaxLimit = 50;
}
void initAgvData()
{
Uart_Printf(COM1, "参数初始化\r\n");
agv.Command.standSiteID = 1;
agv.Command.Au_Hand = 0;
agv.Public.i_StartSig = 0;
agv.Public.i_StopSig = 0;
Lifter1.initState = 0;
Rotate1.initState = 0;
agv.Parameter.HandSpeed = 300;//手动速度 你看调多少 按比例
agv.Parameter.HandTurnSpeed = 100;
agv.Parameter.HandSpeedSlope = 1;
agv.Parameter.AutoSpeedSlope = 5;
agv.Command.LaserState = 0;
agv.Parameter.AdvanceParkPos = 800;//预停车距离100
agv.Parameter.AdvanceParkSpeed = 60;//预停车速度20
agv.Parameter.OnlyAnglePos = 500;//只纠偏角度距离
agv.Parameter.LiftSpeed = 60; //举升速度600
agv.Command.Barrier_ONOFF = 1;
agv.Command.Vol = 15;
agv.Command.Music_ONOFF = 1;
agv.Parameter.AGVID = 0x0000;
agv.Parameter.SetLift1Height = 70;
agv.Command.InitShiftSig = 1;
}
void InitParamater()
{
initPidData();
initAgvData();
}
void clearPathInfomation()
{
static int i = 0;
agv.Command.standSiteID = 1; //执行点位置1复位
Reset_Alarm(0x92A9); //清除脱线,停稳,系统停车
agv.Public.i_ShiftCenterStopFlag = 0;
memset(&traffic_land_marksReal,0,sizeof(traffic_land_marksReal));
memset(&traffic_land_marksSys,0,sizeof(traffic_land_marksSys));
agv.Public.finishTaskSig = 0;
if (!agv.Command.Au_Hand)
{
agv.Public.chargestate =0;
agv.Command.LandMarkID = 0;
SetAlarm(0x0004);
}
// memset(&traffic_land_marks, 0, sizeof(traffic_land_marks)); //清除所有路径信息
SetAlarm(0x0200); //手动模式下给一个系统停车报警代码,方便系统下发路径指令
}
void initPathInfo()
{
// memset(&traffic_land_marks,0,sizeof(traffic_land_marks));
SetAlarm(0x0200);
}