[[2009a]]


*目次 [#p341fe6b]
#contents
*課題1  お絵描きロボット[#jc6c908b]
相手の似顔絵を書くロボットの作成
*ロボット本体 [#g0d94c0f]
**ロボットの説明[#gcc04daa]
今回、私たちは四輪のRCX縦型のロボットを作りました。まず最初にできたのが下の写真です。
#ref(2009a/A7/課題1左/初号機.jpg,30%,試作品1号)
しかしギアがうまくかみ合わなかったり、小回りがあまり利かなかったので、改良しました。
工夫した点
最初キャタピラを使用していましたが、小回りや、止まりの良さなどを重視して車輪に変更しました。

**ロボットの基本構造[#q63d93c3]
#ref(2009a/A7/課題1左/CIMG0247.JPG,70%)
ロボットは縦にRCX本体をおき、ペンを一番上にあるモーターからの突き刺し型。そして、ペンの位置ができる限り回転の真ん中にいくようにと考えて4輪駆動の前輪をなるべく前にやり、バランスのとれた形を目指しました。
                                                  
     
***苦労した点 [#o708a5fb]

車輪がうまく噛み合ず、動き方がランダムでした。そしてその結果、プログラム通りにロボットの動きが実行されず、絵がなかなか思い通りにかけませんでした。そしてその問題を解決するために
**ロボットのアーム[#za4922a8]
私たちは、ペンを片側に3個のギアをかませることで安定させました。また、先端の固定は、タイヤを支えるパーツとリンクをさせたこと、RCXの本体との間にパーツを一つ入れてあること、棒のパーツを使い、両サイドから圧迫することにより固定をしました。
***苦労した点 [#se1d4a6e]
最後に改良を加えるにあたり、ペンをできる限り回転の中心に近い位置に取り付けようと試み、3個目のモーターを高い位置にした結果、強度、パーツの数、ペンの安定などたくさんの課題を抱え、多少の強度と、形にこだわらない無理矢理なパーツの組み合わせにより、かろうじてペンの固定に成功しました
*プログラムについて[#qd74bf52]
**Fe2+のプログラム [#d97e2d07]
 #define fwd(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);//前進
 #define rev(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);//後進
 #define arev(t) OnRev(OUT_A);Wait(t);Off(OUT_A);//右回り
 #define crev(t) OnRev(OUT_C);Wait(t);Off(OUT_C);//左回り
 #define circa(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);//右回転
 #define circb(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C);//左回転
 #define pend OnFwd(OUT_B);Wait(15);Off(OUT_B);//ペンをあげる
 #define penu OnRev(OUT_B);Wait(12);Off(OUT_B);//ペンを下げる

 task main ()
 {
 penu;
 penu;
 afwd(350);//顔の輪郭
 afwd(350);
 pend;
 circa(170);
 fwd(30);
 penu;
 penu;
 afwd(250);
 fwd(20);
 repeat(10)//髪の毛
 repeat(10)
 {
 cfwd(40);
 rev(35);
 }
 pend;
 crev(200);//目
 crev(200);
 fwd(100);
 circa(120);
 fwd(30);
 penu;
 Wait(100);
 fwd(30);//口
 fwd(30);
 pend;
 Wait(100);
 fwd(30);
 pend;
 fwd(40);
 circa(200);
 fwd(25);
 penu;
 fwd(25);
 }
#ref(2009a/A7/課題1左/CIMG0345.JPG,20%)
***工夫した点 [#z81f92bc]
特に苦労したのが顔の輪郭です。これだけはどうしても譲ることができず、何度もプログラムしました。このロボットの大きさの特性を生かし、半円と直線を組み合わせることで、自然な顔の輪郭をつくることができました。髪の毛にブログラムは、複雑だったのプログラムをシンプルにし、できるだけ誤差がでないようにしました。
**リナのプログラム [#naf9d9ef]
 #define UP OnFwd(OUT_B);Wait(15);Off(OUT_B);
 #define DOWN OnRev(OUT_B);Wait(20);Off(OUT_B);
 #define GO OnRev(OUT_A+OUT_C);
 #define STOP Off(OUT_A+OUT_C);
 #define STOP_2 Off(OUT_A+OUT_C);Wait(50);
 #define STOP_3 Off(OUT_A+OUT_C);Wait(5)
 #define BACK OnFwd(OUT_A+OUT_C);

 task main ()
 {SetPower(OUT_A+OUT_C,3);
 Wait(500);

 //顔の輪郭 
DOWN;
  
 DOWN;//顔の輪郭
 STOP_2;
 GO;
 Wait(60);
 STOP_3;
 UP;

 //顔の輪郭→あごの角
 STOP_2
 STOP_2//あごの角
 GO;
 Wait(19);
 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(160);
 STOP_2
 BACK
 Wait(36);
 STOP_2
 DOWN;
 STOP_2
 GO;
 Wait(40);
 STOP_3;

 //あごの先端
 UP;
 UP;//あごの先端
 STOP_2;
 GO;
 Wait(19); 

 STOP_2;
 
 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(170);
 STOP_2;
 BACK
 Wait(27);
 STOP_2;
 DOWN;
 STOP_2;
 GO;
 Wait(50);
 STOP;
 
 //あご→顔の輪郭
 UP;
 UP;//あご→顔の輪郭
 STOP_2
 GO;
 Wait(18);
 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(160);
 STOP_2
 BACK
 Wait(37);
 STOP_2 
 DOWN;
 STOP_2
 GO;
 Wait(60);
 STOP; 

 //髪の毛
 OnRev(OUT_A);
 OnRev(OUT_A);//髪の毛
 OnFwd(OUT_C);
 Wait(7);
 repeat(21)
 {
 OnRev(OUT_A+OUT_C);
 Wait(17);
 UP;
 OnFwd(OUT_A);
 OnRev(OUT_C);
 Wait(15);
 DOWN
 OnFwd(OUT_A+OUT_C);
 Wait(22);
 UP;
 OnRev(OUT_A);
 OnFwd(OUT_C);
 Wait(15);
 DOWN
 }


 //目
 BACK;
 BACK;//目
 Wait(10);
 OnFwd(OUT_C);
 OnRev(OUT_A);
 Wait(140); 

 BACK;
 Wait(30);
 STOP_2
 DOWN
 STOP_2;
 BACK
 Wait(20);
 STOP_2
 UP;
 OnFwd(OUT_C);
 Wait(60);
 STOP_2
 DOWN
 STOP_2;
 BACK
 Wait(20);
 STOP_2
 UP;
 }
#ref(2009a/A7/課題1左/CIMG0344.JPG,20%)
***工夫した点 [#p9d3b604]
輪郭をホームベース型にすることにより人間らしくし、髪も、輪郭を書くのではなく細かい動きで髪の毛を表現しました。
顔の輪郭を直線にしたために、線と線をつなぐのがとても大変でした、
最初は 直進→ペンをあげてバック→左折→バック→ペンをおろす
という行程で角を描こうとしていました。すると、動きが多いため、誤差が多く、微調整を繰り返してもなかなかうまくいきませんでした。
そこで、班の人にアイディアをもらい。
直進→ペンをあげて少し直進→バックしながら曲がる→直進
とすることで動きを減らし、誤差を減らすことにつながりました。
後は、髪の毛を線でもっと細かく作りたかったのですが、
斜めに上に上がっていったり、角度が大きすぎたり小さすぎたり、となかなか思うようにいかず、すごく苦労をしました。
*感想 [#l34b15b5]
***Fe2+ [#c5ba5c02]
プログラムなどはあまり経験などなったのでとても大変でしたがパートナーの協力もあって無事終わらせることができ、嬉しいです。
***リナ [#ke13fc7d]
初めてのプログラミング、組み立てということで、何をすればいいのか、何が楽、かつきれいにできるか、何を優先してくむべきなのか(ペンを真ん中にやることか曲がりやすくするべきか)がわからず。ただ迷走を繰り返し、本体、プログラミングともに何度もやり直していったのに、結局最後までいいものはできませんでした。満足のいく結果とは言えないまま期限を越すことになり、ただただ残念で、すごく情けなかったです。
次回の課題は、満足がいくように妥協をいっさいせずに頑張り、かつ妥協をしないで成功できるように。たくさんの努力し、心血を注ぎたいと思いました。

*コメント [#fed478b8]
コメントをどうぞ
- ロボットの説明を問題→対策の順にしている点が分かりやすいです。プログラムの説明はソースの合間に入れていった方がわかりやすくなると思います。 -- [[こさか]] &new{2009-05-21 (木) 22:48:56};
- プログラムは二つ必要です。 -- [[FI]] &new{2009-05-22 (金) 11:19:46};

#comment


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