どうも、2投稿目ですね。
いやー、それが、結構わかりにくいけど致命的なバグを見つけました。
というのも、さっきブログ更新して、さて、ゲインの様子を見ていこうかなーと思ってマウスを直進させたら、挙動がおかしくて。高速直進させようとすると、止まらずに吹っ飛ぶ(暴れるわけではなく、脱力するような感じ)症状が出て、あれ?と思いました。
そしてログを取ってみると…なんと減速していない(減速開始タイミングに速度が一瞬で0になっている)…なん…だと!
ということでバグ取りです。嫌でしたがネイピア加減速が原因であることは確実だったので、一個一個式を見直してみました。でも、ミスがありません。結構?を続けて色々試行してみるもどっかの値の最適化ではないことも分かってきまして、それでも意地でにらめっこをしていたらようやく気付きました。
といってもこれが説明しにくくて。まず、バグが起こるのは、目標最高速に到達したらすぐに減速する直進動作をする際(台形加速だったら速度のグラフが三角形になるパターン)に起こります。この際、今年の加減速はネイピア数を用いた関数からそれを速度にするような感じで目標速度や加速度を出しているのですが、その際、横軸に時間を使うようにしています。で、その時間を使う際に加減速の始点がわかるようにフラグみたいなものを立てておくのですが、これが加減速共有にしていたのがまずかった原因でした。もちろん加減速が終了した時点でこのフラグはリセットするのですが、先程のパターンだと実は加減速が終了した判定が出ないようになってました。減速開始のタイミングを距離で見ていたため、加速途中(正確にはほとんど加速しきっているはず)で減速が開始しフラグが立ちっぱなしになる、そうすると横軸の時間もリセットされないから、ほぼ減速しきった時の速度に切り替わる、つまり減速しなくなる、というオチでした。
…自分でも読みたくなくないですね。まあ、複雑なものを作ろうとすると、細かいところが大事になっているというところですかね。いやしかし、これでもかなり短時間で見つかって良かったです。ということで、ゲインの調整は明日からです。
今日はこの辺で。
0 件のコメント:
コメントを投稿