目次

課題

課題1を参照

ロボット

制作過程

見せてやろう、われらの本気!!というわけで頭を捻る。アイディアの数なら誰にも負けない!!でも難しいことはしたくない。そういうわけで出来上がったのがこれ。最初の機体にモーターとタイヤ(ローラー)をつけただけ。しかしやっぱりなにも考えないで作るものだから、お約束の通り問題発生。ネームペンが細すぎた。径が五ミリは足りないよ。(写真は後から撮ったので、ペンが当日の太いものです。)

10.0 kB,試行

おし、ならばこれだ!『パンがなければ』の原理。筆箱ではなく画材袋を漁る…。あった、コピックスケッチ(380円弱)幅があって太いこのペンなら行けるんじゃね。と差してみればまぁまぁ。それでもまだ少し足りない。ゴムを巻いても上下移動はちょと無理のようで。そこで出ました最終手段。ローラーを代える。これを機会に四輪だった機体を三輪にし移動用のモーターにかかる力を軽減。 前輪は昨年度のある班を見習って、旋回時の摩擦軽減のためにゴムリングを着けないことにしました。

尚、写真は本体の正面と全景

10.0 kB,試行2

それっぽく完成 さぁなんだかあと六日しかないよ、と駆動テスト。始めにペンの上げ下げにかかる時間を測る。モーター回転時間0、2s→飛距離5cm(笑)上方にむかってローラーによって打ち出された感じ。疲れた頭は小さなことにも笑いますのな、その場で大爆笑してしもた。気を取り直してもう一度。回転時間0、02s→ちょうどいい感じ。 続いて一回転にかかる時間、試行錯誤で結論265s 後は土日の間にそれぞれ必死でプログラムを考えるだけ♪つまり難題は半分残っている。苦笑いしかできないね

完成作

36.2KB ,出来上がり

左から順にてらすぃー,ドン,D.Y  ドンは青、D.Yは緑で書いた線が顔である。連絡不足のため二人の完全な画像が見つからず、手持ちの試行の記録の中から画像を抽出した。 尚、以下は皆の理想の塊、完成予想である。

13.7KB ,完成予想
10.3KB  ,完成予想
10.3KB  ,完成予想

工夫した点

小さなタイヤを使ってペンを挟んでモーターで上下させられるようにすることにした。また、それぞれいかに少ない工程で似顔絵を完成させられるかを考え、線の数を極力減らすことにより、機械とプログラムの簡易化を図る。 兎に角本体だけは班員皆で考えて作ったので、後のプログラミングがスムーズにできた

プログラム

てらすぃー

#define  pen_down  {OnRev(OUT_B);Wait(4);Off(OUT_B);}//ペンを下げる
#define  pen_up    {OnFwd(OUT_B);Wait(3);Off(OUT_B);}//ペンを上げる
#define  cw        {OnFwd(OUT_C);OnRev(OUT_A);}//その場で右旋回
#define  ccw       {OnRev(OUT_C);OnFwd(OUT_A);}//その場で左旋回
#define  front     {OnFwd(OUT_C);OnFwd(OUT_A);}//前進
#define  bac       {OnRev(OUT_C);OnRev(OUT_A);}//後退
#define  eye    {OnRev(OUT_B);Wait(3);Off(OUT_B);
OnFwd(OUT_C);OnRev(OUT_A); Wait(10);  OnRev(OUT_C);OnRev(OUT_A); Wait(3);
Off(OUT_A+OUT_C);Wait(10); OnFwd(OUT_C);OnFwd(OUT_A); Wait(3); 
OnFwd(OUT_C); Wait(10); OnFwd(OUT_B);Wait(3);Off(OUT_B);}

task main()

{
 pen_down
 cw Wait(265);
 pen_up//輪郭描写 

 Off(OUT_A+OUT_C);Wait(15);

bac Wait(20);
ccw Wait(20);
pen_down
cw Wait(40);
pen_up//口描写

 Off(OUT_A+OUT_C);Wait(15);

cw  Wait(110);//上向いた
bac Wait(50);
ccw Wait(32);//左上45度、開始位置

 Off(OUT_A+OUT_C);Wait(15);

 eye//左目

 Off(OUT_A+OUT_C);Wait(15);

cw Wait(20);

 Off(OUT_A+OUT_C);Wait(15);

 eye//右目

 Off(OUT_A+OUT_C);Wait(15);

bac Wait(10);
 pen_down
 bac Wait(15);
 cw Wait(5);
 pen_up//鼻

front//退場
Wait(50); Off(OUT_A+OUT_C);
}

プログラムについて

輪郭を○で、口と目をかいてから、バックしながら鼻をかいて、退場する予定だった。 が、自分の発想がややこしすぎて、結局予定どおりの顔はできなかった。 まず頭の中を簡略化することが重要らしかった。 また、ペンを下す力が強すぎてペン先が反動ではねてしまうことがあり、またそれを予防するために時間をおくと、インクが染みて見目が悪くなることがあった。 同様に反動がペンをあげてしまうこともあり、安定して線を書かせ続けることができなかった。

ドン

#define rinkaku OnFwd(OUT_A);OnRev(OUT_C);Wait(265);Off(OUT_A+OUT_C);
#define pen_up OnFwd(OUT_B);Wait(3);Off(OUT_B);
#define pen_down OnRev(OUT_B);Wait(3);Off(OUT_B);
#define go OnFwd(OUT_A+OUT_C);Wait(10);Off(OUT_A+OUT_C);
#define turn_right_ninety OnFwd(OUT_A);OnRev(OUT_C);Wait(64);Off(OUT_A+OUT_C);
#define turn_left_ninety OnFwd(OUT_C);OnRev(OUT_A);Wait(70);Off(OUT_C+OUT_A);
#define back_one OnRev(OUT_A+OUT_C);Wait(20);Off(OUT_A+OUT_C);
#define back_two OnRev(OUT_A+OUT_C);Wait(125);Off(OUT_A+OUT_C);
#define back_three OnRev(OUT_A+OUT_C);Wait(50);Off(OUT_A+OUT_C);
#define eye OnRev(OUT_A+OUT_C);Wait(20);Off(OUT_A+OUT_C);
#define mouth OnRev(OUT_A+OUT_C);Wait(25);Off(OUT_A+OUT_C);
task main()
{
    rinkaku;                 //輪郭を書く
    Wait(30);
    pen_up;                  //ペンを上げる
    go;
    Wait(30);
    turn_right_ninety; 
    back_one;
    pen_down;                //ペンを下ろす
    eye;                     //左目を書く
    pen_up;                  //ペンを上げる
    back_one;
    pen_down;                //ペンを下ろす
    eye;                     //右目を書く             
    pen_up;                  //ペンを上げる
    turn_left_ninety;
    back_three;
    turn_left_ninety;
    back_two;
    pen_down;                //ペンを下ろす
    Wait(30);
    mouth;                   //口を書く
    Wait(30);
    pen_up;                  //ペンを上げる
}  

D.Y

#define TURN_TIME 260
#define TURN_TIME_QUARTER 15
#define MOVE_TIME_A 20
#define MOVE_TIME_B 20
#define MOVE_TIME_C 50
#define MOVE_TIME_MOUTH 30
#define MOVE_TIME_EYE 30
#define PEN_UP 2
#define PEN_DOWN 5
task main()
{
	OnFwd(OUT_A); OnRev(OUT_C); Wait(TURN_TIME);
	Off(OUT_A+OUT_C);				           //輪郭を描く

	OnFwd(OUT_B); Wait(PEN_UP); Off(OUT_B);	//penを上げる

	OnRev(OUT_A+OUT_C); Wait(MOVE_TIME_A);		           //輪郭〜右目間を移動	

	OnRev(OUT_B); Wait(PEN_DOWN); Off(OUT_B);	           //penを下げる

	OnRev(OUT_A+OUT_C); Wait(MOVE_TIME_EYE);
	Off(OUT_A+OUT_C);					  //右目を描く

	OnFwd(OUT_B); Wait(PEN_UP); Off(OUT_B)	;	          //penを上げる

	OnRev(OUT_A+OUT_C); Wait(MOVE_TIME_B);		          //右〜左間を移動

	OnRev(OUT_B); Wait(PEN_DOWN); Off(OUT_B);	          //penを下げる

	OnRev(OUT_A+OUT_C); Wait(MOVE_TIME_EYE);
	Off(OUT_A+OUT_C);					  //右目を描く

	OnFwd(OUT_B); Wait(PEN_UP); Off(OUT_B)	;	          //penを上げる

	OnFwd(OUT_C); OnRev(OUT_A); Wait(TURN_TIME_QUARTER);
	OnFwd(OUT_A+OUT_C); Wait(MOVE_TIME_C);
	Off(OUT_A+OUT_C);					  //右目〜口間を移動

	OnRev(OUT_B); Wait(PEN_DOWN); Off(OUT_B);	          //penを下げる

	OnFwd(OUT_A); Wait(MOVE_TIME_MOUTH);
	Off(OUT_A);					  	  //口を描く
} 

プログラムについて

ひとまず、基本プログラムを組み、その後#defineで移動の微調整をする。 基本はペンの上げ下げ、移動のON、offだけでの構成。 軌跡もシンプルな形にまとめる。 pen down を3→5にして筆圧の弱さをカバー。

反省点

基本プログラムは簡素。反面、各行動時間の調整に時間を費やすことに。 ロボットにもう少し安定感があれば、より精密な動きをさせられるのだろうか。 筆圧がまったく無いことに気がつく。プログラム変更で多少は補えた。

感想

てらすぃー

主が細かい動作を要求しすぎたせいか、うまく動かなかった。結局隙間ごとに停止を組み込むことによってそれなりの顔を書くように。紙の上でプログラムを組んでいたので、提出期限当日にほぼ全文を書き換えるハメに。結果微調整の時間があまり取れなかった。宿題は計画的に。

ドン

微調整に時間がかなり掛かってしまい大変だった。また、ペンを持たせる部分を作るのに苦労した。プログラムにあてる時間が短かったので、似顔絵を描くと言っても特徴をとらえて描くというところまで出来なかったので残念だった。

D.Y

紆余曲折を経てVer4まで作成。結局はシンプルな形に収まる。ペンを引くか押すかで安定性ぶれるのが気になる。 また床の状態、ペンの種類にも左右される。プログラムを確実に実行できる安定感がロボットには必要か。 似顔絵のパターンを輪郭→左目→右目→口の順で描くので、ロボットの動きは最小限ですみプログラムはシンプルに組める。

コメント

コメントをお願いします。

  • 完成作が見たかった〜。 -- ドドンパ? 2010-05-20 (木) 22:24:03
  • 今回は初回なので難しいことがあったと思います。感想のところで反省点は出ているので、ぜひ完成させて下さい -- TAKA? 2010-05-21 (金) 11:14:18
  • 以前より改善されています。もう少し、感想の部分やイラストを用いるなど、内容を充実させて下さい。プログラムの変更点など工夫した所を押し出してみると良いです -- TAKA? 2010-06-01 (火) 12:06:53


添付ファイル: filetask1tera.jpg 183件 [詳細] filetask1d.y.jpg 225件 [詳細] filetask1don.jpg 188件 [詳細] filetask1atall.jpg 198件 [詳細] fileshikou2.jpg 186件 [詳細] file20100514180549.jpg 132件 [詳細] fileshikou1.jpg 191件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-04 (水) 15:43:35 (3305d)