[[2016a/Member]]
*目次 [#jb69539e]
#contents
*課題 [#y6262dae]
今回の課題は、似顔絵を描くロボットの作成。

注意点としては、�。腺瓦了罎涼罎貿爾泙襪茲Δ砲垢覘▲撻鶲奮阿鷲嫗阿良�品を使用する��プログラムはできる限りコンパクトなものにする。
*ロボットの構造 [#se680c41]
L字型の部品に輪ゴムを使用して、ペンを固定した。ペンの上げ下げは、モーターの回転を利用することで再現した。

【ロボット後方】
#ref(./image5.jpg,ロボット後方の写真)

【ロボット側方】
#ref(./image6.jpg,ロボット側方の写真)

*プログラム [#af740487]
【プログラムの定義】

go:前進する back:後退する turn_left:左回転 turn_right:右回転 up:ペンを上げる down:ペンを下げる Wait:停止する 

repeat(x){a}:{a}をx回繰り返す

(t)のtに数字を代入することで各コマンドの動作時間を指定できる
 #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)
【顔の手順】

�[愕圓鯢舛�

最初は各線ごとにプログラムしていたが、repeatで省略することが可能だと気づき、変更した。2本の線の角度がずれるときれいな輪郭にならないので、微調整に苦労した。
 task main()
 {
   go(10);
   repeat(3){
   go(80);
   up;
   back(120);
   turn_left(80);
   back(10);
   down;}
�¬椶鯢舛�

目は顔の中心から見て、対象になると考え、ここでもrepeatを使用した。
   go(105);
   up;
   back(20);
   turn_right(120);
   go(70);
   repeat(2){
   go(10);
   down;
   go(20);
   up;}
   back(10);
   turn_right(120);
�I,鯢舛�

目の真ん中に来るように微調整することも大変だったが、今回作ったロボットでは、短い線をきれいに書くのが難しいことをここで実感した。その問題点と対策は別に記載した。
   go(160);
   down;
   Wait(20);
   go(10);
   up;
�じ�を描く  

口はあまり問題なく、プログラムすることができたが、ロボットの調子に左右され、苦労した。
   go(20);
   turn_right(120);
   go(130);
   down;
   go(25);
   up;
 }
*問題点1 [#nf483377]
ロボット後方についている、ペンを回すためのモーターが、ペンを回す反動やペンが地面につく衝撃ですぐに取れてしまう。

対策 タイヤの間に挟むことで固定した。

【対策後の写真】
#ref(./image1.JPG,対策後の写真)
*問題点2 [#h80e2488]
コードの接続不良。


対策 別のコードを使用。ただし、コードが長いため本体の上に積むことになった。
*問題点3  [#qe82591d]
ペンを回す勢いが強く、短い線を描こうとするとペンがはねて、点線になってしまう。

対策 ペンを下げる動作の後にWaitをプログラムに挟むことで、ペンが完全に地面についてから描き始めるようになり、きれいな線を描くことができた。
*完成図 [#yab3206f]
矢印とその番号はプログラムの「顔の手順」を参照

【完成写真】
#ref(./image8.jpg,完成図)
*感想及び反省 [#e5509d5e]
初めてのプログラミングだったが、少しは慣れることができた。そして、一度プログラムが消えるというハプニングもあったが、そのおかげで最初よりコンパクトなプログラムになったので、良かった。しかし、ロボットの移動範囲が広く、似顔絵を描くときにロボットが紙を動かしてしまうので、抑える必要があった。次は移動範囲を可能な限り狭くするようにしたい。全体的にロボットの調子に左右され、微調整の繰り返しで大変だった。

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