目次 課題について †課題1については2019a/Mission1を参照 課題の文字について †「長野」と書くことにした。 書き方や書き順について †下記を参照 ロボットについて †下の車が縦に動き、上に乗っている車が横に動くようになっている。上の車にペンを上げ下げするアームを取り付けた。下の車にレールを取り付け、その上をもう一台の車が動くようにすることで、前後左右に線を描けるようにした。また、下の車はタイヤを五個取り付けることでレールの安定性を高めた。 ロボットの全体像 †ロボットの土台となる部分 †レールの上を走りペンを動かすロボット †ロボットの詳細 †下の車は前後に動き、上に乗っている車は左右に動く。また、上に乗っている車に上げ下げができるペンを取り付けたことで、縦・横・斜めに線を引くことを可能にした。さらに、上に乗っている車にはペンの重さによる転倒を防ぐために、おもりを取り付けた。 プログラムについて †定義したプログラム †#define stp OnFwd(OUT_A,10);Wait(200);Off(OUT_A)//ペンを下げる動作 #define revp(s) OnRev(OUT_A,20);Wait(s);Off(OUT_A)//ペンを上げる動作 #define stmain(s) OnFwd(OUT_C,20);Wait(s);Off(OUT_C)//一番下の車の前進 #define revmain(s) OnRev(OUT_C,20);Wait(s);Off(OUT_C)//一番下の車の後退 #define stsub(s) OnFwd(OUT_B,20);Wait(s);Off(OUT_B)//上に乗ってる車の前進 #define revsub(s) OnRev(OUT_B,20);Wait(s);Off(OUT_B)//上に乗ってる車の後退 #define vertical(s) stp;stmain(s);revp(s);revmain(s);//線を縦に書く動作 #define horizen(s) stp;stsub(s);revp(s);revsub(s);//線を横に書く動作 #define diagonal(s) OnFwd(OUT_B,20);OnRev(OUT_C,20);Wait(s);Off(OUT_BC);//線を右上に書く動作 #define oblique(s) OnFwd(OUT_B,20);OnFwd(OUT_C,20);Wait(s);Off(OUT_BC);//線を右下に書く動作 「長」を書くプログラム †task main() { vertical(400); repeat(3){ horizen(500); stmain(150); } stp; revsub(300); stsub(1000); revp(250); revsub(800); stp; OnFwd(400); diagonal(200); revp(250); diagonal(200); stp; diagonal(200); revp(250); revsub(200); stp; oblique(350); revp(250); 「野」を書くプログラム †stmain(400); revsub(400); repeat(5){ horizen(350); stmain(120); } stsub(175); revmain(120); stp; revmain(240); revp(250); revsub(175); revmain(300); repeat(3){ vertical(300); stsub(175); } horizen(300); stsub(175); stmain(150); stp; diagonal(200); revp(250); stmain(500); revsub(150); stp; revsub(100); revp(250); stsub(100); stp; revmain(350); oblique(100); } 完成したロボットに関する感想と反省点 †感想 †車の上に車を乗せるという斬新な発想ではあったが、思ったよりうまくできた。少ないパーツでコンパクトに仕上がったと感じた。 反省点 †上に乗っている車が不安定だったので、そこを改良できればよかったと思う。また、ペンを取り付けたアームがガタガタしていたが、そこの改善策を思いつけなかった。 |