目次 #contents *1,課題について [#j61b8f59] **課題1 概要 [#s67bbc7e] A4の紙に今年の大学生活を表す漢字一文字を書くロボットを製作せよ。 詳しくは[[課題1>2017a/Mission1]]を参照。 **選んだ漢字 [#x4edf401] 大学生活が始まり分からないことが多かったり、これからの大学生活の中でも苦労することが多いと思うので、「困」という漢字を選びました。 ロボット製作でも困ることが多かったのでピッタリな漢字だったと思います。 *2,ロボットについて [#c04dfd54] **ペンを持つ部分の説明 [#ibe26dbf] ペンを二つのタイヤを使って固定する仕組みにしました。大きなタイヤでがっちりと固定するのでペンがぶれるのは防ぐことができました。また、重心が前に寄ってしまうので支えを作りました。最初は補助輪のようなものをつけていたのですが、カーブがうまくできなかったので下の写真のパーツを使いました。正面はプログラムを転送するときに電波を遮らないように窓を作りました。 &ref(./syoumen.jpg,50%,正面);&ref(./uragawa.jpg,50%,裏側); **本体の説明 [#y7d8dcd6] 本体は説明書に載っていたものをそのまま利用しました。 #ref(./yoko.jpg,50%,横側) *3,プログラムについて [#ma80ffb2] **書き順について [#of60a4d0] プログラムを簡単にできるように書き順は工夫しました。国構えは一周回るようにしました。中の木を書くときには回転の向きが右回りだけで済むようにしました。また、誤差が出にくいように一度だけ右に45度で、他はすべて90度でできるようにしました。 #ref(./kakijunn.jpg,30%,書き順) **定義したもの [#c18711e4] プログラムは途中からの変更がしやすいようにパーツに分けて書きました。 #define SUSUMU_MAWARI OnFwd(OUT_AC);Wait(100);Off(OUT_AC);Wait(50);//国構えの直線 #define TURN_RIGHT OnFwd(OUT_A);OnRev(OUT_C);Wait(90);Off(OUT_AC);Wait(50);//右に九十度 #define turn_right OnFwd(OUT_A);OnRev(OUT_C);Wait(44);Off(OUT_AC);Wait(50);//右に四十五度 #define pen_up OnRev(OUT_B);Wait(10);Off(OUT_B);Wait(50);//ペンを上げる #define pen_down OnFwd(OUT_B);Wait(35);Float(OUT_B);Wait(50);//ペンを下げる #define HOSEI OnRev(OUT_AC);Wait(79);Off(OUT_AC);Wait(50);//横の補正 #define hosei OnFwd(OUT_AC);Wait(74);Off(OUT_AC);Wait(50);//縦の補正 補正というのは、回転したときにペン先の位置がずれてしまうのでその分を修正するためのプログラムです。 **国構え [#jbfb84b9] sub KUNI_GAMAE() { SUSUMU_MAWARI; pen_up; hosei; TURN_RIGHT; HOSEI; pen_down; SUSUMU_MAWARI; pen_up; hosei; TURN_RIGHT; HOSEI; pen_down; SUSUMU_MAWARI; pen_up; hosei; TURN_RIGHT; HOSEI; pen_down; SUSUMU_MAWARI; pen_up; SUSUMU_MAWARI; pen_up; hosei; TURN_RIGHT; HOSEI; pen_down; SUSUMU_MAWARI; pen_up; hosei; TURN_RIGHT; HOSEI; pen_down; SUSUMU_MAWARI; pen_up; hosei; TURN_RIGHT; HOSEI; pen_down; SUSUMU_MAWARI; pen_up; } **縦棒 [#m1e0ba02] sub TATE_BOU() { OnFwd(OUT_AC);//右に回した時真ん中に来るように調整 Wait(24); Off(OUT_AC); TURN_RIGHT; OnRev(OUT_AC);//下が二センチ空くように調整 Wait(56); Off(OUT_AC); pen_down;//木の縦棒 OnFwd(OUT_AC); Wait(64);//縦棒長さ Off(OUT_AC); pen_up; OnFwd(OUT_AC);//右に回した時真ん中に来るように調整 Wait(24); Off(OUT_AC); TURN_RIGHT; OnRev(OUT_AC);//下が二センチ空くように調整 Wait(56); Off(OUT_AC); OnFwd(OUT_AC); Wait(64);//縦棒長さ Off(OUT_AC); pen_up; } 縦棒を書くときは、90度回転したときに国構えの後の縦棒の始点が真ん中に来るように工夫しました。 **横棒 [#j6f5dcd3] sub YOKO_BOU() { OnFwd(OUT_AC);//横棒の位置調整 Wait(56); TURN_RIGHT; OnRev(OUT_AC);//横棒の始点調整 Wait(56); Off(OUT_AC); pen_down;//横棒 OnRev(OUT_AC); Wait(48);//横棒長さ Off(OUT_AC);// pen_up; OnFwd(OUT_AC);//横棒の位置調整 Wait(56); TURN_RIGHT; OnRev(OUT_AC);//横棒の始点調整 Wait(56); Off(OUT_AC); pen_down;//横棒 OnRev(OUT_AC); Wait(48);//横棒長さ Off(OUT_AC);// pen_up; } 横棒も書き始めの位置の調整を頑張りました。 **右はらい [#h2f68118] sub MIGI_HARAI() { OnFwd(OUT_AC);//右のはらい位置調整 Wait(84); Off(OUT_AC); turn_right;//右のはらい角度 OnRev(OUT_AC); Wait(30); Off(OUT_AC); pen_down;//右はらい OnRev(OUT_AC); Wait(40);//右のはらい長さ Off(OUT_AC); pen_up; OnFwd(OUT_AC);//右のはらい位置調整 Wait(84); Off(OUT_AC); turn_right;//右のはらい角度 OnRev(OUT_AC); Wait(30); Off(OUT_AC); pen_down;//右はらい OnRev(OUT_AC); Wait(40);//右のはらい長さ Off(OUT_AC); pen_up; } **左はらい [#l479b15b] sub HIDARI_HARAI() { OnFwd(OUT_AC);//左のはらい位置調整 Wait(80); Off(OUT_AC); TURN_RIGHT; OnRev(OUT_AC); Wait(40); Off(OUT_AC); pen_down;//左はらい OnRev(OUT_AC); Wait(32);//左はらい長さ Off(OUT_AC); Wait(50); OnFwd(OUT_AC);//左のはらい位置調整 Wait(80); Off(OUT_AC); TURN_RIGHT; OnRev(OUT_AC); Wait(40); Off(OUT_AC); pen_down;//左はらい OnRev(OUT_AC); Wait(32);//左はらい長さ Off(OUT_AC); Wait(50); } **全体 [#re6a4dc5] task main() { pen_down; KUNI_GAMAE(); TATE_BOU(); YOKO_BOU(); MIGI_HARAI(); HIDARI_HARAI(); pen_up; pen_down; KUNI_GAMAE(); TATE_BOU(); YOKO_BOU(); MIGI_HARAI(); HIDARI_HARAI(); pen_up; } *4,まとめ [#t8a4c241] **書けた文字 [#ne802d4d] 電池の消耗や前のパーツを引きずってしまうことなどにより毎回違う結果が出てしまった。 &ref(./komaru1.jpg,50%,困1つ目);&ref(./komaru2.jpg,50%,困2つ目); **感想 [#eedbac25] 最初は国構えを練習で使った四角形を利用しようと思ったのですが、カーブの部分でペンの位置がずれてしまいうまくいきませんでした。動き回るタイプのロボットだったので曲がった後、線と線のつなぎ目を合わせるのには苦労しました。ロボットの作成にはもう少し誤差が出ないような工夫ができればよかったと思います。次の課題では今回の反省を活かせるように頑張りたいと思います。