趣味で作ってるロボット用ソフトウェア
 All Classes Files Functions Enumerations Enumerator Friends Pages
follow_lines_smooth.cpp

停止せずに次の直線に乗り換える

#include <cstdlib>
#include <iostream>
#include "Roomba_driver.h"
#include "robot_utils.h"
#include "delay.h"
#include "log_printf.h"
using namespace hrk;
using namespace std;
int main(int argc, char *argv[])
{
static_cast<void>(argc);
static_cast<void>(argv);
if (!robot.open("/dev/ttyUSB0")) {
cerr << FILE_POSITION() << robot.what() << endl;
return 1;
}
// 移動の開始
const PositionF first_line(1.0, 0, deg(0));
robot.follow_line(first_line);
// 次の直線に近付くまでは移動させ続ける
const double Line_change_distance = robot.path_change_distance();
while (robot.distance_to_perpendicular(first_line) <
-Line_change_distance) {
delay_sec(0.1);
}
// 次の直線追従のコマンドを発行する
PositionF next_line(1.0, 0.0, deg(90));
robot.follow_line(next_line);
// 停止させて終了する
delay_sec(3.0);
robot.stop();
wait_stable(robot, 0.1);
return 0;
}