void LeftCourse::runTyokusen()

in str/apps/src/LeftCourse.cpp [105:137]


void LeftCourse::runTyokusen(float _start_x, float _start_y, float _goal_x, float _goal_y, bool _isBack){
    bool isEndAngle = false;
    int minus = 1;
    if(_isBack == true)minus = -1;
    
    navi.turnControl.wrapper_of_constructor(4.0, 0.5, 3.0, 0, 0, 0.0, 0); 
    navi.speedControl.wrapper_of_constructor(4.0, 2.0, 0.024, 0, 0, 210.0 * minus, 0);
    
    navi.setLine(_start_x, _start_y, _goal_x, _goal_y);
    navi.getDiffLine(navi.sl.getPointX(), navi.sl.getPointY());    
    navi.calculate_line_angle(_isBack);
    navi.sl.init_normal_vector(navi.start_x, navi.start_y, navi.goal_x, navi.goal_y, navi.current_x, navi.current_y);    
    // NormalCourseを抜けるまでループする
    while (!navi.sl.is_over_normal_vector(navi.current_x, navi.current_y)) {
        //navi.calculateValue(walker.get_count_L(), walker.get_count_R());
        if(! isEndAngle){
            isEndAngle = navi.calculateAngle(walker.get_count_L(), walker.get_count_R(), _isBack);
        }else{
            navi.calculateValue(walker.get_count_L(), walker.get_count_R(), _isBack);
        }
        walker.run(navi.getForward(), navi.getTurn());
        navi.sl.update(walker.get_count_L(), walker.get_count_R());
        if(ev3_button_is_pressed(BACK_BUTTON)){
            walker.run(0, 0);
            break;
        }
        
        tslp_tsk(4); // 4msec周期起動
    }
    walker.run(0, 0);    
    tslp_tsk(100); // 4msec周期起動    
    ev3_speaker_play_tone (NOTE_FS6, 100);
}