Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

制限速度 #8

Closed
magicant opened this issue Mar 20, 2020 · 9 comments
Closed

制限速度 #8

magicant opened this issue Mar 20, 2020 · 9 comments

Comments

@magicant
Copy link
Owner

No description provided.

@magicant magicant created this issue from a note in bve-random-map (To do) Mar 20, 2020
@magicant
Copy link
Owner Author

ATO 用の制限速度設定地上子をどこに置くか? 以下の点を考慮する必要がある

  • 始発駅の停止位置より手前に設置すると、始発駅出発直後に制限速度区間がある場合に、ATO に伝わる制限速度区間位置がずれる
  • 地上子の位置と制限速度区間開始位置との間に停車駅の停止位置がある場合、その駅に「停車場へ移動」で移動した場合も同様に位置がずれる。
    • かといって常に停止位置の後に地上子を設置するようにすると、その駅を通過する場合に減速が間に合わない恐れがある。
  • bve-autopilot の仕様として、地上子の通過順に対して制限速度変化位置が昇順となるように設置しなければならない。(順序を間違えると後の区間の情報が上書きされて消える。)
    • 「路線最高速度から制限速度まで減速するのにかかる距離」によって地上子の位置を決める場合、ある制限速度区間の直後により速度の低い制限速度区間があると地上子の順序が入れ替わってしまうことがある。

そのため以下のようにする。

  • 始発駅出発直後の位置ずれを防ぐため、始発駅の停止位置より手前には地上子を設置しないようにする。
    • 途中駅については、「停車場へ移動」しないことを前提として、停止位置を考慮せずに地上子を設置する。
  • 地上子順序入れ替わり問題を避けるため、地上子を制限速度区間のどれだけ手前に設置するかは制限速度によらず一定とする。

@magicant
Copy link
Owner Author

てか、bve-autopilot を改良してもっと自由に制限速度設定地上子を置けるようにできないものか

@magicant
Copy link
Owner Author

magicant/bve-autopilot#58 が完了したら、次のようにできる:

  • 全ての制限速度区間に対して 1000 メートル前に地上子を置く。
  • 制限速度解除地上子は制限区間の終点に置く。
  • 「停車場へ移動」の時にその地点での制限速度を反映するため、駅の停止位置ぴったりに地上子を置いてその地点での制限速度が伝わるようにする。
  • 駅の停止位置の後にある制限区間のための地上子が駅の停止位置の手前にある場合、停止位置に設置する地上子が優先されて、既に通過済みの (その先にある制限区間に対する) 地上子は反映されない。これをリカバーするため、停止位置の 1 メートル先にも地上子を置いてこの先に制限区間があることを伝える。

@magicant
Copy link
Owner Author

  • 停止位置の 1 メートル先にも地上子を置いてこの先に制限区間があることを伝える。

しかしこれをやるうまい方法が思い付かぬ。(特に、設置すべき地上子が複数ある場合)

@magicant
Copy link
Owner Author

1000 メートル前だけじゃなくて 500, 250, 125... メートル手前にも置けばよいか。

加速度と減速度が等しいと大まかに仮定すると、駅を出て加速をやめるまでの距離は制限速度区間手前で減速に要する距離を超えないので、駅と制限速度区間始点の中点までに地上子があればその時点で制限速度区間を認識して減速が間に合う。

@magicant
Copy link
Owner Author

メモ:

最大カント量を 105 mm、軌間を 1067 mm とすると、最大カント角度と最大遠心加速度は

  • 最大カント角度 = arcsin(105/1067) = 0.09856627 [rad]
  • 最大遠心加速度 = 重力加速度 * tan(最大カント角度) = 0.969747 [m/s^2] = 3.491089 [km/h/s]

ところで「遠心加速度 = 速度^2 / 半径」であるから

  • 最小半径 = 速度^2 / 最大遠心加速度
  • 最大速度 = sqrt(最大遠心加速度 * 半径)

単位を充てると

  • 最小半径 [m] = 0.079567 * (速度 [km/h])^2
  • 最大速度 [km/h] = sqrt(12.568 * 半径 [m])

カント量に余裕がある場合は、

  • 遠心加速度 = 速度^2 / 半径 = 重力加速度 * tan(カント角度)

単位を充てると

  • tan(カント角度) = 0.00786818 * (速度 [km/h])^2 / 半径 [m]

おおまかに sin = tan で近似すると、軌間 1067 mm でのカント量は

  • カント量 [mm] = 8.395348 * (速度 [km/h])^2 / 半径 [m]

@magicant magicant moved this from To do to In progress in bve-random-map Apr 27, 2020
@magicant
Copy link
Owner Author

magicant commented May 1, 2020

1000 メートル前だけじゃなくて 500, 250, 125... メートル手前にも置けばよいか。

bve-autopilot の 1006 番地上子はそれでよいが、snp や swp2 の 6 番地上子はうまくいかなそう。
(複数の制限速度区間がある場合にそれぞれの区間の地上子が交互に現れるようなことになってはいけない)

とりあえず 6 番地上子は以下の二箇所に置けばよいだろうか?

  • 制限速度区間の始点から 1000 メートル手前
  • 直前の駅の停止位置 (駅を出て 1000 メートル以内に制限速度区間がある場合のみ)

@magicant
Copy link
Owner Author

magicant commented May 1, 2020

頭がこんがらがってくるの嫌なので、以下のようにしてみる:

  • map_misc に speedlimitbegin.txt と speedlimitend.txt を用意。この二つは必ずペアで使う。(ある制限速度区間を終えずに新しい制限速度区間を始めるということはないようにする)
  • 制限速度区間開始を設定する地上子は最大 1000 メートル手前に置く。ただし 1000 メートル以内に別の制限速度区間の開始がある場合はそこより後に置く。
  • また、1000 メートル以内に駅の停止位置がある場合はそこにも置く。
  • 制限速度区間終了を設定する地上子は区間終了位置に置く。ただし一つ後の制限速度区間の開始を設定する地上子が現在の制限速度区間の中に設置される場合はその直前に置く。

最後の制約があるため、制限速度区間の終了を設定する地上子も制限速度区間の開始を処理するときに設置しないといけない。ということで map_misc/speedlimit.txt というファイル内でほぼ全部やることになりそう。

「停車場へ移動」の時にその地点での制限速度を反映するため、駅の停止位置ぴったりに地上子を置いてその地点での制限速度が伝わるようにする。

これだけ station.txt で直接地上子を設置することになるか。

@magicant
Copy link
Owner Author

magicant commented May 2, 2020

「停車場へ移動」の時にその地点での制限速度を反映するため、駅の停止位置ぴったりに地上子を置いてその地点での制限速度が伝わるようにする。

swp2 互換モードで 6 番地上子を認識してしまう (そして 6 番地上子は上記のように停止位置に置かない) ので結局 bve-autopilot が制限速度区間の始点を本来より手前にあるものと認識してしまうが、停止位置に置いたところで swp2.dll が問題なく動作するのか確証がないのでこのままとする。

@magicant magicant closed this as completed May 2, 2020
bve-random-map automation moved this from In progress to Done May 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

No branches or pull requests

1 participant