[[2017a/Member]]
#contents
*課題の内容 [#gd6aa060]
[[課題1>2017a/Mission1]]を参照。
*ロボットの説明 [#h9fda73f]
前後と左右に動くタイプのロボット(直交タイプと呼ぶことにする)を作ることにした。
#ref(2017a/Member/shiori/Mission1/Image_b4b22e1ロボット1小.jpg,100%,ロボットの全体像)
ロボットの全体の写真である。
・前後にタイヤで動く
・ペンを固定した棒を左右に動かす
・ペンの上げ下げをする
これら3つの働きをそれぞれモーターに割り振りロボットを作ることにした。
また、改良などをしやすいように
(1)台車の部分
(2)ペンを固定した棒(腕)
(3)棒を左右に動かす部分
(4)ペンの上げ下げをする部分
の4つを作り、うまく合体できるよう車体部分を変えていきながら作った。
**(1)車体の部分 [#k21eb8f8]
#ref(2017a/Member/shiori/Mission1/S_6129336265128車体小.jpg,100%,車体の部分)
上の写真のように4輪にした。1つのモーターで前輪を動かす。
**(2)ペンを固定した棒(腕) [#j3cfcb5d]
#ref(2017a/Member/shiori/Mission1/S_612933596030(1)小.jpg,100%,ギザギザにした棒)
上の写真のようにギザギザのパーツを並べて棒にし、歯車で動かせるようにしようと思ったがギザギザのパーツが少なかったので、棒を動かす歯車を2つにし、棒にはギザギザでないパーツも使えるようにした。少なくとも片方の歯車がギザギザの部分と接していれば棒(腕)が動くからである。
**(3)棒を左右に動かす部分 [#r0361e68]
上記(2)のとおり、歯車を2つにした。また、このことで棒(腕)が安定になった。
**(4)ペンの上げ下げをする部分 [#j4d3d07d]
#ref(2017a/Member/shiori/Mission1/InkedImage_b4b22e1ロボットてこ_LI (2)小.jpg,100%,ペンの上げ下げ)
ペンの上下を担うモーターを固定すると任意の場所にあるペンの上げ下げをしなくてはならないため、1番難しかった。上の写真のようにてこの原理を用い、力点となる部分を長く伸ばし(延長部分での段差をなくすためにチューブを付けた)、モーターで黒い棒を上げ下げし、それによって青くて長い方の棒を上げ下げし、力点を動かすようにした。
*選んだ漢字 [#v74f97b0]
直交タイプにしたので、縦棒と横棒が多いものにしたいと思った。大学生活を通して何を「信」用するか自分で判断できる自立した人になりたいとも思ったので信州の「信」にした。
*プログラム [#k32780cb]
ロボットの製作を頑張った分、プログラミングはとても簡単であった。
**漢字の書き順 [#r8c15380]
#ref(2017a/Member/shiori/Mission1/S_6129605771740下書き小.jpg,90%,書き順)
上の写真の矢印の順で書くことにした。実線は書く部分で、破線は筆を上げて動かすところである。
**プログラムの説明 [#o9d3a366]
#define Fore(t) OnRev(OUT_B);Wait(t);Off(OUT_B);Wait(50);
#define Back(t) OnFwd(OUT_B);Wait(t);Off(OUT_B);Wait(50);
#define Left(t) OnFwd(OUT_A);Wait(t);Off(OUT_A);Wait(50);
#define Right(t) OnRev(OUT_A);Wait(t);Off(OUT_A);Wait(50);
#define Up OnFwd(OUT_C);Wait(30);Off(OUT_C);Wait(50);
#define Down OnRev(OUT_C);Wait(30);Off(OUT_C);Wait(50);
はじめの6行でマクロを用いて6つの動作の定義をした。
Left・Rightはタイヤを動かし(紙の左右方向)、Fore・Backはギザギザの腕を動かす(前後、つまり紙の上下方向)指示である。Up・Downはペンの上げ下げを指示する。
また、モーターを動かす時間も簡単に指示できるようにした。
例えばペンを右方向に0.1秒動かしたいとき
Right(10);
とすれば簡単に指示できる。
ちなみにロボットの動きがとても速かったので、すべての動作のあとに0.5秒待機するようにして全体としてゆっくりになるようにした。
モーターを動かす時間は、0.25秒動かすと前後左右ともに約2.5�僂任△襪海箸鮖温佑砲靴瞳茲瓩拭�
task main ()
{
Down;
Fore(45);
Up;
OnFwd(OUT_AB);Wait(10);Off(OUT_AB);
Down;
OnRev(OUT_AB);Wait(20);Off(OUT_AB);
Up;
Down;
Fore(45);
Up;
OnFwd(OUT_AB);Wait(10);Off(OUT_AB);
Down;
OnRev(OUT_AB);Wait(20);Off(OUT_AB);
Up;
これらの指令でにんべんを書かせた。
車体とギザギザの腕を同時に動かすことで斜めの動きを作った。
Right(15);
Down;
Back(5)
Up;
Left(15)
Back(5)
Down;
Right(30)
Up;
Back(10)
Left(5)
Down;
Left(20)
Up;
Back(10)
Down;
Right(20)
Up;
Back(10)
Right(15);
Down;
Back(5)
Up;
Left(15)
Back(5)
Down;
Right(30)
Up;
Back(10)
Left(5)
Down;
Left(20)
Up;
Back(10)
Down;
Right(20)
Up;
Back(10)
これらの指令で「言」の口を除いた部分を書かせた。
Down;
Left(20)
Back(15)
Right(20)
Fore(15)
Up;
Down;
Left(20)
Back(15)
Right(20)
Fore(15)
Up;
}
これらの指令で「言」の口の部分を書かせた。
*実際に書いた文字 [#n84e744f]
#ref(2017a/Member/shiori/Mission1/S_6129904999920実際小.jpg,90%,実際)
上の写真のように書けた。思っていたよりは上手く書けたと思う。しかし、台車左右方向にを動かすモーターの調子が悪かったこともあり、横方向のバランスは悪くなってしまった。にんべんの斜め線は、上に凸になってしまったりしてかろうじて分かるくらいである。もう少しペンを固定できる構造にすれば斜め線もきれいに書けたと思う。縦、横方向の直線はきれいに書けて良かったと思う。
*感想 [#s5e68559]
レゴで何かを作ったことはほとんどなくレゴを使いこなせるか、そもそも自分にロボットを作る創造力があるのか不安だった。しかし、実際に作ってみるとアイデアが思っていたより早く出てくるし、だんだんブロックなどの使い方や補強の仕方が分かってきて、自分でも驚くぐらいの仕組みのロボットができた。しかし、いまだに使い方の分からないパーツなどもあるのですべてのパーツを使いこなせるようになったらもっといいロボットができるだろうと思った。
一方プログラミングは上記の通り簡単であった。とても短くわかりやすく書けたと思う。
総じて見ると、あまりレゴ経験のない自分と相棒にしてはいいロボット・プログラミングができたと思う。