[[2016a/Member]]
#contents
*似顔絵を描いてくれるロボットを作る [#icf1552c]
私のグループの似顔絵ロボットは写真の通りです。
#ref(2016a/Member/cheeze/Mission1/naname.jpeg,65%)

体の部分は冊子を参考にして作りました。&br;
そこに、ペンを持つ部分を作るという形で進めていきました。&br;
モーターで持ち上げるだけでは安定感がなかったので、市販の輪ゴムを使って軽く固定しています。&br;
写真の、上の2つのタイヤ(赤丸)がモーターで動くようになっていて、下の2つのタイヤ(青丸)は自由に回るようになっていて、ペンの動きに合わせて回ります。&br;
#ref(2016a/Member/cheeze/Mission1/side&circle.jpeg,80%)

私のグループのタイヤは右と左で回転速度が違い、まっすぐ動かす時に曲がってしまうので、片方のタイヤに輪ゴムをつけるなどしてきましたが、今回の課題ではまっすぐ進む距離が短いので、細工を外してあります。

また、見た目も楽しいものにしようと、翼などを付けていましたが、本体が重たくて速さやバランスも変わってしまうため外しました。

#ref(2016a/Member/cheeze/Mission1/up.jpeg,65%,ロボット)


*プログラミング [#i47f6a5b]

  task main ()
  {
  OnRev(OUT_B); //ペン下ろす
  Wait(20);
  Off(OUT_B);
  OnFwd(OUT_A);
  OnRev(OUT_C); // 
  OnRev(OUT_C);
  Wait(350);    // 	輪郭 1
  

  OnFwd(OUT_A+OUT_C);    //

  OnFwd(OUT_A+OUT_C);
  Wait(45);    //      前髪横線 2


  OnFwd(OUT_B);
  Wait(20);
  Off(OUT_B); 	//上げる
  OnRev(OUT_A+OUT_C);    //      
  OnRev(OUT_A+OUT_C);      
  Wait(40); // 微調整
  OnFwd(OUT_A);
  OnRev(OUT_C); // 
  OnRev(OUT_C);
  Wait(60);    // 向きを変える
  OnFwd(OUT_A+OUT_C);    //     
  Wait(20);    // 
  OnFwd(OUT_A+OUT_C);
  Wait(20); 
  Off(OUT_A+OUT_C);//微調整
  OnRev(OUT_B);
  Wait(20);
  Off(OUT_B);ペン下ろす
  OnFwd(OUT_A+OUT_C);    //     
  OnFwd(OUT_A+OUT_C);
  Wait(22);    //   右前髪縦線 3


  OnFwd(OUT_B);
  Wait(20);  
  Wait(20);
  Off(OUT_B); //上げる
  OnRev(OUT_A+OUT_C);    // 
  OnRev(OUT_A+OUT_C);
  Wait(20);    // 微調整
  OnFwd(OUT_A);
  OnRev(OUT_C); // 
  OnRev(OUT_C);
  Wait(20);    // 向きを変える
  OnRev(OUT_B);
  Wait(20);
  Off(OUT_B); 下ろす
  OnRev(OUT_A+OUT_C);    // 
  OnRev(OUT_A+OUT_C);
  Wait(40);    // 左前髪 4


  OnFwd(OUT_B);
  Wait(20);
  Off(OUT_B);//上げる
  OnFwd(OUT_A+OUT_C);    // 
  Off(OUT_B);  //上げる
  OnFwd(OUT_A+OUT_C);
  Wait(30);    // 微調整
  OnFwd(OUT_C);
  OnRev(OUT_A); // 
  OnRev(OUT_A);
  Wait(10);    // 向きを変える
  OnRev(OUT_B);
  Wait(20);
  Off(OUT_B);//下ろす
  OnRev(OUT_A+OUT_C);    // 
  Off(OUT_B);  //下ろす
  OnRev(OUT_A+OUT_C); 
  Wait(100);    // 左横髪 5
  OnFwd(OUT_A+OUT_C);    // 
  OnFwd(OUT_A+OUT_C); 
  Wait(32);    // 戻ってくる 5


  OnFwd(OUT_B);
  Wait(20);
  Off(OUT_B);//上げる
  OnFwd(OUT_A);
  OnRev(OUT_C); // 
  OnRev(OUT_C);
  Wait(90);    // 向きを変える
  OnFwd(OUT_A+OUT_C);    // 
  OnFwd(OUT_A+OUT_C);
  Wait(12);    // 移動  
  OnRev(OUT_B);
  Wait(20);
  Off(OUT_B);//下ろす
  OnFwd(OUT_A+OUT_C);    // 
  OnFwd(OUT_A+OUT_C);
  Wait(7);    // 左目 6

  OnFwd(OUT_B);
  Wait(20);
  Off(OUT_B);
  OnFwd(OUT_A+OUT_C);    // 
  OnFwd(OUT_A+OUT_C);
  Wait(10);    // 移動
  OnRev(OUT_B);
  Wait(20);
  Off(OUT_B);
  OnFwd(OUT_A+OUT_C);    // 
  OnFwd(OUT_A+OUT_C);
  Wait(7);    // 右目 6


  OnFwd(OUT_B);
  Wait(20);
  Off(OUT_B);
  OnFwd(OUT_A+OUT_C);    // 
  OnFwd(OUT_A+OUT_C);
  Wait(12);    // 移動
  OnFwd(OUT_C);
  OnRev(OUT_A); // 
  OnRev(OUT_A);
  Wait(60);    // 向きを変える
  OnRev(OUT_B);
  Wait(20);
  Off(OUT_B);
  OnRev(OUT_A+OUT_C);    // 
  OnRev(OUT_A+OUT_C);
  Wait(70);    // 右横髪 7


  OnFwd(OUT_A+OUT_C);    // 
  OnFwd(OUT_A+OUT_C);
  Wait(17);    // 戻る
  OnFwd(OUT_B);
  Wait(20);
  Off(OUT_B); 
  OnFwd(OUT_A+OUT_C);    // 
  OnFwd(OUT_A+OUT_C);
  Wait(30);    // 微調整 
  OnFwd(OUT_A);
  OnRev(OUT_C); // 
  OnRev(OUT_C);
  Wait(70);    // 向きを変える
  OnRev(OUT_A+OUT_C);    // 
  Wait(40);    // 
  OnRev(OUT_A+OUT_C);
  Wait(40);
  Off(OUT_A+OUT_C);//移動
  OnRev(OUT_B);
  Wait(20);
  Off(OUT_B);
  OnRev(OUT_A+OUT_C);    // 
  OnRev(OUT_A+OUT_C);
  Wait(40);    // 口 8


  Off(OUT_A);
  Off(OUT_B);
  Off(OUT_C);
  }

見やすくするために、1つ何か書くごとに行をあけて行いました。&br;
このプログラミングで、私はこのような顔を作ろうとしました。&br;
#ref(2016a/Member/cheeze/Mission1/kao.jpeg,75%,ロボット)
#ref(2016a/Member/cheeze/Mission1/kaonojunban.jpeg,60%,ロボット)
しかし、紙の枠に上手く入りきらなかったり、電池残量によって速度が変わるなどして、思うように描けませんでした。&br;

また、定義を使って短くしようとしなかったことも反省しました。&br;
先に、ペンを上げる起動時間を定義しておくことで、今回はありませんでしたが、変更の際に全てを変えなくてもよくなるなどの利点も考えて、今後はプログラムを作っていきたいと思いました。&br;

*課題を通して [#d0118bac]
自分の顔を描いてくれるロボットがだんだん愛らしくなっていきました。&br;
グループでなかなか集まれず、ロボットを動かす機会が少なくなってしまったのも反省点だと思うので、次回に活かしていきたいです。

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