magicant / bve-autopilot

Bve trainsim 用自動運転車両プラグイン
GNU Lesser General Public License v2.1
21 stars 5 forks source link

実際の減速度に応じてブレーキを加減する #3

Closed magicant closed 5 years ago

magicant commented 5 years ago

フィードバックをゆっくり適用するようにすればうまくいくのでは? というアイディア

magicant commented 5 years ago

33 をやったらやっぱり #3 はやらなくていいかも? 応荷重制御 (#22) との関係性はまだ調べていない。

magicant commented 5 years ago

https://github.com/magicant/bve-autopilot/compare/feature/friction_feedback に実装を置いてみた。

電気ブレーキなしで摩擦のみでブレーキをかけているときにだけ減速度を反映するようにしてある。(電気ブレーキ作動中は電流の強さから減速度を推定することは実用的でないと思われるのでやっていない)

ノッチを動かした直後はブレーキシリンダー圧力がブレーキ指令に追い付いていない可能性があるが、ブレーキシリンダー圧力と減速度はそれでも比例するので、予め推定しておいた最大ブレーキシリンダー圧力との比を見ることでフィードバックは可能である。

実際にやってみた結果としては、電気ブレーキを搭載しない摩擦ブレーキのみの車両ではうまく働くが、低速度まで電気ブレーキが作動する車両では停止直前の挙動がよくなったとも言い難い。

magicant commented 5 years ago

現状の目立つ問題としては、

magicant commented 5 years ago

仮説: 弱いノッチのブレーキはより弱くする方向に丸めているので、ブレーキを強くするタイミングが遅れている? https://github.com/magicant/bve-autopilot/blob/1c008c3d19104bdfee8eeb812aa0c4b916211048/bve-autopilot/%E6%B8%9B%E9%80%9F%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3.cpp#L111

magicant commented 5 years ago

仮説: 弱いノッチのブレーキはより弱くする方向に丸めているので、ブレーキを強くするタイミングが遅れている?

中くらいの強さの制動に誘導するように丸める代わりに常に std::round するようにしてみると、若干マシにはなる。

しかし、停止直前ギリギリまで電気ブレーキが作動する車両にはどのみち効果がないという問題は残っている。

magicant commented 5 years ago

推定した最大減速度をすぐに適用するのではなくて、ゆっくりめに変化させることで停止直前の挙動を安定化できそう