[[2016a/Member]]
目次
#contents

*課題 [#p5166d10]

 各自が使うロボットを使って似顔絵を描く。

*ロボットの説明 [#k7b57622]

 ペンの上げ下げはモーターを回転させて行った。モーターにJ字の部品をつなぎ、その部品にゴムでペンを固定しました。ペンを付けた部品ごと回して上げ下げをした。ペンはマジックペンを使うことにより線を簡単に引かせることができた。

#ref(./image3.jpeg)
#ref(./image4.jpeg)

*プログラムの定義 [#z75a7772]

 前進(go),後退(back),左折(turn_left),右折(turn_right),ペンの上げ(up),下げ(down)の定義です。ここで気をつけたのは、ペンの上げ下げです。ロボットの作りを簡単にしたため、重力の力も借りてモーターの限界を超えないように気をつけて時間を設定しました。

 #define go(t) OnFwd(OUT_AC);Wait(t);Off(OUT_AC)//
 #define turn_left(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_AC)//
 #define turn_right(t) OnRev(OUT_C);OnFwd(OUT_A);Wait(t);Off(OUT_AC)//
 #define back(t) OnRev(OUT_AC);Wait(t);Off(OUT_AC)//
 #define up OnRev(OUT_B);Wait(7);Off(OUT_B)//
 #define down OnFwd(OUT_B);Wait(10);Off(OUT_B)//

*輪郭のプログラム [#m28720cb]

 顔の輪郭で苦労したのは、輪郭の縦と斜めの線のつなぎ目がなかなか合わさらなかったことです。ただターンしても全く想像もしていないところへペンが置かれるので、それを調節するために後退や前進を組み合わせました。

 task main()
 {
     go(100);
     up;
     back(130);
     turn_left(85);
     back(10);
     down;
     go(60);
     up;
     back(100);
     turn_left(65);
     go(10);
     down;
     go(60);
     up;
     back(130);
     turn_left(80);
     down;
     go(100);
 }

*顔のパーツのプログラム[#zbfbccdb]

 まず、髪の毛は授業でせっかく習ったリピートを使ってツンツンの髪の毛を描くことが出来ました。輪郭の後にペンの上げ下げなしで描いたため、ペンの位置がずれることはありませんでした。

 task main()
 {
     repeat(6){
     go(30);
     turn_right(18);
     back(30);
     turn_left(18);
     }
 }

 次に目とその位置へのプログラムです。目の位置への移動の際に、紙の端の方でターンをしなければならない場面がありました。そこで苦労したのは、タイヤが紙を巻き込んで少しロボットの回転が少なかったり、同じ理由で紙の位置がずれたりしてしまったことです。その改善のために、本当に少しだけ回転の際の時間を多めにしました。

 task main()
 {
     up;
     back(20);
     turn_right(100);
     go(120);
     down;
     go(30);
     up;
     go(8);
     down;
     go(30);
 }

 次は鼻とそこへ行くまでのプログラムです。鼻は目と同様にペンを置く位置まで持っていくのにかなり苦労しました。鼻は紙を巻き込むことはあまりなかったが、目の位置がずれると当然鼻の位置もずれたので、どこを微調整すればよいのかわからなくなることも多々ありました。

 task main()
 {
     up;
     back(30);
     turn_right(90);
     go(150);
     down;
     go(30);
 }

 最後は口です。口は鼻の後に描いたので、あえてバックさせて描きました。目や鼻と違ってあまり位置がずれることはなかったのですが、ずれるときは大幅にずれたのでとても大変でした。

 task main()
 {
     up;
     back(100);
     turn_left(90);
     back(30);
     down;
     back(30);
 }

これらのプログラミング全て(輪郭と顔を描くプログラム)を一連の流れでロボットを動かした結果、このような絵ができました。
#ref(./似顔絵)

*一連の流れでロボットを動かしたプログラム [#u070d4ff]
 task main()
 {
     go(100);
     go(100);//顔の輪郭
     up;
     back(130);
     turn_left(85);
     back(10);
     down;
     go(60);
     up;
     back(100);
     turn_left(65);
     go(10);
     down;
     go(60);
     up;
     back(130);
     turn_left(80);
     down;
     go(100);
     repeat(6){
 
     repeat(6){//髪の毛
     go(30);
     turn_right(18);
     back(30);
     turn_left(18);
     }
     up;
 
     up;//目
     back(20);
     turn_right(100);
     go(120);
     down;
     go(30);
     up;
     go(8);
     down;
     go(30);
     up;
 
     up;//鼻
     back(30);
     turn_right(90);
     go(150);
     down;
     go(30);
     up;
 
     up;//口
     back(100);
     turn_left(90);
     back(30);
     down;
     back(30);
 }

*感想 [#pec2a16b]

 RISの調子や紙の調子で同じプログラムでも異なる絵が完成したりもしていて、微調整が本当に大変でした。そんな中で提出できるレベルにまで到達した絵が完成した時はとても感動しました。

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