- 追加された行はこの色です。
- 削除された行はこの色です。
[[2009a/A1/課題1左]]~
目次
#CONTENTS
*課題内容:お絵描きロボットを作ろう [#sfb2afbe]
<各自でお絵描きロボットをつくり、パートナーの似顔絵を描く。
<ペンの装着方法にも工夫をする。
*メンバー [#y637f0a5]
<DAN : COOL~
わかば : いいんちょ
*ロボットについて [#eaa7e4cf]
**コンセプト [#ma298d33]
<「人間の顔はマルじゃない!!(DAN)」という思いから生まれた僕らのロボットのコンセプトは、一言で表すと『XYZの三軸一体論』(笑)です。~
3つのモーターをそれぞれの軸に使い、各軸が独立して可動できるように工夫しました。~
まぁぶっちゃけると円や輪郭をかくプログラミングが面倒なので各軸の前進・後進のみで楽に線をかけるロボットを作っただけです^^;~
**構成案1; 「点から線へ…、ロボットの二次元化」[#dc73ff3a]
< 「みんな“点”だな」と周りのグループや過去の作品を見ていて思いました。僕らが言う“点”というのは、ペンをつけたロボットをいろんな方向に動かしているだけの様子を指します。じゃあ僕らは“線”で行こうと思い、軸をつかえば線はきれいに書けると考えました。~
軸をつくることでそれぞれの軸の動きを互いにさせたり、個々にさせたりすればいろんな線や形が描けるし、なによりプログラミングが簡単になると思いました。また軸をつくることは簡単で前後と左右の運動を別々にすれば軸がつくれると考えました。
< 何を言っているのかよくわからないかもしれませんが、とりあえず僕らが作ったロボットを見ればわかると思います(^^)
***機体名「DAW初号機」 (命名:わかば) [#ob8090e9]
#ref(GRL_0001.JPG)
<DAWとは、DANのDAとわかばのWをとってつけました。初号機は……某アニメのパクリです、スイマセン(-_-;)
<まあそれは置いといて、とりあえずロボット構成の説明をします。~
あ、ちなみに二つ名は「ガチョーん」(命名:DAN)です。
***足と腕と手 [#jedb5b6f]
< 写真を見ればわかるかと思いますが、キャタピラが足、横に伸びているアームが腕、その先端部のモーターが手、とロボットを3つの部分にわけてそれぞれを1つのモーターで独立して可動できるようにしました。これで足が前後、アームが左右の軸をつくり、先端部のモーターがペンを上げ下げするようにしました。
< キャタピラは付属の説明書のつくり方と同じようにつくり、そのあとモーター1個で両方が同時に動くようにするため
#ref(PA0_0003.JPG)~
↑↑のように真ん中のギヤを長い棒でつなぎました。キャタピラは前後に動かすだけでよいので、左右のギヤの動きが同じにするためこのように工夫しました。
< 次にアームですが、アームはタイヤのゴムを利用して左右に動かそうと考えました。アームは細長いブロックを2本上下に重ねて横に寝かせてつくりました。~
#ref(PA0_0002.JPG)~
これはブロックの凹凸でアームががたがた揺れないようにするためと、下の部分を平らにして滑りを安定させようと思ったからです。
< ペンの装着は少し大変でした。ペンの装着部分にはモーターをつけなければならないため、必然とアームの先端が重くなってしまい下に垂れさがってしまいました。そのためペンの装着はできるだけ簡略にしました。~
#ref(PA0_0005.JPG)~
ぎざぎざのブロックと薄い板のブロックでペンを四方から囲み、それをゴムで止めるというかなり簡単な仕組みであまり重くならないようにし、またそれを支えるための外枠も細いブロックで囲うようにしました。~
ただそれでも先端部は垂れ下がってしまうので2本の棒を支柱として使うことにしました。
***問題点 [#pa7c4429]
<ここまで完成していざやってみようとすると次の問題点が出てきました。
< ● NQC本体とキャタピラがすぐ外れる~
● アームの可動部分のタイヤがもろい・強度が弱い~
● アームが前後にずれる~
● キャタピラで線がガタガタ~
● ペンが安定しない(たまに落ちる)~
● コードがタイヤにひっかかる
<特に問題となったのは『アームが前後にずれる』ことです。アームが伸びきっているときにロボットが前進するとアーム先端が重いため、アームが後ろにずれてしまいました。~
「これじゃまともなプログラミングも意味がない…orz (わかば)」ということで、さらにロボットを作り変えることにしました。
**構成案2; 「二次元構造には無理があるのか??」 [#ld03879d]
<そもそもブロックの数も限られて細かい部品が多い中でアームを伸ばしたりロボットを安定させられるような装置をつくれるのか?また普通に動かしても壊れないような強度を保つことができるのか?ということが初号機を製作しているときに問題となりました。
しかし僕らのロボットに求めることは「できる限り簡単なプログラミングで似顔絵が描ける仕組み」ことであり、いちいちロボットを方向転換するためにプログラミングを複雑に考えていかないといけないのは大変だと考えたため、やはり前後・左右の二次元方向が確立できるようなロボットをつくろうと思いこのままの方針でロボットをつくりなおすことにしました。
***改良部分 [#e1b24dd0]
<初号機で問題となった点を重点的に改善していく形でロボットをつくりかえました。改良を加えたことは
< ● キャタピラではなくタイヤをつかってロボットを安定させる~
● アームを横にしないで、さらに4つのタイヤでアームをはさむ~
● ペンの装着部分はしっかりと安定させる~
● 名前は「初号機」ではなくて「弐号機」にしよう(わかば)
<です。特に2つ目の4つのタイヤでアームをはさむことに重点を置いて改良しました。(4つ目いりませんね…^^;)~
それでは改良を加えた点を順に説明していきます。
<&size(20){≪キャタピラからタイヤに交換≫};
< 足がキャタピラのとき、前後に移動したときにロボットが揺れるため線がガタガタになるという問題が起きました。またキャタピラだと車体が大きくなってしまうためロボットが安定して動けないという問題もありました。そこで無理にキャタピラをつかわず、4つの中くらいのタイヤをつかってロボットを安定させるようにしました。~
またさらにタイヤに交換すると同時にNQC本体の場所も変更しました。~
#ref(PA0_0006.JPG)
#ref(PA0_0007.JPG)~
NQC本体の前にモーターを置いたのは、前のスペースにアームの可動部分をのせるためです。またこれで初号機と比べてロボットの重心が低くなり安定した動きができるようになると考えました。
<&size(20){≪4つのタイヤでアームを可動≫};
< 初号機はアームを横に寝かせて、上からタイヤ2つで押さえつけているだけの状態でした。ブロックを横にした場合長さと高さが合わなくなったりしてうまくいきませんでした。そのため弐号機ではアームを同じ向きにして4つのタイヤでちゃんと固定し、モーターでタイヤを回して可動できるようにしました。~
#ref(PA0_0008.JPG)~
このときタイヤは1つだけ回るようにすれば、ほかのタイヤはアームを固定しながら回転できるため写真のようなかたちにつくりました。
<&size(20){≪ペン装着部分をしっかり固定≫};
< アームのブロックの向きを変えたことによってペンの装着部分の補強が簡単になり、それに加えてペンの装着方法を少し変化させました。~
#ref(PA0_0011.JPG)~
細長いブロックに2つのゴムで巻きつけることで結構頑丈になって滑り落ちることをなくしました。ただ、また初号機と同じように…いや、それ以上ですが先端がずいぶんと重くなってしまったようで…orz 一応2本の棒を支柱として支えをつくりました。
<
< ~
とりあえず全部を装着し、これでうまく線が描けるかどうか試してみました。
***お、重い…アッ!?腕つった!! [#i246120a]
< 「いけるか?いけるか〜!?お!?アーッ!?」とあつくなりながらロボットの動きを見ていたところ、いやな問題がおきました。~
ロボットがアームを伸ばした状態で後進したとき、先端が重すぎるためかアーム部分が外れて線がずれてしまったのですョ…(:_;)~
#ref(PA0_0013.JPG)~
この問題を解決するため、アームの強度を強くしようということで2本のブロックの間を~
#ref(PA0_0000.JPG)~
この部品でくっつけて強度を強くしました。
<またアームの可動部分のギヤがアームのくぼみにひっかからないように~
#ref(PA0_0017.JPG)~
このような部分をつくりアームがひっからないようにもしました。
***完成!!? [#qfece1db]
<やっとこさ完成しましたョ!!~
#ref(CIMG0047.JPG)
<一応これでロボットは完成したと思うのですが………~
もうレポートやなにやらの〆切が近いため、その他ちょっとした問題はあとまわしで残りはプログラミングのみとしたいです………(わかば)~
*ぷろぐらみんぐ(?_?) [#o6bc98f8]
<わかばのプログラミング~
<僕らのロボットはプログラミングでモーターの回転時間(つまりWaitの時間)を変えるだけで線を描く位置を簡単に指定できるのが有利な点でした。~
ただその反面、描けるのが線であるため曲線や斜めの線がうまく描けないというのが不利な点でした。~
そこで前後左右の2つのモーターを交互に動かしたり、1つだけ動かし、それをリピートで繰り返すという方法で対応しました。
<●わかばのプログラミング~
ロボットに機敏な動きをさせたとき、アームがついていかないので簡単な絵をかこうとおもいました。
#define A OUT_A
#define B OUT_B
#define C OUT_C
#define go(t) OnFwd(A);Wait(t);Off(A);
#define back(t) OnRev(A);Wait(t);Off(A);
#define right(t) OnFwd(B);Wait(t);Off(B);
#define left(t) OnRev(B);Wait(t);Off(B);
#define up(t) OnFwd(C);Wait(t);Off(C);
#define down(t) OnRev(C);Wait(t);Off(C);
#define go(t) OnFwd(A);Wait(t);Off(A); // t秒間前進
#define back(t) OnRev(A);Wait(t);Off(A); // t秒間後進
#define right(t) OnFwd(B);Wait(t);Off(B); // t秒間アームを右に伸ばす
#define left(t) OnRev(B);Wait(t);Off(B); // t秒間アームを左に伸ばす
#define up(t) OnFwd(C);Wait(t);Off(C); // t秒間ペンを上げる
#define down(t) OnRev(C);Wait(t);Off(C); // t秒間ペンを下げる
<前後・左右・上下の動きを分けるため#defineで簡単な単語に定義しました。
<#defineで簡単な単語に定義してロボットの前後、左右、上下の運動を別々にして簡略にしました。
task main()
{
Wait(100);down(5);
left(200);
Wait(100);down(5); // 1秒後にスタート
left(200); // 髪の毛を描く リピートはななめの線
repeat(10){
OnFwd(A+B);Wait(3);Off(A+B);right(2);}
right(150);Wait(10);
right(150);Wait(10);
back(120);
back(120); // 顔の輪郭を描く
left(100);
repeat(10){
OnRev(B);OnFwd(A);Wait(2);Off(A+B);left(3);}
go(72);back(2);
go(72);back(2);up(5);Wait(20);
up(5);back(25);down(5); // ペンを持ち上げてメガネの描き始め開始点に移動
back(25);down(5);right(50);go(25);
right(50);back(25);right(50);up(5);Wait(20);
right(50);go(25); // 左部分のメガネのフレーム
right(50);back(25);right(50); // 右部分のメガネのフレーム
left(75);down(5);back(20);up(5);
up(5);Wait(20);left(75);down(5); //鼻のラインの開始点に移動
back(15);right(25);down(5);left(50);up(5);
back(20);up(5); // 鼻のラインを描く
}
back(15);right(25);down(5);left(50);up(5); // 少し下に移動して口を描く
} // 終了
<このプログラミングでできた似顔絵がこれ↓↓~
#ref(PA0_0019.JPG)~
ウムム…線が途切れてますね(顔右側とメガネ)~
やはりアームを伸ばした状態で前後に動くとアームの負荷が大きくなるようです。またそのせいであとにつながる線もずれてしまいました。~
しかし意外にも斜線がうまく描けていたことがよかったです。
<DANのプログラミング~
#define A OUT_A
#define B OUT_B
#define C OUT_C
#define go OnFwd(A)
#define back OnRev(A)
#define right OnFwd(B)
#define left OnRev(B)
#define up(t) OnFwd(C);Wait(t);Off(C);
#define down(t) OnRev(C);Wait(t);Off(C);
#define o Off(A+B+C)
#define w(t) Wait(t)
<●DANのプログラミング~
<曲線をなんとかうまく描くため、繰り返しの部分を多く使いました。また、動作が切り替わる時に少し時間をあけて行うように途中途中で゛Wait″を入れました。
#define go OnFwd(OUT_A) // 前進
#define back OnRev(OUT_A) // 後進
#define right OnFwd(OUT_B) // アームを伸ばす
#define left OnRev(OUT_B) // アームを戻す
#define up(t) OnFwd(OUT_C);Wait(t);Off(OUT_C); // ペンを下ろす
#define down(t) OnRev(OUT_C);Wait(t);Off(OUT_C); // ペンを上げる
#define o Off(OUT_A+OUT_B) // モーターを止める
#define w(t) Wait(t) // t秒間待つ
<
task main()
{
w(100);down(7);
repeat(3){
repeat(3){ // 前髪のギザギザを表現
repeat(15){
left;go;w(1);o;left;w(1);o;}w(20);
repeat(15){
left;back;w(1);o;left;w(1);o;}w(20);
}
repeat(15){
left;go;w(1);o;left;w(1);o;}w(20);
repeat(15){ left;go;w(1);o;left;w(1);o;}
w(20);
repeat(5){
repeat(5){ // 髪の毛全体を表現
right;go;w(9);o;right;w(7);o;}
right;w(88);o;
repeat(10){
right;back;w(2);o;right;w(3);o;}
down(2);back;w(80);o;
down(2);back;w(80);o; // 顔右側を表現
repeat(30){
repeat(30){ // あごのラインから顔左側にかけてを表現
left;back;w(1);o;left;w(1);o;}
left;w(60);o;
repeat(30){
left;go;w(1);o;left;w(1);o;}
go;w(45);o;up(5);back;w(8);o;
right;w(30);o;down(5);right;w(40);o;up(5);
right;w(30);o;down(5);right;w(40);o;up(5);
right;w(30);o;down(5);right;w(40);o;up(5); // 左目
right;w(30);o;down(5);right;w(40);o;up(5); // 右目
left;w(70);o;
back;w(20);o;down(5);back;w(20);o;up(6);
left;w(70);o; // 鼻のラインを表現
back;w(20);o;down(5);
back;w(20);o;up(6);
back;w(20);o;down(6);
back;w(20);o;down(6); //笑っている口を斜めの線で表現
right;w(40);o;
repeat(5){
right;go;w(1);o;right;w(2);o;}
left;w(68);o;up(5);
<できた似顔絵はこんな風になりました。
#ref(PA0_0018.JPG)~
右側がずれました…(/_;)残念です。~
わかばの時もですがアームが伸びきっているときは線がうまく描けないみたいです。~
ただ髪の毛のギザギザをうまく描けたのはとてもよかったのではと自分では思います。~
あと口の笑った感じを描けたのは本当によかったです。
*まとめ [#mf497e31]
<今思えばみんなが作っているようなロボットで似顔絵をかけばよかったかなと思ってしまいます。自分たちが作ったロボットは、なかなか機敏な動きができないとか、たまに線の長さがおかしくなるなど様々な問題が生じて大変でした。あと弐号機に改良しようと考えたのは第5回の授業が終わった後で、実際は1週間でロボットをつくりなおし、プログラミングを変更し、最後にこのホームページをかいたということで、かなり大変でした。
ていうか、このまとめの部分書いているのは〆切10前と…^_^; アッ!!いまチャイムなっちゃってます。とりあえずこんなかんじでうまくできた(?)かなと思います。
**コメントください* [#t91f08ee]
<授業はじめてのロボット製作でなかなかわからないところや難しいところがたくさんありました。またこんな課題報告ページの作成ももっと伝わりやすくかけよと自分たちでも思うところが多々あります。ただこんなページを見てもらった方になにかコメントやご指摘を受けることができれば、これからの参考にしていきたいと思っていますのでぜひよろしくお願いします。m(__)m よし!!間に合った〜!!
- コンセプトやロボットの説明は素晴らしいですが、プログラムの説明がちょっと寂しいです。似顔絵の画像などもあるといいですね。それと、「ひとりにつき一つ以上のプログラムを作成すること。」の条件がありますのでもうひとつプログラムが必要です。 -- [[こさか]] &new{2009-05-21 (木) 22:04:33};
- 面白いアイディアのロボットだと思います。しかし、プログラムが一つしかありませんし、その説明もありません。また、必ずしも必要ではないですが具体的な図形などを考えて自分たちのロボットと他の人達のロボットとのメリット、デメリットを考察すれば、より深いレポートになると思います。 -- [[FI]] &new{2009-05-22 (金) 11:04:21};
- ロボットの説明は詳しくてとてもよいと思います。プログラムの説明も書けています。あとはせっかくオリジナルなロボットを作ったので、自分たちのロボットと他の人達のロボットとのメリット、デメリットを考察すれば、より深いレポートになると思います。~
例えば、このロボットではどんな工夫をすれば曲線が書けるでしょうか? -- [[FI]] &new{2009-06-12 (金) 22:27:52};
- 似顔絵に味があってすてきです。アームにお悩みならば、このPukiWiki内を「達筆ロボ」で検索すれば幸せになれるかもしれません。 -- [[こさか]] &new{2009-07-02 (木) 21:39:03};
#COMMENT