- 追加された行はこの色です。
- 削除された行はこの色です。
[[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 まだ終わってないみたいなので、また後で見ます。