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