run_beginner_task_05.cpp

00001 /*
00002   図のように、半径1[m]の 1/4円弧の扇形の軌跡を描くようにビーゴを走行させなさい
00003   Satofumi KAMIMURA
00004   $Id$
00005 */
00006 
00007 #include <mRunCtrl.h>
00008 #include <vutils.h>
00009 #include <stdio.h>
00010 
00011 using namespace VXV;
00012 
00013 
00014 static void stopAndTurn(mRunCtrl& run, const VXV::Position& target) {
00015   while (abs(run.getLengthToLine(target)) > 300) {
00016     VXV::Delay(100);
00017   }
00018   run.stopToLine(target);
00019   waitStable(run, 100);
00020 
00021   // この課題では、経路の切り替え毎に回転が必要なので、ここで回転させる
00022   run.rotateAngle(deg(-90));
00023   waitStable(run, 100);
00024 }
00025 
00026 
00027 int main(int argc, char *argv[]) {
00028   try {
00029     mRunCtrl run;
00030     if (initConnection(&run, argc, argv) < 0) {
00031       exit(1);
00032     }
00033     vmonitor::show();
00034 
00035     // 最初の直線
00036     VXV::Position target(1000, 0, deg(0));
00037     run.followLine(target);
00038     stopAndTurn(run, target);
00039 
00040     // 円弧
00041     run.followCircle(VXV::Grid(0, 0), 1000);
00042     stopAndTurn(run, VXV::Position(0, -1000, deg(180)));
00043 
00044     // 2番目の直線
00045     target = VXV::Position(0, 0, deg(90));
00046     run.followLine(target);
00047     stopAndTurn(run, target);
00048 
00049     VXV::Delay(1000);
00050   } catch (std::exception& e) {
00051     printf("exception: %s\n", e.what());
00052   }
00053   return 0;
00054 }
00055 

Generated on Mon Apr 13 22:52:01 2009 by  doxygen 1.5.7.1