Revision b8085493
| devices/DiWheelDrive/linefollow2.cpp | ||
|---|---|---|
| 56 | 56 |
|
| 57 | 57 |
void LineFollow::stableFollow(int vcnl4020Proximity[4], int (&rpmFuzzyCtrl)[2], Global *global){
|
| 58 | 58 |
int targetSensor = 0x38; |
| 59 |
int actualSensorL = vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_LEFT] >> 8;
|
|
| 60 |
int actualSensorR = vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_RIGHT] >> 8;
|
|
| 59 |
int actualSensorL = vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_LEFT] ; |
|
| 60 |
int actualSensorR = vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_RIGHT] ; |
|
| 61 | 61 |
int targetSpeedL = global->rpmForward[constants::DiWheelDrive::LEFT_WHEEL]; |
| 62 | 62 |
int targetSpeedR = global->rpmForward[constants::DiWheelDrive::RIGHT_WHEEL]; |
| 63 | 63 |
|
| 64 |
|
|
| 65 |
int diff = actualSensorR - actualSensorL; |
|
| 64 | 66 |
int error = targetSensor - (actualSensorL + actualSensorR); |
| 65 | 67 |
|
| 66 | 68 |
accSum += error; |
| 67 | 69 |
int dTerm = error - oldError; |
| 68 | 70 |
|
| 71 |
if (diff > biggestDiff){
|
|
| 72 |
biggestDiff = diff; |
|
| 73 |
} |
|
| 69 | 74 |
int correctionSpeed = (int) (Kp * error + Ki * accSum + Kd * dTerm); |
| 70 | 75 |
chprintf((BaseSequentialStream*) &SD1, "Correction Speed: %d\n", correctionSpeed); |
| 71 | 76 |
rpmFuzzyCtrl[constants::DiWheelDrive::LEFT_WHEEL] = targetSpeedL + correctionSpeed; |
| 72 | 77 |
rpmFuzzyCtrl[constants::DiWheelDrive::RIGHT_WHEEL] = targetSpeedR - correctionSpeed; |
| 73 | 78 |
|
| 79 |
chprintf((BaseSequentialStream*) &SD1, "Diff: %d, Biggest: %d\n", correctionSpeed, biggestDiff); |
|
| 80 |
|
|
| 74 | 81 |
} |
| 75 | 82 |
|
| 76 | 83 |
|
| devices/DiWheelDrive/linefollow2.hpp | ||
|---|---|---|
| 19 | 19 |
; |
| 20 | 20 |
int accSum = 0; |
| 21 | 21 |
float oldError = 0; |
| 22 |
int biggestDiff = 0; |
|
| 22 | 23 |
|
| 23 | 24 |
}; |
| 24 | 25 |
|
| devices/DiWheelDrive/userthread.cpp | ||
|---|---|---|
| 462 | 462 |
// lineFollownew |
| 463 | 463 |
//else |
| 464 | 464 |
// lineFollowing(vcnl4020Proximity, rpmFuzzyCtrl, &global); |
| 465 |
setRpmSpeed(rpmFuzzyCtrl); |
|
| 465 |
// setRpmSpeed(rpmFuzzyCtrl);
|
|
| 466 | 466 |
} |
| 467 | 467 |
|
| 468 | 468 |
// this->sleep(US2ST(5)); |
Also available in: Unified diff