in str/apps/src/LeftNormalCourse.cpp [16:74]
bool LeftNormalCourse::runNormalCourse(int32_t countL, int32_t countR, int8_t light_value){
switch(status){
case LeftStatus::STRAIGHT:
lineTracerWalker.speedControl.setPid ( 2.0, 4.8, 0.024, 150.0 );
lineTracerWalker.turnControl.setPid ( 2.0, 1.0, 0.048, CENTER_BRIGHTNESS );
lineTracerWalker.runLine(countL, countR, light_value);
break;
case LeftStatus::STRAIGHT_SLOW:
lineTracerWalker.speedControl.setPid ( 2.0, 2.0, 0.024, 120.0 );
lineTracerWalker.turnControl.setPid ( 2.0, 1.0, 0.048, CENTER_BRIGHTNESS );
lineTracerWalker.runLine(countL, countR, light_value);
break;
case LeftStatus::NEUTRAL:
lineTracerWalker.speedControl.setPid ( 4.0, 0.8, 0.08, 70.0 );
lineTracerWalker.turnControl.setPid ( 2.0, 1.0, 0.048, CENTER_BRIGHTNESS - 5.0 );
lineTracerWalker.runLine(countL, countR, light_value);
break;
case LeftStatus::EDGE_CHANGE:
lineTracerWalker.setForward(15);
lineTracerWalker.setTurn(-2);
lineTracerWalker.isLeftsideLine(false);
time_count++;
if(light_value > CENTER_BRIGHTNESS && time_count > 125) isChangedEdge = true;
break;
case LeftStatus::EDGE_RESET:
lineTracerWalker.speedControl.setPid ( 4.0, 0.8, 0.08, 10.0 );
lineTracerWalker.turnControl.setPid ( 2.0, 1.0, 0.048, CENTER_BRIGHTNESS - 5.0 );
lineTracerWalker.runLine(countL, countR, light_value);
break;
case LeftStatus::CURVE_RIGHT:
lineTracerWalker.speedControl.setPid ( 4.0, 0.8, 0.08, 80.0 );
lineTracerWalker.turnControl.setPid ( 4.0, 2.0, 0.1, CENTER_BRIGHTNESS + 5.0 );
//lineTracerWalker.turnControl.setPid ( 4.0, 2.0, 0.096, 40.0 );
lineTracerWalker.runLine(countL, countR, light_value);
break;
case LeftStatus::CURVE_LEFT_SHORT:
lineTracerWalker.speedControl.setPid ( 4.0, 0.8, 0.1, 100.0 );
lineTracerWalker.turnControl.setPid ( 2.0, 0.5, 0.048, CENTER_BRIGHTNESS - 5.0 );
lineTracerWalker.runLine(countL, countR, light_value);
break;
case LeftStatus::CURVE_LEFT:
lineTracerWalker.speedControl.setPid ( 4.0, 0.8, 0.1, 100.0 );
lineTracerWalker.turnControl.setPid ( 4.0, 2.0, 0.096, CENTER_BRIGHTNESS - 5.0 );
lineTracerWalker.runLine(countL, countR, light_value);
break;
case LeftStatus::STOP: stop(); break;
default: stop();
}
if (status == LeftStatus::STOP) return false;
return true;
}