- 追加された行はこの色です。
- 削除された行はこの色です。
目次
#contents
*はじめに [#e2420186]
今回の課題はA4の紙の上で自分の似顔絵を描くことです。
3人班で1つのRIS本体を用いる。
1人1つのプログラムを作成する。
*ロボットの紹介 [#lc1cff07]
**ロボットの説明 [#fd2bca38]
私達の班はペンを前にもって来、モーターを回転させそれをゴムで噛ませて、タイヤを回転させる方法にしました。
タイヤを2つ用いてペンを挟む。
片方のタイヤを回すことでペンを上げ下げする。
工夫したところは、噛ませるところを歯車ではなく、ゴムにしたところです。~
ゴムにする利点として、ペンを下ろす時間と上げる時間を変えても影響がほとんどありません。~
つまり、RISを動かしていくうちにペン先が紙につかなくなるという問題点を克服出来ました。
もしペン先が地面についてモーターが回っていても、モーターとゴムとの間で滑るように設計しました。
・注意点
タイヤの位置をなるべく紙と近づけることによって、ブレを少なくした。~
・タイヤを回す方法
モーターとタイヤをゴムで結び、からませて回転させた。
モーターとタイヤをゴムで結び、からませて回転させた。~
&ref(2016a/Member/kosi/Mission1/1465460436537[1].jpg,30%,robotto);
*似顔絵を描く [#ha915ec7]
似顔絵を描くうえで必要な動作の説明をします。
**直線を描く [#b732d5e1]
ペンを下す
↓
→
RISを前進させる
↓
→
ペンを上げる
**直角に移動する [#f0a17769]
ペンを上げて前進
↓
→
90度回転する
↓
→
ペンが元の位置に戻るまでバックする
↓
→
ペンを下す
基本的にこれら二つの動作と45度の場合を定義し似顔絵はその定義だけを用いてシンプルなものとした。
*プログラム [#b51fbed1]
**定義 [#m7103da1]
#define down OnFwd(OUT_B); Wait(25); Off(OUT_B);
#define up OnRev(OUT_B); Wait(10); Off(OUT_B);
#define hidarihe(t) OnFwd(OUT_C); OnRev(OUT_A); Wait(t); Off(OUT_AC);
#define migihe(t) OnFwd(OUT_A); OnRev(OUT_C); Wait(t); Off(OUT_AC);
#define go_forward(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
#define go_rev(t) OnRev(OUT_AC); Wait(t); Off(OUT_AC);
#define turn_left up;go_forward(55); hidarihe(90); go_rev(65);down;
#define turn_right up;go_forward(60); migihe(108); go_rev(60);down;
#define left_half up;go_forward(58); hidarihe(47); go_rev(60);down;
#define right_half up;go_forward(55); migihe(50); go_rev(55);down;
似顔絵は直線と直角と45度に曲がるを定義した。(右折、左折とも)~
定義したものだけで似顔絵を描くこととした。~
**プログラム [#edefa94e]
#define down OnFwd(OUT_B); Wait(25); Off(OUT_B);
#define up OnRev(OUT_B); Wait(10); Off(OUT_B);
#define hidarihe(t) OnFwd(OUT_C); OnRev(OUT_A); Wait(t); Off(OUT_AC);
#define migihe(t) OnFwd(OUT_A); OnRev(OUT_C); Wait(t); Off(OUT_AC);
#define go_forward(t) OnFwd(OUT_AC); Wait(t); Off(OUT_AC);
#define go_rev(t) OnRev(OUT_AC); Wait(t); Off(OUT_AC);
#define turn_left up;go_forward(55); hidarihe(90); go_rev(65);down;
#define turn_right up;go_forward(60); migihe(108); go_rev(60);down;
#define left_half up;go_forward(58); hidarihe(47); go_rev(60);down;
#define right_half up;go_forward(55); migihe(50); go_rev(55);down;
task main ()
{
down;
go_forward(68);
left_half;
go_forward(38);
left_half;
go_forward(45);
turn_left;
up;
go_forward(8);
down;
turn_right;
go_forward(23);
left_half;
go_forward(45);
left_half;
go_forward(38);
left_half;
go_forward(45);
left_half;
go_forward(23);
turn_right;
up;
go_forward(8);
down;
turn_left;
go_forward(45);
left_half;
go_forward(38);
left_half;
turn_left;
up;
go_forward(8);
down;
repeat(2) {
go_forward(30);
turn_right;
up;
go_forward(10);
turn_right;
go_forward(30);
turn_left;
up;
go_forward(10);
turn_left;
}
go_forward(30);
up;
go_forward(15);
down;
turn_left;
go_forward(23);
up;
go_forward(15);
down;
go_forward(23);
turn_right;
up;
go_forward(40);
down;
turn_right;
up;
go_forward(23);
down;
repeat(2) {
go_forward(23);
turn_left;
go_forward(12);
turn_left;
}
}
これが実際にかいた似顔絵です。
*感想 [#z47c6048]
**ロボット制作について [#u3910db8]
&ref(2016a/Member/kosi/Mission1/P_20160527_175101.jpg,30%,robotto2);
かなり右にずれてしまいました。
*感想 [#o49c71be]
**ロボット製作について [#l1b7cdde]
・はじめはタイヤが回らなかったがギアを大きなものにすることで、ゴムとの設置面積つまり摩擦が大きくなり、たいやを動かすに至った。~
・モーターとの結ぶ方法をギアではなくゴムにしたことは個人的には、タイヤを下す時の時間が上げる時の時間より長くでき、これによりペンを上下するたびにしっかりと紙にペン先がつくようにできたことはいい点であると思う。~
**プログラムについて [#df2fae05]
・定義したものだけでRISを動かすようにプログラムできたことはよかったが、定義では角度の秒数も定義でやってしまったため、後半にタイヤが少しずつずれる等で角度が合わなくなってしまったことが反省点です。~
・RISが直線に進まず、3秒進むだけで車体が傾いてしまうアクシデントがあり、その調整にとても苦労した。