目次
A3の紙に相棒の似顔絵を書くロボットを作成せよ。
・ひとりにつき一つ以上のプログラムを作成すること。
・ペン以外はキットに含まれる部品を使うこと。
・キットに付属の高価な輪ゴムは切れやすいので切れないように十分注意すること。
・改良や調整をしやすくするため、ロボット本体だけでなく、プログラムについても可能な部分についてはサブルーチンや関数、マクロなどを使って部品に分けること。
・舩山 蔵
・馬場 将寿
・軽量化よりもより安定で正確なロボを制作する。
・頑丈であることも大事。
・何回やったとしても失敗しないロボを作る。
・協力してロボを作りあげる
・左右対称ではない。その方がバランスをとれて安定する。
・タイヤを使ったことによって大きくなっていまった。しかし、アームを動かす時の揺れの低減には仕方がなかった。
・何本もの棒で支えてペンを取り付けることに成功した。
アーム正面
・しっかりと二個のタイヤで固定されている。そのことでペンでまっすぐに書ける。
アーム上
・最初はペンを棒で挟んで取り付けていたが、安定感がなかった。なので、二つのタイヤで挟み安定感を増すことに成功した。
・土台は講義で最初に作った一番シンプルなものにした。
・それだけでは重心が保たれずペンを上げるたびに揺れてしまい不安定だった。なので前後に違う大きさのタイヤを付けることよって安定感が増した。
・全体的に大きくなったが、持ち運びはこのようにして分解して運ぶ。
・慎重に扱わないと分解してしまうことがある。
・安定感は増したが、タイヤをつけすぎたために重くなってしまった。
・タイヤが多いことで紙を巻き取ってしまい、紙を支える必要がある。
・ときどきプログラムが送ることができない時があって、ロボが動かないことがあった。
・すぐに分解してしまうので、頑丈にブロックをかためた。
・タイヤをつけた分、他のいらないパーツをできるだけはずして軽量化に成功した。
・紙はガムテープでとめたのでうまくいった。
・距離やパーツをかえたりしたことによってスムーズにプログラムを送ることにできた。
マクロを使ってプログラムを簡単にした
#define go(t) OnFwd(OUT_A+OUT_C);Wait(t); //t秒間前進 #define back(t) OnRev(OUT_A+OUT_C);Wait(t); //t秒間後進 #define right(t) OnRev(OUT_C);Wait(t); //t秒間右回り #define left(t) OnRev(OUT_A);Wait(t); //t秒間左回り #define up(t) OnFwd(OUT_B);Wait(t); //t秒間アームを上げる #define o Off(OUT_A+OUT_C); //本体が止まる #define s Off(OUT_B); //アームが止まる task main() {
//最初は顔の輪郭// OnFwd(OUT_A);Wait(900); //これで円を書く。これが輪郭 Off(OUT_A); //動きが止まる repeat(4){ //{}の中を四回繰り返す //この動作を繰り返し髪の毛を書く// right(50);o; left(50);o; //ここでジグザグに書く } //ここから目を書く// up(20);s; //アームを上げる OnFwd(OUT_A);Wait(100);o; //右に曲がる up(10);s; OnFwd(OUT_A);Wait(20);o; OnFwd(OUT_C);Wait(80);o; //今度は左に曲がる go(90);o; //前進 up(13);s; //アームを上げる back(160);o; //後進する。ここで右目を書く up(18);s; //アームを上げる go(150);o; //前進する。ここで左目を書く //ここから鼻を書く// up(16);s; go(50);o; //前進する up(20);s; right(160);o; //右に曲がる up(5);s; back(50);o; //後進する go(60);o; //前進する。ここで鼻を書く //ここから口を書く// up(20);s; go(170);o; //前進する up(15);s; left(140);o; //左に曲がる back(90);o; //後進する。これで口を書く } //これで終了//
・最初は人の顔にすらなっていなかったが、何回もプログラムを修正して現段階にたどりついた。
・たまにプログラムどおりにいかないときがあった。
・髪の毛はよくできたと思うが、輪郭を円にするという楽な道にいってしまった。
・あごやほほなどちゃんとした人の顔がかけなかった。
・鼻や口の位置や大きさを全体のバランスとして考えたほうがよかった。
プログラムを簡単にするために、マクロを使いました。
#define pen_up OnFwd(OUT_B);Wait(25);Off(OUT_B); //ペンを上げる #define pen_down OnRev(OUT_B);Wait(15);Off(OUT_B); //ペンを下げる #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 left(t) OnRev(OUT_A);OnFwd(OUT_C);Wait(t);Off(OUT_A+OUT_C); //左に曲がる #define right(t) OnFwd(OUT_A);OnRev(OUT_C);Wait(t);Off(OUT_A+OUT_C); //右に曲がる
task main () { go(220); //前進して、髪の毛の部分を書く OnFwd(OUT_A);Wait(920); //円を書いて、顔の輪郭を書く。 Off(OUT_A); pen_up; right(110); go(50); right(110); go(30); pen_down; back(70); //右目を書く pen_up; back(40); pen_down; back(70); //左目を書く pen_up; go(120); left(30); pen_down; left(120); //口を書く }
・円が大きくなりすぎて、顔の輪郭が紙からはみ出してしまった。
・鼻や眉毛を書きたかったが、時間がなく諦めた。
・会える時間帯が少なく、個人で制作する時間が多くなってしまった。
・お互いに時間をぬって、話し合いながらプログラムをつくりレポートを完成することができた。
・だが、授業でよく議論し協力してロボを作ることができた。
・初めてのロボの課題にしてはよくできたと思う。
.この課題によって、ロボットの制作とプログラミングには時間がいり、難しいことがわかった。
.今回の課題を忘れずにさらに上を目指した行きたい。