[[2019a/Member]] 目次 #contents *課題について [#n7f5a706] **課題の内容 [#gd49c19f] これまで住んだことのある都道府県名、市町村名、地区名などの中から2文字以上、かつ合計10画以上のものを選び、それをA4の紙を書くロボットを製作せよ。~ 詳しくは [[2019a/Mission1]]を参照。 **選んだ漢字 [#v44b0b34] 私の出身地である「大田区」の三文字にした。~ 理由としてはそれぞれの文字が書きやすいからだ。 *ロボットについて [#f3aeee44] **ロボットの全体概要 [#p5dc64c2] #ref(2019a/Member/ohta/Mission1/ロボ右斜め前.jpg,10%,ロボ全体像) 今回作成したロボットは車体自体が移動し~ アーム機構によってペンを上げ下げし文字を書く手法をとっている。~ 初めは三方向に動く機体を作ろうと試作したがうまくいかず~ 急遽この様式に変更した。~ **車体を動かす機構 [#jf70b9b6] #ref(2019a/Member/ohta/Mission1/前輪駆動.jpg,10%,機動) 二つのモーターを使い前後左右に動く。~ 例えば右に旋回したいときは右のモーターを止め左のモーターを回すといった形だ。~ この機動を使いロボットを動かす。 **ペンを上げるアームの機構 [#d15ea196] #ref(2019a/Member/ohta/Mission1/アーム.jpg,10%,アーム) 一つのモータを使いアームの上げ下げを行う。~ モーターの両端にはギアがそれぞれついている。~ ギアと繋がった二本の腕の先端に一本の棒が刺さっている。~ そこにペンをつける形になる。~ このようにしてモーターの機動とペンの上げ下げがリンクする。~ ペンをつける先の部分が左に寄っているのは~ 文字を書く上で円を描くとき中央に寄せるとA4に収まらないほどの~ 大きさになってしまうためである。なぜ漢字を書くのに円が必要なのかは後述する。 **発生した問題点 [#yf761f46] #ref(2019a/Member/ohta/Mission1/後輪.jpg,10%,後輪) このロボットには一つ問題点があがった。~ それが後輪だ。全体図からわかるように、この車体は重心が後輪より少し前あたりにかかる。~ そのため後輪周辺に重みが加わりうまく回らなくなってしまった。~ その影響からか車体が回転するとき問題部分が邪魔をしてスムーズに動けなかったり~ 回転後の前後移動に支障をきたしてしまった。~ よってこのロボットは急な回転を連続して使用することができない。~ (改善しようと試みたが一から直す必要があり時間の都合上このまま続行することになった) *プログラムについて [#q0854a8e] **文字を書くための作戦 [#b3c9bfac] 以上の問題点を克服するために、細かな回転を一度に連続して使わないよう 文字を書く必要が出てきた。 #ref(2019a/Member/ohta/Mission1/yotei.jpg,10%,予定) そのため□を〇にする大胆な手法をとることにした。~ すなわち「田」と「区」の囲いの部分は車体を旋回させ円を描くことで問題点の解決を試みた。~ それゆえに前述したようにペンの設置場所が片方に寄っていたのだ。~ また回転をするとき、先の問題点から片方の車輪を前転させもう片方を後転させる手法をとると、~ 車体がまったくもってスムーズに動かず次の動作に支障をきたすので~ 片方を前転しもう片方は停止させる、いわゆる旋回方式で全て統一することにした。 **プログラムした定義 [#x40589e5] 以下が今回定義したプログラミングだ~ -旋回~ #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); //後退 旋回や前後移動の定義に(t)の関数を加えることで(t)に任意の値を入れることで~ Waitすなわち稼働時間を状況において変えれる仕組みになっている~ 以下文字の書き方また書いている画数は[[#b3c9bfac]]に添付した写真を参照。 **「大」のプログラム [#o772f0e2] go(450); //一画目�� up; sen_left(800); //移動 back(700); down; //ニ画目�� go(800); up; back(500); //移動 down; //三画目�� sen_left(700) go(100) sen_left(700) go(100) up; **「田」のプログラム [#xdac41bb] OnFwd(OUT_B,60); //一画目�ぁ扮漾� Wait(4900); Off(OUT_B); up; OnRev(OUT_C,40); //移動 Wait(300); OnFwd(OUT_B,40); Wait(300); Off(OUT_BC); down; //ニ画目�� 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; //三画目�� OnRev(OUT_BC,40); Wait(100); Off(OUT_BC); up; (*この「田」はもう一人のペアが担当しているため今回の定義を使用していない) **「区」のプログラム [#k128e2f7] down; //一画目�� sen_left(5500); up; sen_left(500); //移動 go(300); down; //ニ画目�� back(200); up; sen_left(2400); //移動 back(500); down; //三画目�� go(100) *完成した文字 [#j2a05b09] 以下が今回書けた文字だ #ref(2019a/Member/ohta/Mission1/かけたやつ.jpg,10%,完成) 全体を通して文字がぐらついている~ 区の文字がかなり悪い~ また紙の摩擦によって、想定した軌道をいかず文字が重なってしまった *まとめ [#sd147b8e] **ロボットについて [#kd923810] 車体の性能が悪くプログラミングにも制限がかかり思うようにできなかった。特に"重心"を考慮していなかったことが一番の問題点であろう。一番重いモーターをもう少し車体の低い位置に持っていき均等に重みが加わる構造にすれば少しは改善できたと思われる。次回のロボット作成においてはその点を考慮したうえで挑みたい。~ また文字にぐらつきがあった。ペンの固定力が弱かったからであろう。今回は修正時間がなかったが次回からは想定と実際との誤差の修正をしっかり行っていきたい。 **プログラミングについて [#t8fc2576] プログラミング初心者のため授業で教わったものだけしか使えなかったなりにはよくできた。特に(t)を使うことでその時その時に稼働時間を変えれるようにしたのは良い点だと思う。ただしペアの人と制作した定義を共有していなかったため「田」のプログラムの見やすさに少し問題があった。うまくペアとの協力、意見交換を次回は努めたい。また、今後は様々な関数を使いさらにプログラミングの単純化を図りたい。 **全体を通して [#sa2b3c77] 今回は何度も何度も挫折の繰り返しで最終決定(大田区の文字)から締め切りまでわずか三日という短さの中でやってのけた。初めての制作で全くの初心者ペア同士にしては上出来だと評価したい。完成した文字はかなりだめだめではあるが、この失敗を糧にして次回の課題に挑もうと思う。