目次

課題

パートナーの似顔絵を描く

ロボットの説明

今回作成したロボットは車体自体が移動し

アームの機構によりペンを上げ下げする自走式ロボットを作成した。

車体の画像

本来はX軸とY軸のそれぞれが別々に動くロボットを作成したかったが

時間が足りなかったために、急遽自走式ロボットに変更した。

ペン周りの構造

一つのモータを使いアームの上げ下げを行う。

ペンの太さに沿って二本のガイドラインを入れ、

その後ろにペンを支える棒を二本置いた。

この棒を2本入れておくことで、前に進んだときにペンがずれないようにした。

しかし、これだと後ろに進んだときには輪ゴムだけで支えることになるので安定感が低かった。

ペン先の画像

本当はペンを車体の内側に入れて前輪の間に置くことで曲がった時のずれを無くしたかったが

車高が低すぎたためにペンが内側に入らず断念した。

後輪の構造

回転軸をタイヤの中心から平行にずらし、自由に回転できるようにした。

後輪の画像

しかし、後輪が細すぎたり、重心が後ろにかかり過ぎていたので

バックするときに後輪がまっすぐの方向に戻りきらず

曲がったままバックするので直進しないという不具合が生じた。

プログラミングの説明

今回使用したプログラム

 #define SPEED 20
 #define hidari(t) OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED);Wait(t);Off(OUT_BC)
 #define migi(t) OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED);Wait(t);Off(OUT_BC)
 #define mae(t) OnFwd(OUT_BC,SPEED);Wait(t);Off(OUT_BC)
 #define usiro(t) OnRev(OUT_BC,SPEED);Wait(t);Off(OUT_BC)
 #define enn(t) OnFwd(OUT_B,30);Wait(t);Off(OUT_B)
 #define pd OnFwd(OUT_A,SPEED);Wait(170);Off(OUT_A)
 #define pu OnRev(OUT_A,SPEED);Wait(170);Off(OUT_A)
 task main()
 {
     Wait(2500);
     pd;
     mae(1800);
     enn(1100);
     pu;
     mae(2100);
     hidari(2500);
     usiro(2200);
     pd;
     mae(1600);
     enn(1150);
     pu;
     mae(1700);
     hidari(800);
     usiro(3300);
     pd;
     mae(400);
     pu;
     mae(400);
     pd;
     mae(400);
     pu;
     mae(1600);
     hidari(1400);
     usiro(1800);
     pd;
     mae(350);
     enn(150);
     pu;
     mae(400);
     hidari(250);
     pd;
     migi(500);
     pu;
 }

ペンの上げ下げ

マクロを指定し pu=pen up, pd=pen down と指定した。

 #define SPEED 20 
 #define pd OnFwd(OUT_A,SPEED);Wait(170);Off(OUT_A)  // ペンを下げる
 #define pu OnRev(OUT_A,SPEED);Wait(170);Off(OUT_A)  // ペンを上げる

ペン先と紙の摩擦を考え、サインペンではなくボールペンを使用した。

ボールペンを使うことで摩擦が軽減され、少し多めにペンを下げてもロボットの動作に支障は出なかった。

輪郭

マクロで動きと速さをすべて指定し、時間=t という変数を用いることで

好きな時間だけ動かせるようにした。

 #define SPEED 20
 #define hidari(t) OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED);Wait(t);Off(OUT_BC)     // 左に曲がる
 #define mae(t) OnFwd(OUT_BC,SPEED);Wait(t);Off(OUT_BC)                          // 前に進む
 #define usiro(t) OnRev(OUT_BC,SPEED);Wait(t);Off(OUT_BC)                        // 後ろに進む
 #define enn(t) OnFwd(OUT_B,30);Wait(t);Off(OUT_B)                               // 円を描く
 Wait(2500);
 pd;
 mae(1800);            // 左側の輪郭
 enn(1100);            // あごの形
 pu;
 mae(2100);            // 方向転換のための調節
 hidari(2500);         // 左に曲がる
 usiro(2200);          // 下がってペン先を調整
 pd;
 mae(1600);            // 右側の輪郭 
 enn(1150);            // 頭の形
 pu;

マクロで指定したスピードが速すぎたので、もう少しゆっくりした方がきれいに書けるのではないかと思った。

ペン先がタイヤの中心にないので綺麗な半円を描くことができず

あごの形が太くなりすぎてしまった。

さらに、方向転換のために左に曲がるとペン先が線の終わりから大きくずれてしまうので

前進や後退を用いて線のずれを無くすことに苦労した。

顔のパーツ

 mae(1700);          //方向転換のための調整
 hidari(800);        //左に曲がる
 usiro(3300);        //下がってペン先を調整
 pd;
 mae(400);           //右側の目を描く
 pu;
 mae(400);           //眉間の間をあける
 pd;
 mae(400);           //左側の目を描く
 pu;
 mae(1600);          //方向転換のための調整
 hidari(1400);       //左に曲がる
 usiro(1800);        //下がってペン先を調整
 pd;
 mae(350);           //鼻筋を描く
 enn(150);           //鼻のの高さを描く
 pu;
 mae(400);           //方向転換のための調整
 hidari(250);        //左に曲がる
 pd;
 migi(500);          //口を描く
 pu

ペン先を前輪の中心に置けば線のずれも発生せず、プログラムもよりシンプルにできたのではないかと感じる。

先に顔のパーツを描いてから輪郭を描いたほうが、多少輪郭にずれがあっても顔に見えるので

その点も改善できるポイントであると思った。

描けた顔

これが今回描いた顔だ

似顔絵の画像

輪郭があまりうまく描けなかったり、顔のパーツがずれてしまったのが

今回のロボットの反省点である

まとめ

ロボットについての反省

先ほど書いたように 後輪に重心が偏っていたためにまっすぐに曲がれないということが一番の反省点であった。

もう少し重心に気を付けて、重たいコンピューターを前のほうに設置するように次回は心がけていきたい。

さらに、ペン先がロボットの前に出ていたので線がずれてしまっていた。

前輪の間にペン先があれば線がずれるここもなかったのに、それに早く気づけなかったことがとても悔やまれる。

このずれがなかったらプログラミングももっとシンプルになり、描ける線の自由度が高くなったと思った。

プログラミングについての反省

マクロで指定した動きだけで顔を描けたのは一番良かった点である。

さらに変数の "t" を用いて動く時間を自由に変更できたのもよかった点である。

しかし後でプログラミングを見返してみると、方向転換のために

"前に進む" "左に曲がる" "後ろに下がる" という動きが何度も出てきたので

サブルーチンを用いてもっとプログラミングがシンプルにできたと思った。

全体を通して

初めてプログラミングを描き、ほぼ一人でロボットを作ったにしてはとてもよくできていたと感じた。

もう少しパートナーと協力できる時間が取れれば、より良いロボットが作れると感じたので

次回からはパートナーともっと協力したい。

次回の課題は今回の反省を生かし、より良いロボットとプログラムを作りたい。


添付ファイル: fileIMG_5895s.JPG [詳細] fileIMG_5891s.JPG 3件 [詳細] fileIMG_5890s.JPG 3件 [詳細] fileIMG_5888s.JPG 3件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-11-19 (火) 19:10:30