#contents *課題 [#re996b5d] 書道ロボット「木」、「水」の作成 *注意点 [#q7fa061c] ・四画以上の漢字を書く ・書き順を守る ・ペン以外キットに含まれているものだけでつくる ・ゴムは切れやすく高価なため丁寧に扱う *ロボット写真 [#y7223fb6] &ref(2007b/A2/課題1左/06-11-07_2039.jpg); 前方から見た図、黄色のパーツの間にゴムでペンを固定 &ref(2007b/A2/課題1左/06-11-07_2040.jpg); → &ref(2007b/A2/課題1左/06-11-07_2041.jpg); アームを下げたとき アームを上げたとき *機構 [#c03759f2] 前後にペンを動かすことにより、人の腕に近い角度で字を書くことができるようにした。欠点としてはペンをマシンの中心で上下させるロボットに比べ、ブレが大きく、時間の調整が大変だった。タイヤを近づけることにより小回りがきくようにした。 *工夫した点 [#pc76376e] ・初期はアームを左右に動かすようにしていたが、前後の方がペンのずれが小さいのでそのように変えた。 ・輪ゴムを1本ではなく複数クロスさせることによりペンをより強く固定できた。 ・不要な部品を極力減らすことにより、モーターに負荷をかけさせず誤差を少なくした。 ・アームが上がっているときに見える緑のパーツにより、ペンの角度が垂直になるよう調整できた。 ・前輪が紙を巻き込むことが判明したため実際は写真とタイヤの前後を変えました。 *プログラム「木」[#lbc50a97] 木を書き順通りに書きます。移動はその場で回転したあと、直進するようにしました。 #define PEN_TIME 20 //ペンを上げている時間 sub pendown() //ペンを下ろす { OnFwd(OUT_B); Wait(20); Off(OUT_B); } sub penup() //ペンを上げる { OnRev(OUT_B); Wait(20); Off(OUT_B); } sub turn_right() //方向転換 { OnFwd(OUT_A); OnRev(OUT_C); } task main() { SetPower(OUT_B,2); //モーターB、ペンの上下機構の出力を2に設定 pendown(); //1画目「ー」部分 turn_right(); Wait(130); Off(OUT_A+OUT_C); penup(); OnFwd(OUT_A+OUT_C); //線を書かずに2画目「|」へと移動 Wait(120); turn_right(); Wait(150); OnFwd(OUT_A+OUT_C); Wait(170); Off(OUT_A+OUT_C); pendown(); //2画目 turn_right(); Wait(220); Off(OUT_A+OUT_C); penup(); turn_right(); //線を書かずに後退、3画目「/」へと移動 Wait(184); Off(OUT_A+OUT_C); turn_right(); Wait(180); OnRev(OUT_A+OUT_C); Wait(145); pendown(); //3画目「/」 turn_right(); Wait(100); Off(OUT_A+OUT_C); penup(); OnRev(OUT_A+OUT_C); //ペンを上げ、次の4画目「\」のため向きを変える Wait(177); Off(OUT_A+OUT_C); turn_right(); Wait(130); OnFwd(OUT_A+OUT_C); Wait(97); pendown(); //4画目「\」 turn_right(); Wait(100); Off(OUT_A+OUT_C); penup(); //ペンを持ち上げて終了「木」完成 } *プログラム「水」 [#nc869fae] #define PEN_TIME 20 //ペンを上げている時間 sub pendown() //ペンを下ろす { OnFwd(OUT_B); Wait(20); Off(OUT_B); } sub penup() //ペンを上げる { OnRev(OUT_B); Wait(20); Off(OUT_B); } sub turn_right() sub turn_right() //方向転換 { OnFwd(OUT_A); OnRev(OUT_C); } task main() { SetPower(OUT_B,2); //モーターB、ペンの上下機構の出力を2に設定 pendown(); //1画目「ー」部分 turn_right(); Wait(60); Off(OUT_A+OUT_C); turn_right(); //線を書かずに2画目「|」へと移動 Wait(50); turn_right(); Wait(150); OnFwd(OUT_A+OUT_C); Wait(170); Off(OUT_A+OUT_C); pendown(); //2画目 turn_right(); Wait(220); Off(OUT_A+OUT_C); penup(); turn_right(); //線を書かずに後退、3画目「/」へと移動 Wait(184); Off(OUT_A+OUT_C); turn_right(); Wait(180); OnRev(OUT_A+OUT_C); Wait(145); pendown(); //3画目「/」 turn_right(); Wait(100); Off(OUT_A+OUT_C); penup(); OnRev(OUT_A+OUT_C); //ペンを上げ、次の4画目「\」のため向きを変える Wait(177); Off(OUT_A+OUT_C); turn_right(); Wait(130); OnFwd(OUT_A+OUT_C); Wait(97); pendown(); //4画目「\」 turn_right(); Wait(100); Off(OUT_A+OUT_C); penup(); //ペンを持ち上げて終了「水」完成 } *考察 [#q7319cbd] 時間が一つ一つの動きで異なるのでプログラムが長くなってしまった。しかしサブルーチンを使うことで、分量が減り全体として見やすくなった。またペンの動きが激しくなってしまったので、セットパワーでモーターの出力を変えた。 コメントをどうぞ [#ad6c3dfc] -ページの体裁をもう少し整えましょう。プログラムのソースが整形済みテキスト部から外れている部分がありますし、整形済みテキストにする必要の無いところまでそのようになっているところがあります。「整形済みテキスト」についてはヘルプを見てください。 -- [[まいける(TA)]] &new{2007-11-07 (水) 19:08:25}; -「前方から見た図、黄色のパーツの間にゴムでペンを固定」・「アームを下げたとき(クワガタ??) アームを上げたとき」「コメントをどうぞ」の3箇所は整形済みテキストにする意味はありません(ページを編集するさいに、行頭に半角スペースをいれると、ページを表示したときに青色の背景になる)。本来はプログラムソースや、他に何か意図のあるときに使う表示方法なので、直しておきましょう。 -- &new{2008-01-23 (水) 15:37:46}; #comment