[[戻る>2005/A6]]

[[課題1>2005/練習問題#kadai1]]

* 問題点 [#hb90ce88]
- ペンをどうやって持たせるか
- ペンをどうやって上げ下げするか
- どうやれば綺麗に文字が書けるか 

* 試作ロボット [#ca485764]
- 試作1
-- 歯車で腕を持ち上げたり下げたりしようとした。
うまく噛み合わず動かなくて失敗


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


**各自のプログラム [#r9e76aa2]
-K.M

 sub arms_down()
 sub arms_down()   //腕を下げる動作
 {
  OnFwd(OUT_B);
  Wait(100);
  Off(OUT_B);
 } 
 sub arms_up()
 sub arms_up()     //腕を上げる動作
 {
  OnRev(OUT_B);
  Wait(100);
  Off(OUT_B);
 } 
 sub turn_right()
 sub turn_right()  //右に曲がる動作
 {
  OnFwd(OUT_A);
  OnRev(OUT_C);
  Wait(85);
  Off(OUT_A+OUT_C);
 }
 sub turn_left()
 sub turn_left()   //左に曲がる動作
 {
  OnFwd(OUT_C);
  OnRev(OUT_A);
  Wait(85);
  Off(OUT_A+OUT_C);
 } 
 task main()
 {
  arms_down();
  OnFwd(OUT_A);
  arms_down();     //腕を下げてペンを紙へ付ける
  OnFwd(OUT_A);    //ここから右旋回で右の1画目を書く
  OnRev(OUT_C);
  Wait(70);
  Off(OUT_A+OUT_C);
  arms_up();//1
  arms_up();//     //1画目のはらい終了、ペンを上げる
 
  OnFwd(OUT_A);
  OnFwd(OUT_A);    //2画目の準備
  OnRev(OUT_C);
  Wait(16);
  Off(OUT_A+OUT_C);
 
  OnFwd(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();
  arms_down();      //ペンを下げて2画目へ
  OnRev(OUT_A+OUT_C);
  Wait(152);
  Off(OUT_A+OUT_C);
  arms_up();//2
  arms_up();        //2画目終了、ペンを上げる
 
  OnFwd(OUT_A+OUT_C);
  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();
  arms_down();         //ペンを下げて3画目を書く
  OnRev(OUT_A+OUT_C);
  Wait(48);
  Off(OUT_A+OUT_C);
  arms_up();//3
  arms_up();           //3画目終了、ペンを上げる
 
  OnFwd(OUT_A+OUT_C);
  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();
  arms_down();         //ペンを下げて4画目へ
  OnRev(OUT_A+OUT_C);
  Wait(69);
  Off(OUT_A+OUT_C);
  arms_up();//3.5
  arms_up();           //4画目の曲がりまで終了、ペンを上げる
 
  OnFwd(OUT_A+OUT_C);
  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();
  arms_down();          //ペンを下げて4画目の続きへ
  OnRev(OUT_A+OUT_C);
  Wait(48);
  Off(OUT_A+OUT_C);
  arms_up();//4
  arms_up();            //4画目終了、ペンを上げる
 
  OnFwd(OUT_A+OUT_C);
  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();
  arms_down();          //ペンを下げて5画目へ
  OnRev(OUT_A+OUT_C);
  Wait(69);
  Off(OUT_A+OUT_C);
  arms_up();//5
  arms_up();            //5画目終了、ペンを上げる
 
  OnRev(OUT_A);
  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();//   五画目	
 }
* 反省点 [#kb41a65b]
- 一秒間に走る距離と、何秒で回転するかを計ったが、電池の消耗→交換によりズレが生じてしまった



#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS