[[2006b/A1/ROBOTICS]] *課題 字を書くロボット [#f526d46c] #contents *ロボットと作品 [#e5a82e6f] *苦労した点 [#o2a55cc5] +ペンをどう上げ下げさせるか。 --モーターとギアをうまくつなぎ合わせることができなかった. +アームが安定しない --動かす度にグラグラと揺れていた。 +ペンを下ろすスピード速すぎかも。 +モーターを回すとペンが勝手に戻る・・・ +旋回後のペンの位置 --キャタピラは旋回すると旋回前より前の方向にペンの先がいってしまうので、旋回後にバックするなどして微調整するのに時間と労力くを費やした。 +時間がない --空きコマは常にロボと格闘していたような気がする *解決策、工夫した点 [#qfd34dae] +相方のひらめきによって完成。 --1を解決するために、結局ゴムを使ってアームの2点を動かすようにした。 +苦労した点2を解決するために --3つ、穴付きのブロックで固定し、安定性が保てるようにした。 +苦労した点3を解決するために --スピードはかえれないので、モーターの動きをかなり短くしてみた。 +苦労した点4・5を解決するために --大きさの違うローラーを使っていたため、ゴムの伸び縮みで元に戻ってしまう事に気づき同じ大きさのローラーを使うことで解決。 --回りすぎてしまわないようにストッパーをつけた +苦労した点5を解決するために --旋回の前後に余分に動くことにしてみた。 *考察 [#l9da920b] -ロボットを作る時間とプログラムを作る時間が必要なため、時間との戦いになった・・・っていうか間に合わなかった。 -ロボットの動きにいろいろ微調整を加えたら動きが複雑になり、プログラムもわかりにくくなってしまった。 時間がかかってしっまた一つの原因かも知れない。 -そこでほんの少しシンプルにしてからプログラムを貼り付けさせてもらいました。 *プログラム [#gccbf06d] #define MOVE_TURN 165 //90度旋回時間 #define TURN_BACK 130 //旋回後微調整時間 #define AMARI 80 //旋回前微調整時間 #define TATE 60 //縦への移動時間 #define YOKO 100 //横への移動時間 sub turn_right() { OnFwd(OUT_C); OnRev(OUT_A); Wait(MOVE_TURN); Rev(OUT_A+OUT_C); Wait(TURN_BACK); Off(OUT_A+OUT_C); } //右への90度旋回 task main() { OnFwd(OUT_B); Wait(20); Off(OUT_B); OnRev(OUT_A+OUT_C); Wait(TATE); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(7); Off(OUT_B); //ここで一画目が終了 OnFwd(OUT_A+OUT_C); Wait(TATE); Fwd(OUT_A+OUT_C); Wait(AMARI); turn_right(); OnFwd(OUT_B); Wait(20); //ここから二画目:横 Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(YOKO); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(7); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(AMARI); Off(OUT_A+OUT_C); turn_right(); //右へ90度旋回 OnFwd(OUT_B); Wait(20); Off(OUT_B); OnFwd(OUT_A+ OnFwd(OUT_B); Wait(20); //二画目:縦 Off(OUT_B);OUT_C); Wait(TATE); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(10); Off(OUT_C); OnFwd(OUT_A+OUT_C); Wait(AMARI); turn_right(); OnFwd(OUT_A+OUT_C); Wait(YOKO); Off(OUT_A+OUT_C); OnRev(OUT_A+OUT_C); Wait(YOKO);//三画目 Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(10); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(AMARI); Fwd(OUT_A+OUT_C); Wait(34); turn_right(); OnFwd(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(20); Off(OUT_B); OnRev(OUT_A+OUT_C); Wait(200);//四画目 Off(OUT_A+OUT_C); //停止 }