- 追加された行はこの色です。
- 削除された行はこの色です。
[[2008a/MemberOnly/進行状況A]]
*目次 [#p7316d32]
#contents
*課題 [#v8c3ecf3]
レゴマインドストームを使って、人!?の顔を書く!!
*ロボット [#j463e2f9]
**図 [#b1c6043d]
**写真 [#n6c2ec10]
*プログラム [#f7585ae3]
#ref(2008a/A8/課題1右/114.jpg)
斜め前から(タッチセンサーは関係ないものである)
#ref(2008a/A8/課題1右/112.jpg)
真横から。非常にコンパクトである。
#ref(2008a/A8/課題1右/115.jpg)
シンプルに、かつ丈夫で小回りが利くコンパクトな仕上がりとなった。
#ref(2008a/A8/課題1右/113.jpg)
アームは、間にペンを差し込めば、完全にホールドできる。
*プログラム1 作成:平井[#f7585ae3]
/* This program makes robot draw face*/
#define Go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define Go_back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define Turn_right(t) OnFrd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define Turn_left(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C);
#define U_turn OnFwd(OUT_A);OnRev(OUT_C);Wait(200);Off(OUT_A+OUT_C);
#define Pen_up OnRev(OUT_B);Wait(15);Off(OUT_B);
#define Pen_down OnFwd(OUT_B);Wait(15);Off(OUT_B);
#define Stop_Time 20
#define Go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //直進
#define Go_back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //後退
#define Turn_right(t) OnFrd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); //右に90度曲がる
#define Turn_left(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); //左に90度曲がる
#define U_turn OnFwd(OUT_A);OnRev(OUT_C);Wait(200);Off(OUT_A+OUT_C); //180度回転
#define Pen_up OnRev(OUT_B);Wait(15);Off(OUT_B); //ペンを上げる
#define Pen_down OnFwd(OUT_B);Wait(15);Off(OUT_B); //ペンを下げる
#define Stop_Time 20 //止まる時間
task main()
{
SetPower(OUT_A+OUT_C,4);
OnFwd(OUT_A); /*Outline of face*/
OnFwd(OUT_A); //顔の輪郭
OnRev(OUT_C);
Wait(400);
Off(OUT_A+OUT_C);
Wait(Stop_Time);
repeat(2) /*Eyebrow*/
repeat(2) //眉毛
{
Pen_up;
Go_back(30);
Pen_down;
Go_back(30)
}
Pen_up; /*Eye*/
Pen_up; //目
Go_straight(55);
Turn_left;
Pen_down;/*Right eye*/
Pen_down;//右目
Go_straight(20);
Pen_up;
Go_back(20);
Turn_right;
Go_straight(30);
Turn_left;
Pen_down; /*Left eye*/
Pen_down; //左目
Go_straight(20);
Pen_up;
Go_straight(20);
Turn_left;
Go_straight(35); /*Mouth*/
Go_straight(35); //口
Off(OUT_A+OUT_B+OUT_C);
}
*プログラムの解説 [#x58ebcbf]
*プログラム1の解説 [#x58ebcbf]
1;まず輪郭を書かせる。(円)
2;そこから眉毛を書く。
3;眉毛の途中まで戻って、左に90度回転し、目をかく。
4;最後に口の位置まで動き、口をかく。
*プログラム2作成:福本 [#l3a3e668]
/*This program makes robot draw face*/
#define PEN_DOWN OnFwd(OUT_B);Wait(15);Off(OUT_B); //ペンを上げる
#define PEN_UP OnRev(OUT_B);Wait(15);Off(OUT_B); //ペンを下げる
task main()
{
SetPower(OUT_A+OUT_C,4);
PEN_DOWN;
OnFwd(OUT_A+OUT_C); //顔の輪郭
Wait(80);
OnRev(OUT_C); //顎
Wait(20);
OnFwd(OUT_C);
Wait(30);
OnRev(OUT_C);
Wait(94);
OnFwd(OUT_C);
Wait(30);
OnRev(OUT_C);
Wait(20); //ここまで顎
OnFwd(OUT_C);
Wait(80);
OnRev(OUT_C);
Wait(105);
repeat(5) //ジグザグの髪の毛
{
OnFwd(OUT_A);
Wait(5);
Off(OUT_A);
OnFwd(OUT_A+OUT_C);
Wait(2);
Off(OUT_A+OUT_C);
OnFwd(OUT_C);
Wait(5);
Off(OUT_C);
OnFwd(OUT_A+OUT_C);
Wait(2);
Off(OUT_A+OUT_C);
}
PEN_UP;
OnRev(OUT_C); //目の位置まで移動
Wait(112);
OnFwd(OUT_C);
Wait(15);
OnRev(OUT_C);
Wait(105);
repeat(2); //目
{
OnFwd(OUT_A+OUT_C);
Wait(20);
PEN_DOWN; //左目→右目
OnFwd(OUT_A+OUT_C);
Wait(30);
PEN_UP;
}
OnRev(OUT_A+OUT_C); //右目と左目の中央まで戻る。
Wait(40);
OnFwd(OUT_C); //右に90度回転
Wait(105);
OnFwd(OUT_A+OUT_C);
Wait(8);
PEN_DOWN; //鼻
OnFwd(OUT_A+OUT_C);
Wait(20);
PEN_UP;
OnFwd(OUT_A+OUT_C); //口の位置まで移動
Wait(8);
OnRev(OUT_A);
Wait(108);
OnRev(OUT_A+OUT_C);
Wait(20);
PEN_DOWN; //口
OnFwd(OUT_A+OUT_C);
Wait(40);
Off(OUT_A+OUT_C);
}
*プログラム2の解説 [#n9d2636b]
1.まず、顎のとがった輪郭を描く。
2.次に髪の毛をジグザグに書く。
3.目の位置まで移動して、目を書く。
4.目と目の間まで戻り、90度回転して鼻を描く。
5.鼻を描いてから口の位置まで移動し、90度回転して、一気に口を書く(直線)
*工夫した点 [#ue3d52f4]
ただいまハードウェア作成中!!
ペンを完全に固定できるようにアームを工夫した。それから、ロボットのほうはシンプルだが頑丈に作った。
*苦労した点 [#ae80edd9]
プログラムを作ったロボットにあわせるのが大変。
*失敗した点 [#oaf7aceb]
タイヤが前輪後輪とも大きく、摩擦によって、回転がうまくいかない。
ただいま改良中。
よって前後の幅を短くしタイヤも小さくし、小回りができるようにした。
さらに四輪駆動にすることによって、滝機動性を確保できた。
*感想 [#l438e9fe]
関数を理解することができない。この先がかなり不安だ。
ロボティクスの授業はかなり奥が深いが、それなりに時間が確保できないと、なかなかうまくできない。
特に、教職と第二外国語をとってしまった僕にとっては、厳しいものがある。
*その他 [#w558af0f]
プログラムに説明を書いてください。他のグループを参考にしてみてください。