- 追加された行はこの色です。
- 削除された行はこの色です。
*目次 [#b7ee0ff7]
#contents
*メンバー [#me130c28]
Mr.TとMt.M
Mr.T
Mt.M
*課題の内容 [#l4a7e174]
**A3の紙に相棒の似顔絵を書くロボットの作成。 [#g4a59cbe]
-ひとりにつき一つ以上のプログラムを作成すること。
-ペン以外はキットに含まれる部品を使うこと。
-キットに付属の高価な輪ゴムは切れやすいので切れないように細心の注意を払うこと。
-改良や調整をしやすくするため、ロボット本体だけでなく、プログラムについても可能な部分についてはサブルーチンや関数、マクロなどを使って部品に分けること。
*ロボット [#n6372d61]
*ロボットの紹介[#n6372d61]
・正面
#ref(./P1000007.JPG,59.5 kB,正面)
・右側面
#ref(./P1000008.JPG,58.7 kb,右側面)
・左側面
#ref(./P1000010.JPG,59.9 kB,左側面)
**完成したもの [#pa90e3e4]
**完成したロボットの名前 [#pa90e3e4]
虎次郎 (黒と黄色でできているから。次につなぐために次郎。)
**工夫した点 [#ea1a17fb]
-上手にペンを固定し、筆圧を弱すぎないようにした。
-アームの持ち上げて支える力を強くした。
-タイヤでペンを固定するのが難しく、アームで上手にペンを固定し、筆圧を弱すぎないようにした。
-アームにすることで一定の筆圧で顔をかけるようにした。
-普通にアームにペンを持たせるとペンの重さにアームが耐えられなく上で支えることができなかった。しかしアーム自体を支える力をいろいろなパーツでカバーしてペンを支えられるようにした。
-小回りを良くし、機動性を重視した。
-短いコードが使えなかったため、長いコードをタイヤに絡まらないようにすることができた。
-持ち運びしやすいように本体とアームを簡単に取り外しができるようにした。
**苦労した点 [#cfc542b4]
-コードが一本長いためタイヤに引っかかるなどして大変だった。
-筆圧を落とさずにかくのが大変だった。
-ペンの位置がロボットの中心と離れているので描きたい形に動かすのが大変だった。
*プログラムと似顔絵 [#y5bd7dfa]
**Mt.M [#q29329e5]
#define GO OnFwd(OUT_A+OUT_C);
#define STOP Off(OUT_A+OUT_C);
#define UP OnRev(OUT_B);Wait(40);Off(OUT_B);
#define DOWN OnFwd(OUT_B);Wait(30);Off(OUT_B);
#define TURN OnFwd(OUT_C);OnRev(OUT_A);
#define CIRCLE OnFwd(OUT_A);OnRev(OUT_C);
***プログラム [#ddf1e1a7]
#define GO OnFwd(OUT_A+OUT_C); //前進する
#define STOP Off(OUT_A+OUT_C); //止まる
#define UP OnRev(OUT_B);Wait(50);Off(OUT_B); //ペンを上げる
#define DOWN OnFwd(OUT_B);Wait(30);Off(OUT_B); //ペンを下げる
#define BACK OnRev(OUT_A+OUT_C); //後退する
#define TURN OnFwd(OUT_C);OnRev(OUT_A); //右回り
#define RETURN OnFwd(OUT_A);OnRev(OUT_C); //左回り
task main()
{
SetPower(OUT_B,1);
SetPower(OUT_A,7);
SetPower(OUT_C,7);
OnFwd(OUT_C);Wait(730);STOP;UP;
GO;Wait(50);STOP;
DOWN;GO;Wait(45);STOP;UP;
GO;Wait(30);STOP;
DOWN;GO;Wait(45);STOP;UP;
CIRCLE;Wait(90);STOP;
GO;Wait(60);STOP;
DOWN;TURN;Wait(40);STOP;
SetPower(OUT_B,1);
SetPower(OUT_A,7);
SetPower(OUT_C,7);
OnFwd(OUT_C);Wait(780);STOP;UP; //輪郭を描く
GO;Wait(120);STOP; //目を描くための予備動作
TURN;Wait(70);STOP; ↓
GO;Wait(30);STOP;UP; ↓
RETURN;Wait(80);STOP; ↓
BACK;Wait(20);STOP; ↓
DOWN;BACK;Wait(35);STOP;UP; //右目を描く
BACK;Wait(20);STOP;
DOWN;BACK;Wait(35);STOP;UP; //左目を描く
RETURN;Wait(90);STOP; //口を描くための予備動作
BACK;Wait(25);STOP; ↓
DOWN;TURN;Wait(40);STOP; //口を描く
UP; //終了
}
***似顔絵 [#b4c78aa8]
#ref(./P1000013.JPG,51.1 kB,Mt.M似顔絵)
***工夫した点 [#r57b7c2a]
-相手の似顔絵を書くに当たってシンプルに書くというのにこだわった。
-ちょうど良く形を丸にするのは難しく、何度も試行錯誤をして時間を定めた。
-目と目の間隔や鼻との間隔をとるのにも何度も繰り替えして時間を定めた。
-丸を小さく書くために左右のタイヤを逆向きに動かすようにした。
-流れるように書くために無駄なプログラミングをなくすようにした。
***今後改善すべき点 [#odfcea79]
-髪の毛を描くことができなかった。
-シンプルに作りすぎたと思うのでもっと工夫したプログラミングをしていきたい。
-相方に頼ってばかりだったのでもっと積極的に活動したい。
**Mr.T [#b8272bf4]
#define down SetPower(OUT_B,0);OnFwd(OUT_B);Wait(50);Off(OUT_B);
#define up SetPower(OUT_B,2);OnRev(OUT_B);Wait(50);Off(OUT_B);
#define outline SetPower(OUT_A,3);SetPower(OUT_C,7);
#define go(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define turn_r(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);
#define turn_l(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C);
#define mouth(t) SetPower(OUT_A,7);SetPower(OUT_C,1);OnFwd(OUT_C);OnFwd(OUT_A);Wait(t);Off(OUT_A+OUT_C);
***プログラム [#b8fb24a9]
#define down SetPower(OUT_B,0);OnFwd(OUT_B);Wait(50);Off(OUT_B); //ペンを下げる
#define up SetPower(OUT_B,2);OnRev(OUT_B);Wait(50);Off(OUT_B); //ペンを上げる
#define outline SetPower(OUT_A,3);SetPower(OUT_C,7); //出力を決める
#define go(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //前に進む
#define back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); //後ろに進む
#define turn_r(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); //右に曲がる
#define turn_l(t) OnFwd(OUT_C);OnRev(OUT_A);Wait(t);Off(OUT_A+OUT_C); //左に曲がる
#define mouth(t) SetPower(OUT_A,1);SetPower(OUT_C,7);OnFwd(OUT_C);OnFwd(OUT_A);Wait(t);Off(OUT_A+OUT_C); //口を描く
task main()
{
outline;down;go(160);
up;back(90);turn_l(86);go(70)
down;go(240);
up;back(90);turn_l(86);go(70)
down;go(160);
up;back(90);turn_l(86);go(70)
down;go(240);
up;turn_l(170);go(150);turn_r(60);go(70)
down;go(35);
up;go(20);
down;go(35);
up;back(50);turn_l(120);go(200);turn_r(20);
down;go(25);
up;turn_r(15);go(40);turn_l(60);back(80);
down;mouth(120);
up;
outline;down;go(160); //輪郭を描き始める
up;back(90);turn_l(110);go(70)
down;go(240);
up;back(90);turn_l(110);go(70)
down;go(160);
up;back(90);turn_l(105);go(70)
down;go(240); //輪郭終了
up;turn_l(170);go(160);turn_r(65);go(30)
down;go(40); //目を描き始める
up;go(30);
down;go(40); //目終了
up;back(50);turn_l(180);go(170);turn_r(20);
down;go(25); //鼻を描く
up;turn_r(15);go(40);turn_l(80);back(35);
down;mouth(90); //口を描く
up;
}
***似顔絵 [#j3e10a85]
#ref(./P1000015.JPG,41.3 kB,Mr.T似顔絵)
***工夫した点 [#naa98f44]
-顔の横と縦のバランスがいい具合になるように気をつけました。
-ペンの位置が真ん中からずれていたので、そこに工夫をしてプログラムを作りました。
***今後改善すべき点 [#g76bca3e]
-顔のパーツが偏ってしまったので、次回はバランスをよく考えながら作りたいと思いました。
-全体的にシンプルに作りすぎてしまいました。
*感想・考察 [#pfd96caf]
**Mt.M [#nf5be2b0]
このようなロボットの作成とプログラミングは生まれて初めてだったので上手くできるか不安だった。ロボットは相方のおかげでなんとか完成までたどり着け、プログラミングはそこそこできたと思う。今後これまでやったことをもっと発展して使えるようにしたい。
小さいころからものづくりは好きな方でロボットのプログラミングに憧れていた。しかし、ロボットの作成とプログラミングは生まれて初めてだったので上手くできるか不安だった。ロボットは相方のおかげでなんとか完成までたどり着け、プログラミングは何度も試行錯誤してやっと完成した。自分なりにはそこそこできたと思う。今後これまでやったことをもっと発展して使えるようにしたい。
**Mr.T [#of629169]
ロボットの作成やプログラミングは初めてだったので上手にできるか心配でした。ロボットはなんとか完成できましたが、安定感があまりありませんでした。しかし、自分たちで工夫して、少しは改善できました。プログラミングは難しくて、上手くできませんでした。
*コメント [#x0e8643f]
- プログラムに説明を入れてください。今回の課題は簡単なので、ひかくてきわからいやすいですが、どんな意図でどんな時にどんな命令をしたのかをはっきりさせた方が、せっかくの工夫がはっきりと伝わると思います -- [[FI]] &new{2010-05-21 (金) 07:37:01};
- プログラムに解説を入れて下さい -- [[TAKA]] &new{2010-05-21 (金) 11:53:50};
- プログラムに解説が入り改善されました。さらに、工夫点が抽象的なのでより具体的にするなど、内容を充実させてみて下さい -- [[TAKA]] &new{2010-06-01 (火) 12:37:42};
- コンパクトにまとまった良いレポートです。より問題点を具体的にすることで、詳しく充実したレポートになると思います。 -- [[FI]] &new{2010-06-18 (金) 17:19:27};
- ポイントを押さえている良いレポートです。ロボットの説明をもっと具体的にしたり、いろいろ頑張ってください。過去のホームページも参考になるかと思います -- [[FI]] &new{2010-07-29 (木) 09:55:26};
#comment
コメントをお願いします。