- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*課題1* [#i7298d6a]
出身地の都道府県や市、町などの中から2文字を選び、それをA4のの用紙に書くロボットを製作せよ。
*選んだ文字* [#vd1baa0f]
滋賀県にある「高田」という文字を選びました。
*ロボットの説明* [#i0c4c560]
**アーム** [#c87f6dc2]
右や左に曲がったり、旋回しても筆ペンの用紙上での位置がブレないように前輪のある直線状の中点に設置した。また、アームのコンパクト化のために歯車を用いて、筆ペンを地面と垂直に固定したまま上下に動かせるようにした。
&ref(IMG_1261.jpg);
※筆部分は見やすいように蛍光ペン使用している。
**車輪部分** [#j1bb9317]
シンプルな三輪構造で前輪が二輪、後輪が一輪となっている。前輪の二輪が駆動する。
&ref(IMG_1250.jpg);
*プログラミングにあたっての準備* [#s1616dcd]
**アームを上下させるプログラム** [#b424451f]
#define arm_down OnFwd(OUT_A,50);Wait(150);Off(OUT_A);
#define arm_up OnRev(OUT_A,50);Wait(150);Off(OUT_A);
**直進させるプログラム** [#xc911cb7]
#define go_straight OnFwd(OUT_B,40);OnFwd(OUT_C,43);
左右の駆動力のバランスが異なるため調整した。
**左右それぞれに90度旋回するプログラム** [#o31edb19]
#define turn_right OnFwd(OUT_C,25);OnRev(OUT_B,25);Wait(1425);Off(OUT_BC);
#define turn_left OnFwd(OUT_B,25);OnRev(OUT_C,25);Wait(1425);Off(OUT_BC);
**左右それぞれに曲がるプログラム** [#ca401bd1]
#define turn_R OnFwd(OUT_C,25);OnRev(OUT_B,25);
#define turn_L OnRev(OUT_C,25);OnFwd(OUT_B,25);
**車輪を制止させるプログラム** [#wdfb00e5]
#define off Off(OUT_BC);
*プログラム本編* [#v6748922]
**「高」を書くためのプログラム** [#z1f9ebf0]
arm_down
go_straight
Wait(150);
off
arm_up
turn_right
go_straight
Wait(350);
off
u_turn
arm_down
go_straight
Wait(700);
off
arm_up
turn_R
Wait(2700);
off
go_straight
Wait(650);
off
turn_L
Wait(1275);
off
arm_down
go_straight
Wait(150);
off
turn_left
go_straight
Wait(500);
off
turn_left
go_straight
Wait(150);
off
turn_left
go_straight
Wait(500);
off
turn_L
Wait(950);
off
go_straight
Wait(230);
off
turn_L
Wait(425);
off
go_straight
Wait(500);
off
u_turn
arm_down
go_straight
Wait(500);
off
turn_right
go_straight
Wait(765);
off
turn_right
go_straight
Wait(500);
off
turn_right
turn_R
Wait(425);
off
go_straight
Wait(150);
off
arm_up
go_straight
Wait(378);
off
turn_L
Wait(1850);
off
arm_down
go_straight
Wait(150);
off
turn_left
go_straight
Wait(150);
off
turn_left
go_straight
Wait(150);
off
turn_left
go_straight
Wait(150);
off
arm_down //筆ペンを下ろす
go_straight //前に進む
Wait(150); //0.15秒間状態を保つ
off //車輪を止める
arm_up //筆ペンを上げる
turn_right //右に90度曲がる
go_straight //前に進む
Wait(350); //0.35秒間状態を保つ
off //車輪を止める
u_turn //180度回る
arm_down //筆ペンを下ろす
go_straight //前に進む
Wait(700); //0.70秒間状態を保つ
off //車輪を止める
arm_up //筆ペンを上げる
turn_R //右に曲がる
Wait(2700); //2.70秒間状態を保つ
off //車輪を止める
go_straight //前に進む
Wait(650); //0.65秒間状態を保つ
off //車輪を止める
turn_L //左に曲がる
Wait(1275); //1.275秒間状態を保つ
off //車輪を止める
arm_down //筆ペンを下ろす
go_straight //前に進む
Wait(150); //0.15秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
go_straight //前に進む
Wait(500); //0.50秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
go_straight //前に進む
Wait(150); //0.15秒間状態を保つ
off //車輪を止める
arm_up //筆ペンを上げる
turn_left //左に90度曲がる
go_straight //前に進む
Wait(500); //0.50秒間状態を保つ
off //車輪を止める
turn_L //左に曲がる
Wait(950); //0.95秒間状態を保つ
off //車輪を止める
go_straight //前に進む
Wait(230); //0.23秒間状態を保つ
off //車輪を止める
turn_L //左に曲がる
Wait(425); //0.425秒間状態を保つ
off //車輪を止める
go_straight //前に進む
Wait(500); //0.50秒間状態を保つ
off //車輪を止める
u_turn //180度回る
arm_down //筆ペンを下ろす
go_straight //前に進む
Wait(500); //0.50秒間状態を保つ
off //車輪を止める
turn_right //右に90度曲がる
go_straight //前に進む
Wait(765); //0.765秒間状態を保つ
off //車輪を止める
turn_right //右に90度曲がる
go_straight //前に進む
Wait(500); //0.50秒間状態を保つ
off //車輪を止める
turn_right //右に90度曲がる
turn_R //右に曲がる
Wait(425); //0.425秒間状態を保つ
off //車輪を止める
go_straight //前に進む
Wait(150); //0.15秒間状態を保つ
off //車輪を止める
arm_up //筆ペンを上げる
go_straight //前に進む
Wait(378); //0.378秒間状態を保つ
off //車輪を止める
turn_L //左に曲がる
Wait(1850); //1,85秒間状態を保つ
off //車輪を止める
arm_down //筆ペンを下ろす
go_straight //前に進む
Wait(150); //0.15秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
go_straight //前に進む
Wait(150); //0.15秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
go_straight //前に進む
Wait(150); //0.15秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
go_straight //前に進む
Wait(150); //0.15秒間状態を保つ
off //車輪を止める
arm_up //筆ペンを上げる
**「田」を書くためのプログラム** [#v9ddb1ce]
arm_down
go_straight
Wait(460);
off
turn_left
go_straight
Wait(460);
off
turn_left
go_straight
Wait(460);
off
turn_left
go_straight
Wait(460);
off
arm_up
turn_left
go_straight
Wait(230);
off
turn_left
arm_down
go_straight
Wait(430);
off
arm_up
turn_left
go_straight
Wait(230);
turn_left
go_straight
Wait(230);
off
turn_left
arm_down
go_straight
Wait(430);
off
arm_up
arm_down //筆ペンを下ろす
go_straight //前に進む
Wait(460); //0.46秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
go_straight //前に進む
Wait(460); //0.46秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
go_straight //前に進む
Wait(460); //0.46秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
go_straight //前に進む
Wait(460); //0.46秒間状態を保つ
off //車輪を止める
arm_up //筆ペンを上げる
turn_left //左に90度曲がる
go_straight //前に進む
Wait(230); //0.23秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
arm_down //筆ペンを下ろす
go_straight //前に進む
Wait(460); //0.46秒間状態を保つ
off //車輪を止める
arm_up //筆ペンを上げる
turn_left //左に90度曲がる
go_straight //前に進む
Wait(230); //0.23秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
go_straight //前に進む
Wait(230); //0.23秒間状態を保つ
off //車輪を止める
turn_left //左に90度曲がる
arm_down //筆ペンを下ろす
go_straight //前に進む
Wait(430); //0.43秒間状態を保つ
off //車輪を止める
arm_up //筆ペンを上げる
&ref(takada.pdf);
青線は筆先が接地しており、赤線は接地していない。
*完成した文字* [#i3fe4a9f]
&ref(IMG_1257ex2.jpg);
少し傾いてしまったが、線はきれいに引けた。
* 課題1を振り返って* [#d7a6f340]
**苦労した点** [#b617525e]
ロボット第一弾は重心が後方に偏ってしまい、旋回時に前輪が浮いてしまうという問題が起こったので、解決するために重心を偏らせず、うまく機能するようなロボットを製作するのが大変だった。また、ロボットの燃費が非常に悪く、一通り動作させる度に出力が変わってしまい、プログラミングと動作がずれてしまうところを調整することも大変だった。
**良かった点** [#w17d50c9]
ロボット製作において、アームの接地位置を前輪の中点においたことや、アームのリーチを無くし、歯車を使うことでロボット全体のコンパクト化が可能になったこと、また、プログラムにおいて、できるだけ#defineを使い一文一文を短く出来たことがよかった。
**反省点** [#mce76d23]
ロボット第一弾が完成し、それに合わせたプログラミングが大方できたところでロボットに問題が生じ、最初から作り直すことがあったので、逐一確認して、最小限の手直しで済むようにしたい。また、プログラミングの行数が多くなってしまったので、様々な関数を駆使して短く抑えられるようにしたい。