WATANABE Yuki
WATANABE Yuki
確かに、TASC が ORP に引っ掛かっていたのでは間抜けすぎるのでどうにかしたい。 が、仕様をどうするか考えだすとあまり簡単な話にならない。 TASC の目的は目標停止位置に自動で停止することであり、それを実現する方法として「目標位置に向かって減速パターンに沿って減速する」という動作を実装している。一方、ATO の一部として搭載している ORP 対応の目的は ORP の照査に引っ掛からないようにすることであり、それを実現するために「ORP のパターンよりやや低い減速パターンに沿って減速する」動作を実装している。この二つのパターンが一致しているなら話は速いが、一般論としてはこれらは一致しないので、そのようなときにどういう動作をするのが適切かを考えなくてはいけない。 現実的にあり得そうな例としては、10 両分の長いホームに 8 両編成で進入する場合なんかに、ORP の照査パターンはホーム端ギリギリで収束するが TASC 停止位置はそれより 10 メートル以上手前にあるみたいなケースが考えられる。停止位置が十分に手前にある場合、そもそも ORP のことを気にせずに従来通り TASC を動作させても問題なく停車できる可能性が高い。一方、停止位置がそこまで離れていない場合は、通常通りだと列車の動きが ORP 照査の一部に引っ掛かる可能性があり、必要な減速のパターンが複雑化する。 また、ORP があるところでは...
以前手元で試験的に実装したときは今一つな出来だった。 やはり直前にやめた力行の強さとタイミングを覚えておいてそれに基づいた予測をしないと厳しいのだろうか。
bve-autopilot としての適切な仕様がまだ見えてこない。 - 車両によって性能差が大きい - 上り勾配で発進しようとするときに後退しないか
床関数・天井関数はなんだかんだ言ってうまくいかないというか、[現行の「丸め閾値」アルゴリズム](https://github.com/magicant/bve-autopilot/blob/5ae306f9b152a244d0446d6283860cfa959e6fc6/bve-autopilot/%E5%88%B6%E5%8B%95%E7%89%B9%E6%80%A7.cpp#L200-L246)がなぜかうまくいくことが経験的にわかっているのでそのやり方を維持した方が良いかもしれない。
問題が思ったより複雑であることが分かった。 既に bve-autopilot は勾配を考慮した計算式を使用しているが、惰行時の減速が想定より大きい場合に手前に止まってしまう。ただこれまで惰行時の抵抗や勾配加速度の誤差を考慮した計算は行っていない (しうまいやり方も見当たらない) のでこれを正攻法で解決できる見込みは立っていない。 また、減速パターンに抵触する前に加速をやめるようにしているため、勾配加速度による減速と目標減速パターンの減速が近い曲線となるときに加速が不足する。
`出力制御::力行する余裕あり` は主に速度が出過ぎることを防止するために力行をやめさせるための計算をしているのに対し、ここの課題で必要となっているのは速度が足りないときに力行させるという逆方向の計算なので、無理に同じ計算過程で両方を取り扱おうとするより別々に扱った方が良い気がしてきた。
[657ef2d..3a17d8f](https://github.com/magicant/bve-autopilot/compare/657ef2d...3a17d8f) でだいぶ良くなった
さらにコミットを追加: [657ef2d..30ddd92](https://github.com/magicant/bve-autopilot/compare/657ef2d...30ddd92)
Hi, thanks for opening the issue. D-ATC works much differently than other popular signal systems, so I will need to implement a lot of new function to make ATO work...
I'm not very interested in replicating the exact behavior of real trains because many trains work differently and there will be conflicts in implementing them in a single program. Sorry...