[[2006b/A1/ROBOTICS]] [[2006b/A1/課題1左]] *課題 字を書くロボット [#f526d46c] #contents *ロボットと作品 [#e5a82e6f] 2つのギアでキャタピラを動かし、残り1つのギアでペンを動かします。ゴムを使い2本の棒を回転させ、アームを動かします。 #ref(robo 006.jpg) #ref(robo 001.jpg,right) *苦労した点 [#o2a55cc5] +ペンをどう上げ下げさせるか。 --モーターとギアをうまくつなぎ合わせることができなかった. +アームが安定しない --動かす度にグラグラと揺れていた。 +ペンを下ろすスピード速すぎかも。 +モーターを回すとペンが勝手に戻る・・・ +旋回後のペンの位置 --キャタピラは旋回すると旋回前より前の方向にペンの先がいってしまうので、旋回後にバックするなどして微調整するのに時間と労力くを費やした。 +時間がない --空きコマは常にロボと格闘していたような気がする *解決策、工夫した点 [#qfd34dae] +苦労した点1を解決するために --相方のひらめきによって完成。結局ゴムを使ってアームの2点を動かすようにした。&ref(robo 003.jpg); +苦労した点2を解決するために --3つ、穴付きのブロックで固定し、安定性が保てるようにした。&ref(robo 008.jpg); +苦労した点3を解決するために --スピードはかえれないので、モーターの動きをかなり短くしてみた。 +苦労した点4・5を解決するために --大きさの違うローラーを使っていたため、ゴムの伸び縮みで元に戻ってしまう事に気づき同じ大きさのローラーを使うことで解決。 #ref(robo 002.jpg) --回りすぎてしまわないようにストッパーをつけた&ref(robo 007.jpg); +苦労した点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(); //右へ90度旋回 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(); //右へ90度旋回 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); //停止 } *皆さんからのコメント・アドバイス [#b1711766] #comment