2008b/A3/課題1

課題1 似顔絵を描くロボットを作成せよ

ロボット組み立て

まずは似顔絵を描くためのロボットを形にするところからです。

付属の本に載っていた形を基本としてアレンジしていきました。

ペンの装着

ペンをどこにつけて、どうやって上下させるかを考える。

なんとなく線を描きやすそうなイメージで

ロボットの真ん中後ろでペンを使うことにしました。

ペンを固定する部分は過去の作品として紹介されていたものを参考に作成。

<2007b/A2/課題1右 のページ>

http://yakushi.shinshu-u.ac.jp/robotics/?2007b%2FA2%2F%B2%DD%C2%EA%A3%B1%B1%A6

車輪に使ったモーターに続く第3のモーターでペンを上下させる。

余計なパーツを使わず、すっきりさせるように

モーター、ギア、ペンという順にパーツを接続。

031.JPG

大体のプログラミングで一度動かしてみる・・・

ペンの部分が丸ごと外れる場面が何度も見られ、

ロボットの強度にかなり問題があることがわかった。

修正

ペンを上下させているモーターが本体から外れてしまう場面が最も多く、

モーターと本体を部品でつないで補強・・・問題解決。

モーターが外れる場面はなくなりました。

033.JPG

その後、ペンをおろしたときの衝撃によって

ペンを上から押さえている部品が外れる場面も見られたため補強。

ロボットの部品が外れてしまうことはほとんどなくなりました。

プログラミング

後はプログラミングをほどこして完了です。

作品1

task main()
{
OnRev(OUT_A);	 Off(OUT_B);		//輪郭を描く
Wait(680);

OnFwd(OUT_C);		//ペンを上げる
OnRev(OUT_B);		//位置調整
Wait(20);

OnRev(OUT_A); OnFwd(OUT_B);	//その場回転
Wait(85);

OnRev(OUT_A+OUT_B);			//位置調整
Wait(20);
Float(OUT_C);		//ペンを下ろす
OnRev(OUT_A+OUT_B);			//髪の毛(帽子のつばの部分?)を描く
Wait(160);

OnFwd(OUT_C);		//ペンを上げる

OnRev(OUT_A); OnFwd(OUT_B);	//その場回転
Wait(90);
OnRev(OUT_A+OUT_B);			//位置調整
Wait(25);
OnRev(OUT_A); OnFwd(OUT_B);	//その場回転
Wait(90);

OnRev(OUT_A+OUT_B);			//目を描く。作業の簡略化のため、両目は直線上で書く
Wait(70);
repeat(2){         //repeatを使い、少しプログラムを簡略化
	Wait(50);
	OnRev(OUT_C);		//ペンを下ろす
	Wait(30);
	OnFwd(OUT_C);		//ペンを上げる
}
Wait(20);

OnFwd(OUT_A);		//その場回転
OnRev(OUT_B);
Wait(180);
OnRev(OUT_A+OUT_B);		//位置調整
Wait(120);

OnFwd(OUT_A); OnRev(OUT_B);	//その場回転(口を描く)
Wait(50);
Float(OUT_C);		//ペンを下ろす。回転の途中で下ろすことにより、
Wait(80);       //口の描き始めの位置を調整した。

Float(OUT_A+OUT_B);    //停止

}
capboy.jpg

少々ニヤけている上に、帽子をかぶっているようにも見えますが

1つ目の作品が完成です。

作品2

task main()
{
OnRev(OUT_A);	 Off(OUT_B);		//輪郭を描く
Wait(700);

OnFwd(OUT_C);		//ペンを上げる
OnRev(OUT_B);		//位置調整
Wait(20);

OnRev(OUT_A); OnFwd(OUT_B);	//その場回転
Wait(70);

OnRev(OUT_A+OUT_B);			//位置調整
Wait(20);
Float(OUT_C);		//ペンを下ろす
OnRev(OUT_A+OUT_B);			//髪の毛1
Wait(100);

OnFwd(OUT_C);		//ペンを上げる

OnFwd(OUT_A+OUT_B);	//位置調整
Wait(60);

OnRev(OUT_A); OnFwd(OUT_B);	//その場回転
Wait(50);


OnRev(OUT_A+OUT_B);			//髪の毛2
Wait(30);
Float(OUT_C);		//ペンを下ろす
Wait(90);

OnFwd(OUT_C);		//ペンを上げる

OnRev(OUT_A); OnFwd(OUT_B);	//その場回転
Wait(90);
OnFwd(OUT_A+OUT_B);            //位置調整
Wait(10);
OnRev(OUT_A); OnFwd(OUT_B);	//その場回転
Wait(80);

OnRev(OUT_A+OUT_B);			//目を描く
Wait(70);
repeat(2){
	Wait(50);
	OnRev(OUT_C);		//ペンを下ろす
	Wait(30);
	OnFwd(OUT_C);		//ペンを上げる
}
Wait(20);

OnFwd(OUT_A);		//その場回転
OnRev(OUT_B);
Wait(200);
OnRev(OUT_A+OUT_B);		//位置調整
Wait(120);

OnFwd(OUT_A); OnRev(OUT_B);	//その場回転
Wait(50);
Float(OUT_C);		//口を描く
Wait(80);

Float(OUT_A+OUT_B);       //停止

}
ekubo.jpg

一つ目の作品がベースになっているのは見ての通りです。

とにかく髪型をいじりました。    byみなみ

苦労・工夫した点

まず最初に困ったのはペンを上下させるときにどうするかという点

ペンを固定して上下させられるような形にしなければいけないが

最初にペンをおろした状態にして

モーターをまわすとペンが持ち上がるという形にすることで解決した。

次にペンの位置がマシンの中心から後ろ側に下がってしまっているために起きる

方向転換時のペンの位置の誤差を修正しなければいけない点に苦労した。

方向転換するときに毎回ペンを持ち上げてから

回転や前進・後退というプログラミングをすることで

誤差を1つ1つ微調整していきました。

コメントをお願いします



添付ファイル: fileekubo.jpg 385件 [詳細] filecapboy.jpg 374件 [詳細] file033.JPG 387件 [詳細] file031.JPG 377件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-02-09 (月) 18:15:54