bool LeftNormalCourse::runNormalCourse()

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;
}