- 追加された行はこの色です。
- 削除された行はこの色です。
[[2008b/MemberOnly/進行状況A]]
*課題 似顔絵ロボット作成 [#cd776502]
A3の紙にロボットを使い似顔絵を描く。
**目次 [#g3a535b4]
#contents
*ロボットの作成 [#r7352c7a]
**コンセプト [#va32a8b4]
ロボットに似顔絵を描かせる上で「目が線では面白くない。」という意見より、ロボットを作製するにあたって。次のようなコンセプトを設定した。
•自由な大きさの円を描けるロボット
自由な大きさの円を描けるロボット
このコンセプトにより以下のような目標ができた。
•目は絶対に円で描く
•口はニンマリ笑顔で
•始点と終点のあったきれいな円を描く
•相方(大幹)の髪の毛を再現する。(Y太郎のみ)
以上を目標にロボット製作にとりかかった。
**試作一号機 [#nb81f200]
目標を目指して作り始められた一号機、その主な機能は、
アーム部分である子機とベース部分である親機をそれぞれ独立させ、親機の上で子機 を前後に動かすことにより、円の半径を自由に変える
である。
いろいろと苦労した点もあったが、その都度改良を加えることでなかなかかっこいいロボットができた。
これであとはプログラミングを施すだけ…
と思われたそのとき、我々は他の班から信じがたい言葉を聞く、
「それ、A3に収まるんか…?」
我々は驚愕した「A3!?A3だって!? 収まるはずがないじゃないか!!」
夢を詰め込みすぎたロボットはそれ自体がA3位のサイズにまで巨大化していたのだ。
このようにして一号機はプログラミングを待たずして開発中止を余儀なくされた。
*試作一号機は写真を撮っていなかったため画像をのせることができません。文字だけではわかりにくいと思いますが、ご了承ください。
**二号機 [#u5d5deb8]
一号機の反省を生かし、コンセプトは変えずにできるだけコンパクトなロボットを作製。
その主な機能は、
一号機のように自由に描画半径をかえることのできるようにするには、機構が
大きくなりすぎてしまうので、大きい円用と小さい円用にペンを二本持たせる
である。
ペンの出し入れの方法はあまり場所をとらないアームとモーターをギアでつなぎ、上下に出し入れできるギミックを作ることにした。
***機体 [#q530698e]
写真
#ref(2008b/A8/課題1左/IMGP0109.JPG,15%,完成図)
今回はキットに付属の冊子にあるドライブベースを基本として作成した。
すると様々な問題が発生した。
1、四輪タイヤが回転するときに摩擦の違いにより、若干のずれが発生する
2、輪郭用のペンを持たせるアームが、ベースから大きくはみ出てバランスが悪い
3、RCXを置く場所がない
4、タイヤタイプだとペンががっちり固定されない
5、コンパクトにならない
↓これらを改善する。
1、素直に二輪に
2、逆側にブロックを長く出しその先にガイドローラーをつける
#ref(2008b/A8/課題1左/IMGP0123.JPG,15%,シャーシ)
3、2のブロックの上にRCXをのせることで解決
3、2のブロックの上にのせることで解決
4、ペンをギアに固定するタイプにすることで解決
5、もうA3に収まればなんでもいいや
すべて解決された。
***アーム(ペン部分)の作成 [#oc5d8658]
ペンは二本使用する。
初め、下図のようにギアを一直線にくむことを考えたしかしこれでは、ベースの内側にたくさんのギアを入れなければならなかった。
ず
そのため写真のように一度外側に出す形にした。
#ref(2008b/A8/課題1左/IMGP0112.JPG,15%,ギア構造)
#ref(2008b/A8/課題1左/IMGP0112.JPG,10%,ギア構造)
ペンを接続するギアは、ブロックを組み頑丈に固定した。
大きな円を描く方のペンを接続するギアは、そのブロック下部に丸くすべりやすいパーツをつけ、床に着けることによりロボットが安定して動けるようにした。
#ref(2008b/A8/課題1左/IMGP0116.JPG,15%,ギア構造)
#ref(2008b/A8/課題1左/IMGP0116.JPG,10%,ギア構造)
しかし、頑丈にしたためにパーツが重くなったので、より多くの補強を必要とした。
**プログラム [#v0ac4a6d]
***ペンギミック [#c3da847a]
ペンA→大きな円
ペンB→小さな円
以下のマクロを作成した。
#define TURN OnRev(OUT_C); OnFwd(OUT_A); Wait(360); Off(OUT_A+OUT_C); Wait(50); //ロボットを一回転させる
#define PEN_ONA OnFwd(OUT_B); Wait(13); Off(OUT_B); Wait(100); //ペンAを出す
#define PEN_ONB OnRev(OUT_B); Wait(20); Off(OUT_B); Wait(100); //ペンBを出す
#define PEN_OFFA OnRev(OUT_B); Wait(13); Off(OUT_B); Wait(100); //ペンAを出す
#define PEN_OFFB OnFwd(OUT_B); Wait(15); Off(OUT_B); Wait(100); //ペンBを出す
#define turn_90 OnRev(OUT_C); OnFwd(OUT_A); Wait(90); Off(OUT_A+OUT_C); Wait(50); //90°回転する
二人ともこのマクロを用いてペンの動作を行った。
***Y太郎 [#cb33c5eb]
task main(){
PEN_OFFA; //ギアを噛ませる
PEN_ONA; //ペンAを下ろす
TURN; //輪郭を描く
PEN_OFFA; PEN_ONB; //ペンAからBへ
OnFwd(OUT_A+OUT_C); Wait(50); //口の位置に移動しつつ鼻をかく
Off(OUT_A+OUT_C);
Wait(50);
PEN_OFFB; //ペンBを上げる
OnFwd(OUT_A); OnRev(OUT_C); Wait(30); //始点へ
Off(OUT_A+OUT_C); Wait(50);
PEN_ONA; //ペンAを下げる
OnFwd(OUT_C); OnRev(OUT_A); Wait(60); //口を描く
Off(OUT_A+OUT_C); Wait(50);
PEN_OFFA; //ペンAを上げる
OnFwd(OUT_A); OnRev(OUT_C); Wait(30); //中心線へ
Off(OUT_A+OUT_C); Wait(50);
turn_90; //90°回転
OnFwd(OUT_A+OUT_C); Wait(30); //右目の位置へ
Off(OUT_A+OUT_C); Wait(50);
PEN_ONB; //ペンBを下げる
TURN; //目をかく
PEN_OFFB; //ペンBを上げる
turn_90; //90°回転
OnRev(OUT_A+OUT_C); Wait(10); //右眉の位置へ
Off(OUT_A+OUT_C); Wait(50);
OnFwd(OUT_A); OnRev(OUT_C); Wait(40); //始点へ
Off(OUT_A+OUT_C); Wait(50);
PEN_ONB; //ペンBを下げる
OnFwd(OUT_C); OnRev(OUT_A); Wait(80); //眉毛を描く
Off(OUT_A+OUT_C); Wait(50);
PEN_OFFB; //ペンBを上げる
OnFwd(OUT_A); OnRev(OUT_C); Wait(40); //元の位置へ
Off(OUT_A+OUT_C); Wait(50);
OnRev(OUT_C); OnFwd(OUT_A); Wait(180); //180°回転
Off(OUT_A+OUT_C); Wait(50);
PEN_ONB; Wait(100); //黒目を描く
PEN_OFFB; //ペンBを上げる
turn_90; //90°回転
OnRev(OUT_A+OUT_C); Wait(60); //左眉の位置へ
Off(OUT_A+OUT_C); Wait(50);
turn_90; //90°回転
OnFwd(OUT_A); OnRev(OUT_C); Wait(40); //始点へ
Off(OUT_A+OUT_C); Wait(50);
PEN_ONB; //ペンBを下げる
OnFwd(OUT_C); OnRev(OUT_A); Wait(80); //眉毛を描く
Off(OUT_A+OUT_C); Wait(50);
PEN_OFFB; //ペンBを上げる
OnFwd(OUT_A); OnRev(OUT_C); Wait(40); //元の位置へ
Off(OUT_A+OUT_C); Wait(50);
OnRev(OUT_C); OnFwd(OUT_A); Wait(180); //左目の位置へ
Off(OUT_A+OUT_C); Wait(50);
PEN_ONB; Wait(100); //黒目を描く
PEN_OFFB; //ペンBを上げる
OnRev(OUT_A+OUT_C); Wait(10); //少し移動
Off(OUT_A+OUT_C); Wait(50);
PEN_ONB; //ペンBを下げる
TURN; //右目を描く
PEN_OFFB; //ペンBを上げる
OnFwd(OUT_A+OUT_C); Wait(40); //おでこに移動
Off(OUT_A+OUT_C); turn_90;
repeat(5){ //次の行動を5回反復
PEN_ONB; //ペンBを下げる
TURN; //髪の毛を描く
PEN_OFFB; //ペンBを上げる
OnFwd(OUT_A+OUT_C);
Wait(20); Off(OUT_A+OUT_C); };
OnRev(OUT_A); OnFwd(OUT_C); Wait(85);
Off(OUT_A+OUT_C); Wait(50);
OnFwd(OUT_A+OUT_C);
Wait(15); Off(OUT_A+OUT_C);
OnRev(OUT_A); OnFwd(OUT_C); Wait(85);
Off(OUT_A+OUT_C); Wait(50);
OnFwd(OUT_A+OUT_C);
Wait(30); Off(OUT_A+OUT_C);
repeat(4){
PEN_ONB;
TURN;
PEN_OFFB;
OnFwd(OUT_A+OUT_C);
Wait(20); Off(OUT_A+OUT_C); };
turn_90; //90°回転
OnFwd(OUT_A+OUT_C); Wait(100); //退場
Off(OUT_A+OUT_C); }
このプログラムで完成した似顔絵
#ref(2008b/A8/課題1左/IMGP0122.JPG,20%,似顔絵)
•こだわった点 黒眼 眉毛 髪の毛
写真
***大幹 [#v75c2465]
ペンの上げ下ろしのプログラムは上のマクロを使用したが、表記を少し変えた。
PEN_ON→PEN_Fwd
PEN_OFF→PEN_Rev
task main(){
PEN_RevA; //ギアを噛ませる
PEN_FwdA; //ペンAを下げる
TURN; //輪郭を描く
PEN_RevA; //ペンAを上げる
OnFwd(OUT_A+OUT_C); Wait(40); //口の位置へ
Off(OUT_A+OUT_C); Wait(50);
OnFwd(OUT_A); OnRev(OUT_C); Wait(25); //始点へ
Off(OUT_A+OUT_C); Wait(50);
PEN_FwdA; //ペンAを下げる
OnRev(OUT_A); OnFwd(OUT_C); Wait(50); //口を描く
Off(OUT_A+OUT_C); Wait(50);
PEN_RevA; //ペンAを上げる
OnFwd(OUT_A); OnRev(OUT_C); Wait(25); //元の位置へ
Off(OUT_A+OUT_C); Wait(50);
OnFwd(OUT_A+OUT_C); Wait(60); //直進
OnRev(OUT_A); OnFwd(OUT_C); Wait(25); //テールを右へ
OnRev(OUT_A+OUT_C); Wait(70); //後進
Off(OUT_A+OUT_C);
PEN_FwdB; TURN; PEN_RevB; //右目を描く
OnFwd(OUT_A+OUT_C); Wait(70); //元の位置へ
OnFwd(OUT_A); OnRev(OUT_C); Wait(50); //テールを左へ
OnRev(OUT_A+OUT_C); Wait(70); //後進
Off(OUT_A+OUT_C);
PEN_FwdB; TURN; PEN_RevB; //左目を描く
OnFwd(OUT_A+OUT_C); Wait(70); //元の位置へ
OnRev(OUT_A); OnFwd(OUT_C); Wait(25); //テールを中心へ
OnRev(OUT_A+OUT_C); Wait(70); //後進
OnFwd(OUT_A); OnRev(OUT_C); Wait(23); //鼻の始点へ
Off(OUT_A+OUT_C);
PEN_FwdB; //ペンBを下ろす
OnRev(OUT_A+OUT_C); Wait(26); //鼻を描く(一画目)
OnRev(OUT_A); OnFwd(OUT_C); Wait(65); //鼻を描く(二画目)
PEN_RevB; //ペンBを上げる
Off(OUT_A+OUT_C);
OnFwd(OUT_A+OUT_C); Wait(100); //退場
Off(OUT_A+OUT_C); }
このプログラムで完成した似顔絵
#ref(2008b/A8/課題1左/IMGP0120.JPG,20%,似顔絵)
•こだわった点 鼻の形
機体の中心あたりにペンがあるので、ぶれることなく直線から曲線につなげられた。
これを利用して形の良い鼻を描くことができた。
*感想・考察 [#u62dde8a]
ロボットを頑丈に作ったため、プログラミングではあまり苦労をしなかった。
しかし、プログラムが長くなりすぎてしまったので、もう少しサブルーチンを使うなど工夫すればよかった。
ロボットのほうでは、補強パーツが多くなってしまったので、次はこのようなギミックでも更に安定性の高いものを作りたい。
*コメントをどうぞ [#bad4d2ab]
#comment
書くべきことはきちんと書けています。サブルーチンはこれからどんどん使うので、使ったものを書き直してみてください。あと、似顔絵の図や写真をお願いします。 F.I
このページは、ロボットに関連した書きかけの項目です。