''チームメンバー こだま&きたざわ'' &size(30){'''もくじ'''}; #contents *今回の課題について [#s3e704a4] 今回はお絵かきロボットを作成しました。詳しい課題内容は[[課題1:http://yakushi.shinshu-u.ac.jp/robotics/?2010a%2F%CE%FD%BD%AC%CC%E4%C2%EA#kadai1]]をご覧ください。 *作成したロボット [#d6840f79] &ref(./ロボ2_2010_A8_右.JPG,100%,完成したロボット); &ref(./ロボ1_2010_A8_右.JPG,100%,完成したロボット(横ver)); 小型かつ、そこそこ強度にも優れた出来に仕上がりました。 正面(タイヤが付いているほう)から見て、左上のタイヤにモーターが付いています。 主にペンの上げ下げにつかいます。 線を描くときには、描いている最中にボールペンが上にいかないよう、弱い力で抑え続ける役目もあります。 *工夫した点 [#w63a74c5] **ボールペンの固定の仕方 [#v11f72db] &ref(./ロボ3_2010_A8_右.JPG,100%,4個のタイヤ); &ref(./ロボ4_2010_A8_右.JPG,100%,4個のタイヤ(ボールペン装着ver)); 4個のタイヤを使うことで、スムーズにペンが上下に動くようになりました。 **部分ごとに作り分け [#k718c12f] &ref(./ロボ5_2010_A8_右.JPG,100%,ロボ分解); 簡単にこの状態まで分解できます。 持ち運ぶときに便利です。 *苦労した点 [#t95ab77e] タイヤが回るようブロックの穴に、棒のパーツといっしょにタイヤを固定することにより、おのずとタイヤの固定可能位置が決まってしまいます。 これにより、タイヤとタイヤの間隔を、ボールペンがピッタリはまる間隔にすることが難しかったです。 いろんなタイヤのサイズを試したり、いくつかのボールペンで検証してみたことにより、 ピッタリな組み合わせを発見しました。 *プログラム [#o8705ba6] **こだまver [#q8e5c7da] プログラムが長くならないようにするために、マクロを使ってなるべく短くしてみました。 &ref(./似顔絵_アキヒロ.JPG,100%,ロボットが描いた絵); 口を傾けて少し表情をつけてみました。 本人には全然似ていません。 **きたざわver [#d426477e] マクロを使って、プログラム全体を簡略化するようにしました。 #define pen_up SetPower(OUT_B,7);OnRev(OUT_B);Wait(5);Off(OUT_B); #define pen_down SetPower(OUT_B,7);OnFwd(OUT_B);Wait(10);Off(OUT_B); #define go_straight(t) OnFwd(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define go_straight_write(t) SetPower(OUT_B,1);OnFwd(OUT_A+OUT_B+OUT_C);Wait(t);Off(OUT_A+OUT_B+OUT_C); #define go_back(t) OnRev(OUT_A+OUT_C);Wait(t);Off(OUT_A+OUT_C); #define spin_left OnRev(OUT_A);OnFwd(OUT_C);Wait(100);Off(OUT_A+OUT_C); task main() { repeat(2){ SetPower(OUT_B,1); OnFwd(OUT_A+OUT_B);Wait(350); Off(OUT_A); pen_up; go_straight(30); OnFwd(OUT_A);OnRev(OUT_C);Wait(90); go_back(30); pen_down; go_straight_write(100); } pen_up; go_straight(30); spin_left; go_back(30); pen_down; repeat(6){ SetPower(OUT_B,1); OnRev(OUT_A);OnFwd(OUT_B);Wait(50); SetPower(OUT_C,3); OnFwd(OUT_A+OUT_B);OnRev(OUT_C);Wait(50); Off(OUT_A+OUT_B+OUT_C); } SetPower(OUT_C,7); pen_up; spin_left; go_back(50); spin_left; repeat(2){ go_straight(30); pen_down; go_straight_write(30); pen_up; } OnRev(OUT_A);OnFwd(OUT_C);Wait(100); Off(OUT_A+OUT_C); pen_down; SetPower(OUT_B,1); OnRev(OUT_A);OnFwd(OUT_C+OUT_B);Wait(50); Off(OUT_A+OUT_B+OUT_C); } &ref(./似顔絵1_2010_A8_右.JPG,100%,実際にロボが描いた絵); こんな感じに描けました。 *今回の感想 [#g9f44a74] **こだま [#g2c41875] プログラムを作るのは、初めてで簡単な似顔絵を描くだけでもとても苦労しました。 自分が普通にしている書くということがロボットにやらせてみると、思った以上に大変でした。 時間の関係もあって、かなり簡単なプログラムでもっと改良できた思っています。次はもう少し凝った物を作りたいと思います。 **きたざわ [#se552ae3] 初めての作業が多く、大変でした。特にプログラミング。 最終的に、そこそこ顔に見えるレベルにまではいけてよかったです。 *コメント [#w558f5a7] #comment