magicant / bve-autopilot

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

「停車場へ移動」時の地上子の位置 #54

Closed magicant closed 4 years ago

magicant commented 4 years ago

「停車場へ移動」のとき、制限速度地上子や目標時刻設定地上子は無視する (あるいは少なくとも誤った位置を使用しないように補正する) べきでは? しかし通過駅に移動するときでも正しく判定できる?

magicant commented 4 years ago

「停車場へ移動」の時、Initialize の後は 0 メートル地点から移動先地点までの間にある地上子に対して SetBeaconData が一回づつ呼ばれる。この時、地上子の位置は分からない。その後最初に Elapse が呼ばれるとき、渡される引数の SpeedMrPressure の値が正しくない (Speed は 0 で、MrPressure はおそらく Initialize 前の値? しかし Location は正しそう)。その次に呼ばれる Elapse への引数はどうやら正しい。

特に、通過駅に移動する場合でも最初の ElapseSpeed が 0 になっている。

magicant commented 4 years ago

結局 01ff4d87273cb8b452b83e662e22c9da49d9d6ba のやったことは正しかったのだろうか?

最初の Elapse が呼ばれた時に地上子を処理することにより、地上子は 0 メートル地点ではなく移動先の位置にあったとみなして処理される。地上子の種類によっては、むしろ不都合がある?

magicant commented 4 years ago

「到達していない閉塞や制限速度区間の速度に合わせて無駄に早く減速してしまう」のを防ぐには今のやり方の方が良いかな。移動先の位置より後にまた地上子が置いてあれば問題ない。(地上子がない場合は速度超過の恐れあり)

magicant commented 4 years ago

ということで現状維持とする