戻る

課題1

問題点

  • ペンをどうやって持たせるか
  • ペンをどうやって上げ下げするか
  • どうやれば綺麗に文字が書けるか

試作ロボット

  • 試作1
    • 歯車で腕を持ち上げたり下げたりしようとした。 うまく噛み合わず動かなくて失敗

最終的なロボットとプログラム

  • 歯車が噛み合わなかった点を反省して、ゴムで腕を上げ下げさせるようにした。
  • それでも、手動で腕を動かした後はうまく動かなくなるので、ウォーミングアップ用のプログラム(腕を上げ下げさせる)を作った。

各自のプログラム

  • K.M
sub arms_down()   //腕を下げる動作
{
 OnFwd(OUT_B);
 Wait(100);
 Off(OUT_B);
} 
sub arms_up()     //腕を上げる動作
{
 OnRev(OUT_B);
 Wait(100);
 Off(OUT_B);
} 
sub turn_right()  //右に曲がる動作
{
 OnFwd(OUT_A);
 OnRev(OUT_C);
 Wait(85);
 Off(OUT_A+OUT_C);
}
sub turn_left()   //左に曲がる動作
{
 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(85);
 Off(OUT_A+OUT_C);
} 
task main()
{
 arms_down();     //腕を下げてペンを紙へ付ける
 OnFwd(OUT_A);    //ここから右旋回で右の1画目を書く
 OnRev(OUT_C);
 Wait(70);
 Off(OUT_A+OUT_C);
 arms_up();//     //1画目のはらい終了、ペンを上げる

 OnFwd(OUT_A);    //2画目の準備
 OnRev(OUT_C);
 Wait(16);
 Off(OUT_A+OUT_C);

 OnFwd(OUT_A+OUT_C);  
 Wait(42);
 Off(OUT_A+OUT_C);
 turn_right();
 OnRev(OUT_A+OUT_C);
 Wait(142);
 Off(OUT_A+OUT_C);
 arms_down();      //ペンを下げて2画目へ
 OnRev(OUT_A+OUT_C);
 Wait(152);
 Off(OUT_A+OUT_C);
 arms_up();        //2画目終了、ペンを上げる

 OnFwd(OUT_A+OUT_C);  //3画目の準備
 Wait(213);
 Off(OUT_A+OUT_C);
 turn_right();
 OnRev(OUT_A+OUT_C);
 Wait(131);
 Off(OUT_A+OUT_C);
 arms_down();         //ペンを下げて3画目を書く
 OnRev(OUT_A+OUT_C);
 Wait(48);
 Off(OUT_A+OUT_C);
 arms_up();           //3画目終了、ペンを上げる

 OnFwd(OUT_A+OUT_C);  //4画目の準備
 Wait(148);
 Off(OUT_A+OUT_C);
 turn_left();
 OnRev(OUT_A+OUT_C);
 Wait(100);
 Off(OUT_A+OUT_C);
 arms_down();         //ペンを下げて4画目へ
 OnRev(OUT_A+OUT_C);
 Wait(69);
 Off(OUT_A+OUT_C);
 arms_up();           //4画目の曲がりまで終了、ペンを上げる

 OnFwd(OUT_A+OUT_C);  //4画目の曲がりからスタートの準備
 Wait(100);
 Off(OUT_A+OUT_C);
 turn_right();
 OnRev(OUT_A+OUT_C);
 Wait(100);
 Off(OUT_A+OUT_C);
 arms_down();          //ペンを下げて4画目の続きへ
 OnRev(OUT_A+OUT_C);
 Wait(48);
 Off(OUT_A+OUT_C);
 arms_up();            //4画目終了、ペンを上げる

 OnFwd(OUT_A+OUT_C);   //5画目の準備
 Wait(100);
 Off(OUT_A+OUT_C);
 turn_left();
 OnRev(OUT_A+OUT_C);
 Wait(31);
 Off(OUT_A+OUT_C);
 arms_down();          //ペンを下げて5画目へ
 OnRev(OUT_A+OUT_C);
 Wait(69);
 Off(OUT_A+OUT_C);
 arms_up();            //5画目終了、ペンを上げる

 OnRev(OUT_A);         //1回転回って喜びを表現(無意味)
 OnFwd(OUT_C);
 Wait(340);
 Off(OUT_A+OUT_C);
 }
  • AI
sub pen_down(){//   腕を下げる
	Off(OUT_A+OUT_C);
	OnFwd(OUT_B);
	Wait(100);
	Off(OUT_B);
}
sub pen_up(){//    腕を上げる
	Off(OUT_A+OUT_C);
	OnRev(OUT_B);
	Wait(100);
	Off(OUT_B);
}
void go(int t){//    まっすぐ走る
	OnFwd(OUT_A+OUT_C);
	Wait(t);
}
void back(int t){//   バックする
	OnRev(OUT_A+OUT_C);
	Wait(t);
}
task main(){
	pen_down();
	OnFwd(OUT_A);
	OnRev(OUT_C);
	Wait(70);
	pen_up();//    一画目
	
	
	
	OnFwd(OUT_C);
	OnRev(OUT_A);
	Wait(70);
	back(30);
	OnFwd(OUT_A);
	Wait(70);
	OnFwd(OUT_C);
	Wait(10);
	OnRev(OUT_A);
	Wait(70);
	pen_down();
	go(180);
	pen_up();//    二画目
	
	
	
	back(120);
	OnFwd(OUT_A);
	Wait(74);
	back(50);
	OnFwd(OUT_C);
	Wait(10);
	pen_down();
	go(70);
	pen_up();//    三画目
	
	
	
	
	OnFwd(OUT_C);
	OnRev(OUT_A);
	Wait(70);
	OnRev(OUT_C);
	Wait(100);
	pen_down();
	go(100);
	pen_up();//    四画目
	
	
	
	go(100);
	OnFwd(OUT_A);
	OnRev(OUT_C);
	Wait(70);
	OnRev(OUT_A);
	Wait(100);
	pen_down();
	go(100);
	pen_up();//     四画目その2
	
	
	
	go(100);
	OnRev(OUT_C);
	Wait(70);
	OnFwd(OUT_C);
	Wait(10);
	pen_down();
	back(100);
	pen_up();//   五画目	
}

反省点

  • 一秒間に走る距離と、何秒で回転するかを計ったが、電池の消耗→交換によりズレが生じてしまった


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-12-12 (月) 16:52:51 (5004d)