-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRobotConfiguration.h
134 lines (104 loc) · 5.8 KB
/
RobotConfiguration.h
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
#ifndef ROBOT_CONFIGURATION_H__
#define ROBOT_CONFIGURATION_H__
#include <map>
class RobotConfiguration
{
public:
// Gather the information from a file
static void Init();
// Possibly update information
static void Process();
// Configuration accessors
static float GetDriveTrainP();
static float GetDriveTrainI();
static float GetDriveTrainD();
static float GetDriveMaxOutput() { return GetConfigurationVariable("DRIVE_MAX_OUTPUT"); }
static float GetArmP() { return GetConfigurationVariable("ARM_P"); }
static float GetArmI() { return GetConfigurationVariable("ARM_I"); }
static float GetArmD() { return GetConfigurationVariable("ARM_D"); }
static float GetArmPIDTolerance() { return GetConfigurationVariable("ARM_PID_TOLERANCE"); }
static float GetArmInputRangeMin() { return GetConfigurationVariable("ARM_INPUT_RANGE_MIN"); }
static float GetArmInputRangeMax() { return GetConfigurationVariable("ARM_INPUT_RANGE_MAX"); }
static float GetShuttleP() { return GetConfigurationVariable("SHUTTLE_P"); }
static float GetShuttleI() { return GetConfigurationVariable("SHUTTLE_I"); }
static float GetShuttleD() { return GetConfigurationVariable("SHUTTLE_D"); }
static float GetShuttlePIDTolerance() { return GetConfigurationVariable("SHUTTLE_PID_TOLERANCE"); }
static float GetShuttleInputRangeMin() { return GetConfigurationVariable("SHUTTLE_INPUT_RANGE_MIN"); }
static float GetShuttleInputRangeMax() { return GetConfigurationVariable("SHUTTLE_INPUT_RANGE_MAX"); }
static float GetGrabberMiddleSpeed() { return GetConfigurationVariable("GRABBER_MIDDLE_SPEED"); }
static float GetGrabberFasterSpeed() { return GetConfigurationVariable("GRABBER_FASTER_SPEED"); }
static float GetGrabberSlowerSpeed() { return GetConfigurationVariable("GRABBER_SLOWER_SPEED"); }
static float GetNormalAutonomousSpeed() { return GetConfigurationVariable("NORMAL_AUTO_SPEED"); }
static float GetInsideCorrectionAutonomousSpeed() { return GetConfigurationVariable("NORMAL_INSIDE_SPEED"); }
static float GetOutsideCorrectionAutonomousSpeed() { return GetConfigurationVariable("NORMAL_OUTSIDE_SPEED"); }
static float GetExtraCorrectionSpeed() { return GetConfigurationVariable("NORMAL_EXTRA_SPEED"); }
static float GetShuttleMoveTime() { return GetConfigurationVariable("SHUTTLE_MOVE_TIME"); }
static float GetShuttleUpSpeed() { return GetConfigurationVariable("SHUTTLE_UP_SPEED"); }
static float GetHangingPose() { return GetConfigurationVariable("AUTO_HANGING_POSE"); }
static float GetEjectTime() { return GetConfigurationVariable("AUTO_EJECT_TIME"); }
static float GetScoreDistance() { return GetConfigurationVariable("AUTO_SCORE_DISTANCE"); }
static float GetArmOutputMin() { return GetConfigurationVariable("ARM_OUTPUT_MIN"); }
static float GetArmOutputMax() { return GetConfigurationVariable("ARM_OUTPUT_MAX"); }
static float GetShuttleOutputMin() { return GetConfigurationVariable("SHUTTLE_OUTPUT_MIN"); }
static float GetShuttleOutputMax() { return GetConfigurationVariable("SHUTTLE_OUTPUT_MAX"); }
static float GetDriveStraightP() { return GetConfigurationVariable("DRIVE_STRAIGHT_P"); }
static bool GetEnableLineFollowing() { return GetConfigurationVariableAsBool("ENABLE_LINE_FOLLOWING"); }
static void SetAutoSpeeds(float n, float i, float o, float e)
{
SetConfigurationVariable("NORMAL_AUTO_SPEED", n);
SetConfigurationVariable("NORMAL_INSIDE_SPEED", i);
SetConfigurationVariable("NORMAL_OUTSIDE_SPEED", o);
SetConfigurationVariable("NORMAL_EXTRA_SPEED", e);
}
static void SetDriveTrainPID(float p, float i, float d);
static void SetDriveMaxOutput(float m) { SetConfigurationVariable("DRIVE_MAX_OUTPUT", m); }
static void SaveSettings();
static void SetDefaults();
static float GetShuttleLow() { return GetConfigurationVariable("POSE_SHUTTLE_LOW"); }
static float GetShuttleMid() { return GetConfigurationVariable("POSE_SHUTTLE_MID"); }
static float GetShuttleHigh() { return GetConfigurationVariable("POSE_SHUTTLE_HIGH"); }
static float GetBackupSpeed() { return GetConfigurationVariable("AUTO_BACKUP_SPEED"); }
static float GetBackupDistance() { return GetConfigurationVariable("AUTO_BACKUP_DISTANCE"); }
static float GetFinalBackupDistance() { return GetConfigurationVariable("AUTO_FINAL_BACKUP_DISTANCE"); }
static float GetDeploySpeed() { return GetConfigurationVariable("DEPLOY_SPEED"); }
static float GetRotateTime() { return GetConfigurationVariable("AUTO_ROTATE_TIME");}
static float GetAutoDriveDistance() { return GetConfigurationVariable("AUTO_DRIVE_DISTANCE"); }
static float GetArmPosition(int position)
{
if (position == 18) {
return GetConfigurationVariable("POSE_ARM_18");
}
if (position >= 10) {
return -1 * GetArmPosition(19-position);
} else {
std::string thing = "POSE_ARM_";
thing += (char)('0' + position);
return GetConfigurationVariable(thing);
}
}
static bool UpdatedSinceLast() { return m_updated; }
static void ClearUpdated() { m_updated = false; }
static void DumpConfiguration();
private:
// Make constructor private for singleton
// class.
RobotConfiguration() { }
// Reads the configuration file.
static bool OpenAndParseFile(char * filename);
// Utility to compare two strings
static bool StringsEqual(char *a, char *b);
static float GetConfigurationVariable( std::string key );
static void SetConfigurationVariable( std::string key, float value );
static bool HasConfigurationVariable( std::string key );
static std::map<std::string, float> * m_map;
static bool m_updated;
static int GetConfigurationVariableAsInt(std::string key)
{
return (int) (GetConfigurationVariable(key) + .5);
}
static bool GetConfigurationVariableAsBool(std::string key)
{
return (bool) GetConfigurationVariableAsInt(key);
}
};
#endif