[[2010b]]

[[2010b]]

*お絵かきロボット[2010/後期/A4/左] [#k085003f]

#contents

**課題の内容 [#se8cb208]
-LEGOブロックでオリジナルロボットを組み立て、NQCを利用してパートナーの似顔絵を描くプログラムを作ること。
-使用できるのはLEGOブロックとペンのみ。

**メンバー紹介 [#d5fbb1ab]
-松本
-王

**組み立てたロボット [#ob3846a1]
-全体像
→最初に作ったドライブベースでは四輪の場合前方に傾いてしまい、もしもペンが引っ掛かったときに本体に不可がかかり、下手すれば壊れてしまうので、ドライブベースを作り直し、RCX本体にタイヤを横付けするようにした。


#ref(NEC_0007.jpg)



-タイヤ部
→上記のとおり、水平を保てるようになっている。さらに、車高が低いので、いざ上から過負荷がかかり、本体がたわんでもかろうじて移動はできるようになっている。


#ref(NEC_0013.jpg)




これがタイヤ部の工夫点。1プレート分だけずれている。


#ref(NEC_0012.jpg)



-ペン部
→当初はペン自体をゴムとビームを利用して固定したアームをつくり、アーム自体をアゲサゲしようとおもったが、うまく制御しづらい(それに単純すぎて面白みがない(笑))ので、エレベータ式にした。


#ref(NEC_0008.jpg)


#ref(NEC_0011.jpg)




これもモーターと可動部をつなげるために工夫が必要だった。
最初のドライブベースからアイディアを得て、モーターを挟み込んでみたらうまくいった。


#ref(NEC_0010.jpg)



#ref(NEC_0009.jpg)


やはり、工夫した点は、ペンをどのように保持しておくかであり、その点は、写真の白い
ギアを使うことで解決した。
これをつかうことで、ペンを持ち上げて保持する際、常にモーターを回し続けていても本体には負荷がかからない(もちろん電気的な負荷はコンピューターにはかかるかもしれないが・・・^^;)ので、常にまわしづづけることで、ペンの保持をすることができる。


#ref(NEC_0007.jpg)


**似顔絵の完成予想図 [#m550eff4]


**プログラム [#s7c2934c]

-王

#define turn_up OnFwd(OUT_B);
#define turn_down OnRev(OUT_B);Wait(4);Float(OUT_B);
#define go OnFwd(OUT_A);OnFwd(OUT_C);
#define back OnRev(OUT_A);OnRev(OUT_C);
#define tomaru Off(OUT_A+OUT_C+OUT_B);
#define tomaruAC Off(OUT_A+OUT_C);
#define backA OnRev(OUT_A);
#define backC OnRev(OUT_C);

sub down()
{
	turn_up;
	Wait(100);
	turn_down;
}

sub megane()
{
	go;
 	Wait(70);
	backA;
	Wait(25);
	tomaru;
	turn_up;
	Wait(15);
	go;Wait(55);
	backC;Wait(25);
	back;Wait(62);
	tomaru;
	turn_down;Wait(50);tomaru;
	back;Wait(28);
	go;
	backC;Wait(20);
	turn_up;tomaruAC;Wait(50);tomaru;
	go;
	backA;Wait(20);
	go;Wait(70);
	backA;Wait(2);
	back;Wait(80);
	go;
	backC;Wait(20);
	turn_down;tomaruAC;Wait(50);
	go;
	backA;Wait(20);
	back;Wait(24);
	go;
	backC;Wait(20);
	turn_up;
}

sub linkaku()
{
	back;Wait(60);tomaru;Wait(50);
	turn_down;Wait(50);
	go;Wait(70);
	Off(OUT_C);Wait(70);tomaru;
	turn_up;
	go;Wait(48);tomaru;
	go;backC;Wait(110);tomaru;
	back;Wait(53);tomaru;
	turn_down;Wait(60);tomaru;
	go;Wait(60);
	turn_up;
	go;Wait(50);tomaru;
	go;backC;Wait(154);tomaru;
}

sub hana()
{
	go;backA;Wait(325);tomaru;
	back;Wait(94);tomaru;
	go;backA;Wait(100);tomaru;
	back;Wait(25);go;backC;Wait(73);tomaru;
	go;Wait(44);tomaru;
	turn_down;Wait(50);
	go;Wait(25);
	backC;Wait(8);tomaru;
	turn_up;Wait(50);tomaru;
	go;Wait(5);tomaru;
	turn_down;Wait(50);
	go;backC;Wait(20);
}

sub kaminoke()
{
	repeat(5){
		go;backC;Wait(35);tomaru;
		turn_down;Wait(50);tomaru;
		go;backA;Wait(75);tomaru;
		turn_up;Wait(50);tomaru;
		go;backC;Wait(35);tomaru;
		go;Wait(3);tomaru;
	}
}

sub kaminoker()
{
	repeat(5){
		turn_down;Wait(67);tomaru;
		go;backA;Wait(200);tomaru;
		turn_up;Wait(67);tomaru;
		back;Wait(8);tomaru;
		go;backC;Wait(200);tomaru;
		go;Wait(2);tomaru;tomaru;
	}
}


task main()
{
	down();
	Wait(30);
	megane();
	go;Wait(58);
	backA;Wait(147);
	linkaku();
	go;Wait(48);
	kaminoke();
	turn_up;Wait(50);tomaru;
	go;backA;Wait(75);tomaru;
	back;Wait(7);tomaru;
	kaminoker();
	turn_up;Wait(50);tomaru;
	hana();
	turn_up;Wait(50);
	tomaru;
}


**実際にロボットが書いた似顔絵 [#r44cf612]
#ref(CA31.jpg)

**反省点 [#wf053b0a]
-松本
今回はパートナーで共同作業をすることが全くできなかった。それに提出も遅れてしまったので、次回はこの2点の改善に加えもっと細かく動けるロボットと、プログラミングを作りたい。

**コメントをよろしくお願いします。 [#l9ac5130]
FI まだ終わってないみたいなので、また後で見ます。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS