[[2011a]] *課題01:お絵かきロボット[#a0d3bd18] 相手の似顔絵をかこう! **ミッション [#h9d13dcf] •A4の紙に相棒の似顔絵を書くロボットを作成せよ。 **条件 [#l42b2a99] •ひとりにつき一つ以上のプログラムを作成すること。 •ペン以外はキットに含まれる部品を使うこと。 •キットに付属の高価な輪ゴムは切れやすいので切れないように細心の注意を払うこと。 •改良や調整をしやすくするため、ロボット本体だけでなく、プログラムについても可能な部分についてはサブルーチンや関数、マクロなどを使って部品に分けること。 **報酬 [#l825967b] •評価 -------------------------------------------------------------------------------- #contents *メンバー [#rd394649] ・TOKIO ・なら *ロボットの概略や工夫したところ [#e0e9bd63] •シンプルで小回りの利く四輪車! •いかにもペンを持っていそうな?アーム!(ペンを上下させることも考えたが、より「絵を描いている感」を出すためにアームを振り下ろすことにした。) •;できるだけ軽量にするために最低限のパーツしかついていないスッキリBody! **アームについて [#xd77174c] 初めは、手のような形をしたアームにペンを持たせていたが、ものすごい速さで振り下ろし(ペンがやられ)、しかもペンの安定性に欠けたので改良してシンプルな形のアームにした。 また、初めアームを直接モーターに取り付けていたが、それだとほんの少しモーターを回転させただけで、超高速でペンを振り下ろしてしまうので、間にギアを使った。 そして、ペンを振る時の衝撃に耐えられるように少しまわりをブロックで補強した。 **名前 [#n43a1aaf] LEXUS *似顔絵について [#i276ea53] ・ここで、簡単な似顔絵を描くプランを説明する。 ならはらの軌跡 #ref(kao.jpeg) 激似ですね。 しかし、当初はこの予定ですべて直線で描くつもりだったが、シンプルなプログラムにし、より少ない工程で顔を描きたかったので、3番の線は左旋回を使い曲線で描いた。 描いてから思ったが、こちらのほうがより顔っぽかった。 TKOの顔の設計 #ref(tokio_no_kao.jpg) 似ていますね。髪の分け方とか^^ *プログラム [#f2bc0f9a] ーTOKIO #define GO OnFwd(OUT_A);OnFwd(OUT_C); //前に進む #define BACK OnRev(OUT_A);OnRev(OUT_C); //後ろに進む #define Tright OnFwd(OUT_A);OnRev(OUT_C); //右回転 #define Tleft OnRev(OUT_A);OnFwd(OUT_C); //左回転 #define STOP Off(OUT_A+OUT_C); //止まる sub pen_up() {OnRev(OUT_B);Wait(10);Off(OUT_B);Wait(50);} //ペンをあげる sub pen_down() { OnFwd(OUT_B);Wait(8);Off(OUT_B);Wait(50);} //ペンを下げる task main() { GO;Wait(70);STOP;pen_up(); //1番 輪郭 BACK;Wait(80);STOP;Tright;Wait(40); //2番 輪郭 GO;Wait(60);STOP;pen_down(); GO;Wait(50);STOP;Wait(50); Tleft;Wait(047);STOP;Wait(50);pen_up(); //3番 輪郭 Tright;Wait(1);BACK;Wait(75);STOP; //4番 輪郭 pen_down();GO;Wait(75);STOP;pen_up(); BACK;Wait(75);Tright;Wait(50); //5番 右目 STOP;BACK;Wait(30);STOP; pen_down();GO;Wait(18);STOP;pen_up(); GO;Wait(25);Tleft;Wait(20);STOP; //6番 左目 pen_down();Tleft;Wait(18);STOP;pen_up(); BACK;Wait(30);Tright;Wait(90);STOP; //7番 口 pen_down();GO;Wait(30);STOP;pen_up(); Tleft;Wait(15);STOP;BACK;Wait(20);STOP; //8番 鼻 pen_down();Tleft;Wait(15); STOP;Tright;Wait(10);STOP; pen_up(); GO;Wait(200);STOP; } *問題点・反省点 [#v1968e1a] ・ペンの着地点が本体と離れていたため描写→(ペンの着地点まで)後退→回転→移動…となりプログラムが複雑になった。 ・電池消耗の影響か作業中に移動距離が変わってしまった。 ・紙がずれない工夫が施せなかった。 ・なかなか時間が確保できず、ぎりぎりまでロボットやプログラムができなかった。 ・サブルーチンを使って最初よりすっきりしたプログラムを書くことができた。 *コメントするところ。 [#q02dced7] #comment