しかし、最後に逆回転する現象は完全に解決していません。
そこで、先ほどのプログラムを改良します。 加速減速レートを0.3→0.1に変更してみました。モーターの回転が遅くなれば逆回転が発生しなくなると予想したためです。
プログラムの実行結果がこちらです。
予想どおり、逆回転が発生しなくなりました。一応、これで解決になるのですが、ゴールへの到着が前よりも遅くなってしまいました。
あと、細かい話ですがグラフが左右対称ではないので気持ちが悪いです。
距離とパワーの関係をグラフにすると、こうなります。 加速減速レートが低いとパワーは100%に達しないので、台形にはなりません。
モーターのパワーが弱すぎたため、ロボットの加速に時間がかかりすぎて、グラフのバランスが悪くなったようです。
最終的に完成したプログラムがこちらです(fow600mm5.ev3)。
改良点としては、モーターブロックの「オフ」の設定を「ブレーキ」じゃなくて「惰性運転」に変更しました。加速減速レートは最初の0.3に戻しています。
ブレーキをかけると、その場に踏み止まろうとしてモーターの逆回転が発生してしまいます。惰性運転に変更すれば、逆回転はなくなりますが、今度はモーターが正確な位置に止まれません。ジレンマに悩まされます。
解決策としては、ゴール地点を実際よりも手前に設定してモーターの回転を早めに落とすようにしてみました。 減速の基準となる回転センサーの角度は「midpoint」という変数で設定していますので、プログラム内で探してみましょう。
[DOWNLOAD]今回作成したプログラム(教育版EV3ソフトウェア用)
[LINK]2015年10月に私が書いたマイスターブログも参考になると思います。ロボットの正確な移動方法について紹介しています。
http://nxt.typepad.jp/robojoy/2015/10/forward200mm.html