[[2008b/A2/課題1/メンバーページへ:http://yakushi.shinshu-u.ac.jp/robotics/?2008b%2FA2]]

*目次 [#q7c2244f]

#contents

*課題1/似顔絵を作成する [#c3d27323]

**1課題の概要 [#aaf96f25]

A3の用紙に相棒の似顔絵を作成するロボットの作成。
 

**2ロボット本体の制作過程 [#cfc33310]

***土台構成について [#n884bd06]

~土台となる部分は作成用の本に書いてあった四輪のタイプを使用しました。
~土台の部分には特に手を加えず、そのままの形で製作。

***ペンを持たせる部分について [#l7012eb2]

~ここの部分には過去の作品のアイディアを一部使用しながら工夫し、完成。予定よりもかなり少ない部品でつくることの成功しました。&br;主な工夫点については後に記載します。
**3ロボット本体の完成 [#hb2eb680]

完成したロボットがこちら
~正面~


~真上から~

まだ写真はありません。
***主な工夫点 [#x742bc48]

~ペンを動かすにはタイヤを使って上下に移動する方法を採用。&br;
三つタイヤを使うことによりペンの上下を安定させることが出来たと思います。&br;
また、なるべく少ない部品で組み立てることで、小型化、軽量化することができました。
***ロボットの欠点と改善に向けて [#c8c5aa72]

~このロボットの弱点、つまり改良点は、非常に衝撃に弱いことです。&br;ブロックばかりでの構成なので、外れやすく、組み込みが複雑なので取り外しも簡単に出来ません。
&br;前のほうにパーツが多い所為か前に重心がかかっているらしく、アームの部分だけが外れることもよくあります。
&br;なので改良すべき点はパーツが外れないよう補強すること、ブロック以外の部品の活用です。
&br;だからといってパーツを多く使いすぎれば小型、軽量の意味がなくなってしまうので難しいところです。
**4ロボットのプログラム [#g0004a6b]

***その1 [#n119425f]
int turn_time;

#define FF OUT_A+OUT_C//for go
#define FL OUT_A//turn left
#define FR OUT_C//turn right
#define FA OUT_B//pen


sub up()              //ペンを上げるsub
 {SetPower(FA,5);
  OnFwd(FA_B);
  Wait(t);
  Off(FA);}

sub down()            //ペンを下げるsub
  {SetPower(FA,5);
   OnRev(FA);
  Wait(t);
  Off(FA);}

sub fore()            //本体を前に動かすsub
  {SetPower(FF,5);
  OnRev(FF);}
 
sub back()            //本体を後ろに動かすsub
  {SetPower(FF,5);
  OnFwd(FF);}

sub right()            //右に旋回するsub
  {SetPower(FR,5);
  OnRev(FF);}

sub left()             //左に旋回するsub
  {SetPower(FL,5);
   OnRev(FF);}
   
sub turn_left_025()           // 90度左旋回
 {turn_time = WHOLETIME ;
    turn_time /= 4 ;
    OnFwd(FL); Rev(FF); Wait(turn_time); 
    Off(FF);           }
    
sub turn_left_0125()           // 45度左旋回
 {turn_time = WHOLETIME ;
    turn_time /= 8 ;
    OnFwd(FL); Rev(FF); Wait(turn_time); 
    Off(FF);              }
 
sub turn_right_025()           // 90度右旋回
 {turn_time = WHOLETIME ;
    turn_time /= 4 ;
    OnFwd(FR); Rev(FF); Wait(turn_time); 
    Off(FF);           }
    
sub turn_right_0125()           // 45度右旋回
 {   turn_time = WHOLETIME ;
    turn_time /= 8 ;
    OnFwd(FR); Rev(FF); Wait(turn_time); 
    Off(FF);              }
  
main task()
 {          down();           //筆先を下ろします
      repeat(2){         //まずは輪郭です
           fore();
           Wait(t);
           Off(FF);          
           
           left();
           Wait(t);
           Off(FL);}         //輪郭描けました
      
           up();
           turn_left_025();
      repeat(2){
           fore();
           Wait(t);
           Off(FF);
           down();
           fore();
           Off(FF);
           up();}
           
           fore();                  //目を描きました
           
           back();
           Wait(t);
           Off(FF);
           turn_ right_025();
           fore();
           Wait(t);
           Off(FF);
           down();
           fore();
           Wait(t);
           Off(FF);
           up();                    //鼻を描きました
           
           turn_left_025();
           fore();
           Wait(t);
           Off(FF);
           turn_right_025();
           Wait(t);
           Off(FF);
           turn_right_025();
           Wait(t);
           Off(FF);
           down();
           fore();
           Wait(t);
           Off(FF);
           up();
           fore();
           Wait(t);
           Off(FF);                 //口が描けました
           
           turn_right_025();
           fore();
           Wait(t);
           Off(FF);
       repeat(3){   
           turn_right_0125();
           fore();
           Wait(t);
           Off(FF);
           turn_left_0125();}       //髪まで描きます!


 //サブルーチンは上限八個であることが判明
 //これから試行錯誤します

***その2 サブルーチンなどは、その1とほとんど同じです。 [#sbdf315f]

 int turn_time;

 #define FF OUT_A+OUT_C
 #define FL OUT_A
 #define FR OUT_C
 #define FA OUT_B
 
sub up()  ペンを上げる                                
 {SetPower(FA,5);
  OnFwd(FA);
  Wait(5);
  Off(FA);}
 
sub down()  ペンを下げる                            
 {SetPower(FA,5);
  OnRev(FA);}
 
sub fore()  直進                                
 {SetPower(FF,5);
  Off(FA); 
  OnRev(FF);}  
 
sub back()    後退                              
 {SetPower(FF,5);
  OnFwd(FF);}

Wait(t);
 Off(FA);}

sub right()  右に曲がる                           
 {SetPower(FR,5);
  OnRev(FF);}
 
sub left()    左に曲がる                             
 {SetPower(FL,5);
  OnRev(FF);}



task main()

#ref(輪郭.jpg)

 {
     down();     //輪郭(左頬からスタート)
     fore();
     Wait(130);
     up();
 
   repeat(2){      //アゴの辺り
     left();
     Wait();
     down();
     fore();
     Wait();
     up();
     
     left();
     Wait();
     down();
     fore();
     Wait();
     up();
     
     left();
     Wait();
     down();
     fore();
     Wait();
     up();
     }
     
     down();      //右頬の辺り
     fore();
     Wait();
     up();
     back();
     Wait();
     left();
     Wait();

#ref(メガネ.jpg)

   repeat(2);{          //メガネ
     down();
     fore();
     Wait();
     up();
     right();
     Wait();
     down();
     fore();
     Wait();
     up();
     left();
     Wait();
     down();
     fore();
     Wait();
     up();
     
     left();
     Wait();
     down();
     fore();
     Wait();
     up();
     left();
     Wait();
     down();
     fore();
     Wait();
     
     up();
     left();
     Wait();
     fore();
     Wait();
     }
     
   down();
   fore();
   Wait();

#ref(鼻.jpg)
  
   up();          //鼻までの移動
   back();
   Wait();
   left();
   Wait();
   fore();
   Wait();
   
   down();     //鼻
   fore();
   Wait();
   up();

#ref(口.jpg)

   up();     //鼻から口   
   right();
   Wait();
   fore();
   Wait();
   left();
   Wait();
   fore();
   Wait();
   
   down();          //最後に口を書きます
   repeat(2){
      left();
      Wait();
      down();
      fore();
      Wait();
      up();
   
      left();
      Wait();
      down();
      fore();
      Wait();
      up();
 
      left();
      Wait();
      down();
      fore();
      Wait();
      up();
      }  
      }                 //口を書き終わって終了です。

/図は後で足します。
    


                   


*コメント [#zc823165]
コメントがあればどうぞ
- 相方への連絡です。ロボットの動きを知りたいので、CD含めた一式を5コマ目の後パソコン室(十番教室)に持ってきて下さい。六時から七時まで、一時間ほど待機しています。 -- [[ハマダ]] &new{2008-11-10 (月) 09:06:55};

#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS