Skip to content

Commit 079d5de

Browse files
authored
Merge pull request #38 from BCLab-UNM/PID_tuning
Pid tuned and tested by @jschlind411 and @JCHJones.
2 parents 639c973 + 764eb13 commit 079d5de

File tree

5 files changed

+20
-14
lines changed

5 files changed

+20
-14
lines changed

src/abridge/src/abridge.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ void driveCommandHandler(const geometry_msgs::Twist::ConstPtr& message) {
170170
// Assumes left and right are always between -1 and 1
171171
float linear = left * max_motor_cmd;
172172
float angular = right * max_motor_cmd;
173-
173+
174174
left = linear - angular;
175175
right = linear + angular;
176176
}

src/behaviours/src/DriveController.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -306,9 +306,9 @@ PIDConfig DriveController::fastVelConfig() {
306306
PIDConfig DriveController::fastYawConfig() {
307307
PIDConfig config;
308308

309-
config.Kp = 240;
310-
config.Ki = 25;
311-
config.Kd = 0.5;
309+
config.Kp = 100;
310+
config.Ki = 10;
311+
config.Kd = 14;
312312
config.satUpper = 255;
313313
config.satLower = -255;
314314
config.antiWindup = config.satUpper/2;
@@ -350,9 +350,9 @@ PIDConfig DriveController::slowVelConfig() {
350350
PIDConfig DriveController::slowYawConfig() {
351351
PIDConfig config;
352352

353-
config.Kp = 80;
354-
config.Ki = 15;
355-
config.Kd = 1.7;
353+
config.Kp = 70;
354+
config.Ki = 16;
355+
config.Kd = 10;
356356
config.satUpper = 255;
357357
config.satLower = -255;
358358
config.antiWindup = config.satUpper/4;

src/behaviours/src/PID.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,20 +105,24 @@ float PID::PIDOut(float calculatedError, float setPoint) {
105105
if (fabs(P) < config.antiWindup)
106106
{
107107
float avgPrevError = 0;
108-
for (int i = 1; i < Error.size(); i++) {
108+
for (int i = 1; i < Error.size(); i++)
109+
{
109110
avgPrevError += Error[i];
110111
}
111-
if (Error.size() > 1) {
112+
if (Error.size() > 1)
113+
{
112114
avgPrevError /= Error.size()-1;
113115
}
114-
else {
116+
else
117+
{
115118
avgPrevError = Error[0];
116119
}
117120

118-
D = config.Kd * (((1-config.derivativeAlpha)*Error[0]) - (config.derivativeAlpha * avgPrevError));
121+
D = config.Kd * (Error[0] - Error[1]) * hz;
119122
}
120123

121124
float PIDOut = P + I + D + FF;
125+
122126
if (PIDOut > config.satUpper) //cap vel command
123127
{
124128
PIDOut = config.satUpper;

src/behaviours/src/PID.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class PID
4444
float prevSetPoint = std::numeric_limits<float>::min();
4545
vector<float> integralErrorHistArray;
4646
int step = 0;
47-
float hz = 10;
47+
float hz = 10; //Rate that PID is running at
4848

4949
};
5050

src/behaviours/src/SearchController.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "SearchController.h"
2+
#include <angles/angles.h>
23

34
SearchController::SearchController() {
45
rng = new random_numbers::RandomNumberGenerator();
@@ -38,7 +39,8 @@ Result SearchController::DoWork() {
3839
}
3940
return result;
4041
}
41-
else if (attemptCount >= 5 || attemptCount == 0) {
42+
else if (attemptCount >= 5 || attemptCount == 0)
43+
{
4244
attemptCount = 1;
4345

4446

@@ -63,7 +65,7 @@ Result SearchController::DoWork() {
6365

6466
result.wpts.waypoints.clear();
6567
result.wpts.waypoints.insert(result.wpts.waypoints.begin(), searchLocation);
66-
68+
6769
return result;
6870
}
6971

0 commit comments

Comments
 (0)