*目次 [#s1d4127c]
#contents
*課題1 お絵描きロボット〜相方の似顔絵を作成せよ〜 [#had7c8a2]
**0,メンバー [#b5748e6e]
~Ds
~恵
**1,ロボットの概要 [#oe602eb2]
今回はシンプルイズザベストをテーマに作成(笑)
~なるべく無駄のない形に。
***ロボット本体 [#t0073dc3]
組み立てガイドにあるローヴァーロボットのドライブベースにある後ろの青いパーツを外し、タイヤを付けた(シンプルな)構造です。
~なおタイヤにしたのは、タイヤの方が小回りが利くため。
#ref(2009a/A3/課題1左/ロボット全体図.jpg)
***アーム [#wd04d9d8]
青いパーツを外した部分にモーターを取り付け、モーターに直接黄色のアームを取り付けただけの物を使用。(分解もし易く、取り付け、取り外しも楽なのも利点)
#ref(2009a/A3/課題1左/説明用.jpg)
~ある程度高さを付け(低いとペンの取り付け及びペンの上げ下げが難しいため)、RCX2.0本体に固定。これによりモーター自体のブレを押さえ、壊れにい仕様にしました。
~また黄色のアームに突起物を取り付け、ここにゴムを引っ掛けて、ペンを固定。(これまた取り付け、取り外しが楽な仕様)
#ref(2009a/A3/課題1左/アーム部分.jpg)
~↑こんな感じ
**2,プログラムについて [#m6e5520d]
***Dsの作ったプログラム [#bffb0ac0]
眼鏡を描こうと思ったが、直角を描くことはかなりの難易度だとわかったため(ペンが後ろにあるため、回転した後ともとの位置に戻す必要があるため)、半月眼鏡風に変更(笑)
~↓はイメージ図
#ref(2009a/A3/課題1左/当初の予定.jpg)
~ちなみに初めての作品は一枚の紙に何度も繰り返し描いていたため原型をとどめておらず、掲載不可に(泣笑)
~なおプログラム作成の際に先輩方のものを参考にして作りました。
#define down SetPower(OUT_B,0);OnFwd(OUT_B);Wait(30);Off(OUT_B); //ペンを下げる
#define up SetPower(OUT_B,2);OnRev(OUT_B);Wait(30);Off(OUT_B); //ペンを上げる(上げるときは出力を少し強め、しっかりと上げるように設定)
#define outline SetPower(OUT_A,7);SetPower(OUT_C,7);OnFwd(OUT_C);Wait(760);Off(OUT_C); //輪郭となる円を描く(片方だけ動かすことで大きな円を描くよう設定)
#define go(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //前進
#define back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //後退
#define turn_r(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); //右折
#define turn_l(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); //左折
task main()
{
outline;up; //まずは輪郭
turn_l(60);go(25) //続いて眼鏡を作成
down;go(53);turn_r(25); //一気に眼鏡を描いていきます。
go(25);turn_l(25); // ↓
go(25);turn_r(25); // ↓
go(25);turn_l(25); // ↓
go(53); //眼鏡作成完了
up;back(170);turn_l(90);go(120); //続いて鼻へ
down;go(30);up; //鼻完成
back(50);turn_l(84);back(10);down;go(90); //ここで口を描き似顔絵作成終了!!
}
~ポイントになったのは鼻と口を描くときのbackで、これを入れないと鼻や口がとんでもないところに出来てしまった。(^^;)
~移動後のペンの位置を考え、微調整した。結果は下の似顔絵を見てください。
~また、最初に動作を指定していたので、プログラムもすっきりとした物にすることが出来た。
***恵のプログラム [#fbcdabed]
最初はかなり複雑なものを描こうとしたのだが、結局一番簡単な形におさまってしまったorz
なんか、Ds君に全然似てないし、申し訳ない(T.T)
~それでも少なくとも髪の毛はきっちり描くようにした。
#define GO OnFwd(OUT_A+OUT_C); //前進する
#define STOP Off(OUT_A+OUT_C); //止まる
#define UP OnFwd(OUT_B);Wait(40);Off(OUT_B); //ペンを上げる
#define DOWN OnRev(OUT_B);Wait(30);Off(OUT_B); //ペンを下げる
#define BACK OnRev(OUT_A+OUT_C); //後進する
#define CIRCLE OnFwd(OUT_C);OnRev(OUT_A); //反時計方向に回る
#define REVCIRCLE OnFwd(OUT_A);On(OUT_C); //時計方向に回る
task main()
{
SetPower(OUT_B,1);
SetPower(OUT_A,7);
SetPower(OUT_C,7);
OnFwd(OUT_C); //まず顔の輪郭
Wait(700);
STOP;
GO; //髪の毛
Wait(130);
STOP;
UP;
CIRCLE; //目を描くため一旦180度回る
Wait(171);
STOP;
GO;
Wait(150);
STOP;
DOWN; //ここから目を描く
GO;
Wait(30);
STOP;
UP;
GO;
Wait(30);
STOP;
DOWN;
GO;
Wait(30);
STOP;
UP; //目終わり
BACK; //鼻を描くため後進
Wait(120);
STOP;
REVCIRCLE; //回る
Wait(85);
STOP;
GO; //鼻の位置を調整
Wait(100);
STOP;
DOWN; //鼻を描く
GO;
Wait(30);
STOP;
UP; //鼻終わり
BACK; //口を描くための微調整
Wait(60);
STOP;
CIRCLE;
Wait(85);
STOP;
GO;
Wait(40);
STOP;
DOWN; //口を描く
GO;
Wait(40);
STOP;
UP; //全て終わりました
}
プログラムが少し長くなってしまったが、それなりにシンプルにすることが出来た。
**3,完成した似顔絵 [#k6be0aaf]
***Dsによる恵の似顔絵 [#qf3d0a1e]
#ref(2009a/A3/課題1左/恵の似顔絵.jpg)
~薄いですがご容赦を・・・(^^;)
~恵君簡略化して済まない・・・(;;)
~眼鏡はまぁまぁ思惑通りかな?
~微調整がうまくいって、鼻と口もそれなりにいい所にかけてヨカッタ(^^)
***恵によるDsの似顔絵 [#we5bb879]
#ref(2009a/A3/課題1左/Dsの似顔絵.jpg)
Ds君ごめん;;
~耳目口鼻がずれるのを防ぐため前進と後進を駆使したのでそんなに変な顔にはなっていない
~また、回転時間をうまく調節して、目と口が平行になるようにすることが出来たのもよかった。
**4,苦労した点及び反省点 [#wa88f801]
~直角を断念して半月眼鏡にしたものの、斜めになってしまい残念。しかも斜めになった為に、鼻を描くのに必要な時間を決めるのが大変だった。
~またペンの固定がしっかりしていなかった(というよりゴムの付け方によってずれることがままあった)のも問題点の一つだった。
~次回は直角に描けるようなプログラムを組めるようにしたい。
~(そのためにはアームの位置や、アームの上げ下げとバック等の組み合わせを考えてみるべきか。となるとロボットをシンプルにしすぎたのも問題だったかも) byDs
~なんか、意外と微調整が難しい...
というか自分達のロボットを創る前に先輩達が創ったロボットを参考にしようとしすぎてへんな先入観ができてしまい自分達だけのオリジナリティがなくなってしまったのは残念だ;; by恵
*コメントをどうぞ [#hb4d04df]
- ロボットもプログラムもシンプルでわかりやすいですし、図を使った説明もわかりやすい。ただ、シンプルゆえに工夫が見えづらいかもしれません。工夫した点は、プログラムの中に解説を入れてみてください。 -- [[こさか]] &new{2009-05-21 (木) 22:17:34};
- 自分たちの班の工夫した点や考察を入れてください -- [[FI]] &new{2009-05-22 (金) 11:08:32};
- 更新いたしました。再評価のほどお願いします。 -- [[Ds]] &new{2009-05-22 (金) 16:25:42};
- プログラムの説明がわかりやすくなりました。あとは似顔絵を似せていくだけの段階ですね! -- [[こさか]] &new{2009-05-28 (木) 22:44:56};
- 簡潔にまとめられていると思います。あとは自分たちならではの工夫や考えたことを前面に出しましょう。例えば、直角に書けなかったことが問題になっていますが、どうして書けないのかを具体的に説明したり、その解決策を考えたりできます -- [[FI]] &new{2009-06-05 (金) 03:37:30};
- 進行可能な方向が直線方向で左右へ動けないロボで直線を引くのは困難ですね…微調整がかなり必要となるかと思いますが、今の技術だけでも可能なはずです。時間のあるときに考えてみてください! -- [[こさか]] &new{2009-07-02 (木) 21:33:08};
#comment