[[2019a/Member]] *目次 [#gfd180ac] #contents *課題内容 [#i8726f71] これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上、かつ合計10画以上のものを選び、それをA4の紙に書くロボットを製作する。 #br 今回私たちは大田区という文字を選んだ。 #br *条件 [#j3cab9ab] +ペンと輪ゴム以外はキットに含まれるものを使用する。(キットの輪ゴムは切れやすいので使う場合、注意する) +改良や調整をしやすくするために、ロボット本体だけでなくらプログラムについても可能な部分はサブルーチンや関数、マクロを使って部品に分ける。 ~ #br *使用した道具 [#l7d08e8d] --LEGO社のNXT~ --筆ペン~ --A4用紙 --輪ゴム~ --セロテープ~ #br *ロボットの仕様 [#k011c21b] -車輪は二輪にして安定性を重視した。 #ref(2019a/Member/yuka/Mission1/本体,10%,本体)~ -ペンと車軸の距離ができるだけ近くなるようにした。 #ref(2019a/Member/yuka/Mission1/アーム,10%,アーム)~ #ref(2019a/Member/yuka/Mission1/前輪,10%,前輪) #br *書き方 [#h861022e] より描きやすくするため、ロボットが円を綺麗に書けることから田、区の一部を円で書きあらわすことにした。~ #ref(2019a/Member/yuka/Mission1/書き順,10%,書き順) *全体のプログラミング [#rb4fff9b] #define sen_right(t) OnRev(OUT_C,40);Wait(t);Off(OUT_C); #define sen_left(t) OnFwd(OUT_B,40);Wait(t);Off(OUT_B); #define up OnRev(OUT_A,40);Wait(500);Off(OUT_A); #define down OnFwd(OUT_A,40);Wait(500);Off(OUT_A); #define go(t) OnFwd(OUT_BC,40);Wait(t);Off(OUT_BC); #define back(t) OnRev(OUT_BC,40);Wait(t);Off(OUT_BC); task main() { go(450); //「大」1画目 up; sen_left(800); back(700); down; //「大」2画目 go(800); up; back(500); down; //「大」3画目 sen_left(700) go(100) sen_left(700) go(100) up; sen_left(800); go(200); down; OnFwd(OUT_B,60); //「田」1画目 Wait(4900); Off(OUT_B); up; OnRev(OUT_C,40); Wait(300); OnFwd(OUT_B,40); Wait(300); Off(OUT_BC); down; //「田」2画目 OnFwd(OUT_BC,40); Wait(500); Off(OUT_BC); up; OnRev(OUT_BC,40); Wait(800); Off(OUT_BC); OnFwd(OUT_C,50); Wait(1500); Off(OUT_C); OnFwd(OUT_BC,40); Wait(100); Off(OUT_BC); OnRev(OUT_BC,40); Wait(1400); Off(OUT_BC); down; //「田」3画目 OnRev(OUT_BC,40); Wait(100); Off(OUT_BC); up; OnRev(OUT_BC,40); Wait(800); Off(OUT_BC); OnFwd(OUT_C,50); Wait(1500); Off(OUT_C); OnFwd(OUT_BC,40); Wait(100); Off(OUT_BC); OnRev(OUT_BC,40); Wait(1400); Off(OUT_BC); down; OnRev(OUT_BC,40); Wait(100); Off(OUT_BC); up; sen_left(700); go(500); sen_left(2900); down; //「区」1画目 sen_left(5500); up; sen_right(500); go(300); down; //「区」2画目 back(200); up; sen_left(2400); back(500); down //「区」3画目 go(100) } #br [defineで定義した動きの意味] -#define sen_right(t) OnRev(OUT_C,40);Wait(t);Off(OUT_C);//大の3画目、区の3.4画目 -#define sen_left(t) OnFwd(OUT_B,40);Wait(t);Off(OUT_B);//大の2画目、区の3.4画目 -#define up OnRev(OUT_A,40);Wait(500);Off(OUT_A);//ペンを上げる -#define down OnFwd(OUT_A,40);Wait(500);Off(OUT_A);//ペンを下げる -#define go(t) OnFwd(OUT_BC,40);Wait(t);Off(OUT_BC);//次の文字への移動 -#define back(t) OnRev(OUT_BC,40);Wait(t);Off(OUT_BC);//次の文字への移動 *生じた問題点と改善 [#c8ba3155] -ロボットの構造上、後輪に重心が傾いたため、後輪がスムーズに動かず、文字が毎回均一に書けなくなった。 改善を試み、多少重心を中心に持ってくることができたが、やはり理想的な動きはしなかった。~ #ref(2019a/Member/yuka/Mission1/後輪,10%,後輪) -プログラミングを終えて、いざロボットに送信して、文字を書かせると、車軸とペンの位置が離れていたため、想像していた文字とは大きくかけはなれていた。そこで、ペンの向きを斜めにし、ペン先が車軸とすれすれになるまで近づけた。すると、大田区という文字が読めるほどになった。 *結果 [#qbb77513] #ref(2019a/Member/yuka/Mission1/結果,10%,結果)~ 区がうまくいかなかった。 *反省点と感想 [#nba3b32d] -書き順を数学的に考えるべきだった。~ -プログラミングをする人とロボットを作る人で別れていたため、2つを合わせたときにうまくいかなかったので、次回はもっとペアの人とお互いの状況を把握すべきだったなと思った。 -x軸y軸などをもうけずにプログラミング、書き順を考えたため、ズレが生じやすく、また、文字も絵のようになった。~ -書くときも後輪の気まぐれで文字の形がかなり変わってしまうこともあり、目標でもある”人間が触らずに確実に文字をかく”という課題が山積みのまま終わってしまったことはとても残念だった。~ -