- 追加された行はこの色です。
- 削除された行はこの色です。
[[2009a/A10/課題1右]]
目次
#contents
*課題 似顔絵の作成 [#l77d8dbe]
これが完成した似顔絵ロボットです
正面から見た図
#ref(2009a/A10/課題1右/2009052119080000.JPG,50%)
背面から見た図
#ref(2009a/A10/課題1右/2009052119170001.JPG,50%)
*ロボットの制作 [#q584abec]
**基礎設計 [#af364b7a]
メンバーで検討し、ドライブベースは練習で用いた基本的な構造にしようということに決まった。似顔絵を書くうえでペンが車輪の中心を結んだラインの半分にあればよいという意見を採用することになり、ペンを車体の真ん中にセットすることにした。
#ref(2009a/A10/課題1右/2009052119320000.JPG,50%)
真ん中にある青いパーツと黒いバーはペンを真ん中で支えるためのもので、ペンのぶれを極限まで小さくすることに成功した。
#ref(2009a/A10/課題1右/2009052119320001.JPG,50%)
#ref(2009a/A10/課題1右/2009052119330000.JPG,50%)
**車輪設計 [#jfd55a34]
練習用の基本構造には4輪・キャタピラ・足という3つがあったが、小回りが効き旋回が楽であるという理由から、2輪構造でロボットを製作することに決定した。
#ref(2009a/A10/課題1右/2009052119200000.JPG,50%)
2輪には夢がある!!
#ref(2009a/A10/課題1右/2009052119270000.JPG,50%)
ガッチリした構造でタイヤはブレない!!
#ref(2009a/A10/課題1右/2009052119270001.JPG,50%)
**工夫した点 [#fdf3918f]
1.タイヤを直接モーターに接続して試運転をしたところ、あまりにも速度が速すぎ、これでは速すぎて書くことができないという判断になり、ギア比の工夫を行い速度を落とした。
#ref(2009a/A10/課題1右/2009052119210000.JPG,50%)ギアが3枚あり上から順に大きくなっていて、タイヤの回転数を変える工夫をした。
2.2輪構造にしたため、どのようにして安定感を得るかというのが問題となり、それを工夫するための工夫をした。
#ref(2009a/A10/課題1右/2009052119200001.JPG,50%)
補強材として黒のブロックで支えるだけだと、ガタガタと鳴り安定感にかけたため、ギアをブロックにつけたところ安定感が抜群に増して問題無くなった。
ギアの固定が重要!!
#ref(2009a/A10/課題1右/2009052119200002.JPG,50%)
3.真ん中にペンを固定するためにペンをどう支え、行動時にいかにブレなくするかという工夫。
縦横斜め、どの方向に行動しようとも絶対にペンがブレない!!
#ref(2009a/A10/課題1右/2009052119310000.JPG,50%)
見よ!この華麗なる一直線!安定感抜群!!
#ref(2009a/A10/課題1右/2009052119310001.JPG,50%)
青い○穴があるパーツで前後をカバーし、黒いバーで左右のブレをカバーしている。
#ref(2009a/A10/課題1右/2009052119280001.JPG,50%)
ペン接続部。
#ref(2009a/A10/課題1右/2009052119240000.JPG,50%)
4.ペンの固定法。
#ref(2009a/A10/課題1右/2009052119290000.JPG,50%)
上で述べたように3点でペンを固定することにし、ペンの固定具自体にギア動作部を接続することで常に紙に垂直に書けるようになった。
#ref(2009a/A10/課題1右/2009052119290001.JPG,50%)
*プログラム一覧 [#a0518c50]
**Mのプログラム [#cb3ee9c4]
#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 right(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);//右回転
#define left(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);//左回転
#define Bdn OnFwd(OUT_B);Wait(12);Off(OUT_B);Wait(100);//ペンを下げる
#define Bup OnRev(OUT_B);Wait(12);Off(OUT_B);Wait(100);//ペンを上げる
#define DCa(t) repeat(t) {OnFwd(OUT_A+OUT_C);Wait(1);Off(OUT_C);Wait(5);}Off(OUT_A+OUT_C);//円の描写(大)
#define DCb(t) repeat(t) {OnRev(OUT_A+OUT_C);Wait(1);Off(OUT_C);Wait(10);}Off(OUT_A+OUT_C);//円の描写(小)
task main () {
Bdn;DCa(90);Bup;//輪郭の描写
left(35);go(28);right(21);//口への移動
Bdn;DCb(8);Bup;//口の描写
right(36);back(45);right(60);//右目への移動
Bdn;back(18);right(36);back(18);Bup;//右目の描写
left(18);back(15);left(18);//左目への移動
Bdn;back(18);right(36);back(18);Bup;//左目の描写
left(40);go(50);left(25);//鼻への移動
Bdn;go(25);right(45);back(20);right(45);go(25);Bup//鼻の描写
left(18);go(60);right(30);//髪への移動
Bdn;repeat(6) {go(30);left(15);back(40);right(15);}Bup;//髪の描写
}
***完成した似顔絵 [#ra1a0c7a]
&ref(face.jpg);
左が実際に書かれた顔。
&ref(face2.jpg);
マジックでなぞると
左のようになる。
**Tのプログラム [#q6dcdc72]
僕等の似顔絵ロボットはAに接続したのモーターが右のタイヤを、Bのモーターがペンを、Cに接続したモーターが左のタイヤを動かす設計になっています。
今回のプログラムで使用したマクロ
#define set SetPower(OUT_A+OUT_C,3);SetPower(OUT_B,1)//車輪とペンのモーターの市出力設定
#define gomae(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);//前進
#define r(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);//右旋回
#define l(t) OnRev(OUT_C);OnFwd(OUT_A);Wait(t);Off(OUT_A+OUT_C);//左旋回
#define set SetPower(OUT_A+OUT_C,3);SetPower(OUT_B,1)//車輪とペンのモーターの出力設定
#define gomae(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C);//100分のt秒前進するマクロ
#define r(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);//100分のt秒右旋回するマクロ
#define l(t) OnRev(OUT_C);OnFwd(OUT_A);Wait(t);Off(OUT_A+OUT_C);//100分のt秒左旋回するマクロ
今回はシャープペンシルを用いたためペン下げのプログラムにはOffの定義がなく、常に下方向に力が加わり比較的濃く書けるようになっている
#define bdown OnFwd(OUT_B);Wait(20);//ペン下げ
#define bup OnRev(OUT_B);Wait(15);Off(OUT_B);ペン上げ
ここからが行動のプログラム
task main (){set;bdown;Wait(5);//出力固定
出力固定とペン下げ
task main (){set;bdown;Wait(5);//これにより筆圧が上がる
repeat(18){OnFwd(OUT_A+OUT_C);Wait(3);Off(OUT_C);Wait(18);}gomae(20);//輪郭の描写
repeat(18){OnFwd(OUT_A+OUT_C);Wait(3);Off(OUT_C);Wait(18);}gomae(20);
l(40);gomae(10);bdown;repeat(15){OnFwd(OUT_A+OUT_C);Wait(5);OnRev(OUT_C);Wait(6);}//眼鏡の描写
l(60);gomae(10);bdown;repeat(15){OnFwd(OUT_A+OUT_C);Wait(5);OnRev(OUT_C);Wait(6);}
bup;gomae(10);l(140);//目の描写
gomae(35);bdown;gomae(20);bup;gomae(12);bdown;gomae(32);bup;gomae(12);bdown;gomae(20);bup;gomae(20);
l(180);gomae(10);bdown;repeat(15){OnFwd(OUT_A+OUT_C);Wait(5);OnRev(OUT_C);Wait(6);}//眼鏡の描写
l(60);gomae(10);bdown;repeat(15){OnFwd(OUT_A+OUT_C);Wait(5);OnRev(OUT_C);Wait(6);}
l(150);gomae(60);r(90);bdown;gomae(20);l(20);bdown;gomae(15);//鼻の描写
r(20);gomae(30);l(100);bdown;//口の描写
repeat(12){OnFwd(OUT_A+OUT_C);Wait(4);OnRev(OUT_C);Wait(6);}
repeat(2){OnFwd(OUT_A+OUT_C);Wait(4);OnRev(OUT_A);Wait(6);}
l(80);gomae(150);l(120);//髪の描写
repeat(4){l(180);bdown;gomae(30);r(180);bdown;gomae(30);}
Off(OUT_A+OUT_B+OUT_C);//終了
}
***完成した似顔絵 [#r0b4d6c4]
#ref(2009a/A10/課題1右/2009052119040000.JPG,50%)
シャープペンシルで書いたため薄いですがご了承ください。
#ref(2009a/A10/課題1右/2009052119060000.JPG,50%)
**Hのプログラム [#z71b7f92]
#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 right(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C);//右に旋回
#define left(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C);//左に旋回
#define Bdn OnFwd(OUT_B); Wait(16);Off(OUT_B);//ぺんを降ろす
#define Bup OnRev(OUT_B); Wait(16); Off(OUT_B);//ぺんを上げる
#define DC(t) repeat(t) {OnFwd(OUT_A+OUT_C);Wait(1); Off(OUT_C); Wait(10) ; }Off(OUT_A+OUT_C)円を描く
task main () {
Bdn ; DC(52); Bup;//輪郭を描く
Wait(50);
left(60); Bdn;go(25);Bup;//左目を描く
Wait(50);
go(25);
Wait(50);
Bdn;go(25);Bup;//右目を描く
Wait(50);
right(35);
Wait(50);
back(40);
Wait(50);
Bdn;repeat(25) {OnFwd(OUT_A);Wait(6);OnRev(OUT_C);Wait(6);}Off(OUT_A+OUT_C);//口を描く
}
***完成した似顔絵 [#h91922e0]
#ref(2009a/A10/課題1右/hi3f0060.bmp)
*感想 [#f2b5ff48]
M:時間がなく細かい調整ができなかったのが残念でした。プログラミングの基本が覚えられてよかったです。
T:時間がなく期限日の木曜日はほぼ一日パソコンに触っていました。プログラミングを考えるのは楽しかったが、マクロの使用による行動時間設定を細かくするのが大変で、空き時間丸一日を使っても足りなかった。今度は安定した行動をする、プログラムとロボットを作りたい。
H:あまり時間を割くことができずちょっとシンプルな顔になっちゃったけど、
無事に似顔絵ができてよかったです。今度作るときはもっと複雑な、より似顔絵らしく描きたいと思います。
*コメントお願いします [#if728242]
- マクロを使えているのは良いと思います。ロボットの説明には写真や図を使った方がわかりやすいと思います。 -- [[FI]] &new{2009-05-21 (木) 19:30:17};
- たった今全ての作業を終了致しました。氷菓の -- [[製作者T]] &new{2009-05-21 (木) 19:37:13};
- 失礼しました。評価のほどよろしくお願いします。 -- [[制作者T]] &new{2009-05-21 (木) 19:38:07};
- ロボットの製作過程がアツく詳しく素晴らしいです。ただプログラムの説明はちょっと寂しいです。似顔絵を似せるためにどこを工夫したのか、そしてそれはプログラムのどこかまで書けるとより良くなると思います。 -- [[こさか]] &new{2009-05-21 (木) 23:01:54};
- 後からマジックでなぞらなくても、はっきりと線が描けるように工夫してください。 -- [[松本]] &new{2009-05-22 (金) 11:04:33};
#comment