https://linen.dev logo
atsPのパターン曲線を作る
# forum
f
鯖の信号システムを整備しているところで "ATS-P" のような自動列車装置を導入したいと考えています。 詳細は以下の通りです。
オレンジの線は atsP の曲線 みどり色の線は atsP の曲線に当たった場合の速度変化 信号現示に応じて曲線の生成・修正する地点「A点」「B点」がある ========== もしもオレンジの線にあたったなら停止位置よりも手前に止まれるようにする また、減速の目標速度は( 速度制限 - 5km/h )とする atsPの曲線に接近したら警告を出す{( パターン速度 -5km/h )地点} 使用するブレーキは、パターンにあたった際のいずれも常用最大 ========== A点では、信号の現示に応じて曲線を生成するかを判断 B点では、A点で曲線が生成された場合、それを修正する役割(atsP-2.png参照) (A点~B点を走行中に信号現示が変わった場合、P曲線を修正するなど)
u
https://discord.com/channels/799152792518393917/1205026806315618315/1354130621282385920 こっちで色々描いてたけど ATS-Pとしてやるなら、dataMapとしてやったほうがいいだろうし D-ATCに近い座標管理的な保安装置とするなら、あらかじめ鯖側に電車のデータを保存させたほうがいいかも
それと ATS-Pは制御に大きな特徴があって ・直下地上子(TS?:オレンジ)は「絶対停止信号(01信号、非常ブレーキ)」を出せるけど、確か ・ロング地上子(TL=NN:白)は、絶対停止信号は出せない(停止位置までの距離しか出せてないはず) なので、電車に地上子から送るべき情報は ・ブレーキ指令 は直下だけで良くて ・距離指示 を他全ての地上子(直下以外) で動作させたほうがいいかも
たぶんS型の資料見ながら、地上子の設置基準をある程度学んでらっしゃると思うんですけども http://kihayuni.jp/SP/sp-ATS-04.html たぶんA点の方が直下に近くて、C点、D点の方が直下から遠ざかるかも(会社によって少々差異があるので、もしかしたら違うかも)
https://discord.com/channels/799152792518393917/1205026806315618315/1205145225048105003 パターン制御のアイデアは、俺が引用したフォーラムの、ひーさんの項を参照してほしい パターン接近の制御は難しいから、先に常用最大のsetNotch機構を作るのが良さそ
として、どのみちdataMapで列車に距離を伝送する必要があり、サーバースクリプトで車上で計算する必要があるな そんで、「パターン曲線」というものを作るのは、かなり難しいから 「ブレーキ閾値」として、加速度値を叩き出すのが、計算コストが少ない
f
だよねぇ...
u
つーか、俺もやってみましたけど、あんまり簡単な演算じゃないすね ごちゃごちゃ外でやるなら、MOD開発しつつKaizPatchとかからクラス継承して 機能拡張させてもらった方がいいなとか考えてます
パターン自体はORでかからなければならない(あらゆるパターンのうち、最も低いパターンが選択されて使われなきゃいけない)から そこら辺の丸め込み処理も必要だし
f
速度・距離からどうにかして計算式つくれないかな...
そしたら簡単にはなりそうだけど...
u
等加速度運動に近似できるところらへんまでは目処ついてらっしゃいます?
加速度に基づいてブレーキ閾値 Aをおくと A = ( Vt^2 - V^2 ) / 2d V = 現在速度、Vt = 目標速度、d = 残存距離 みたいな 俺は残存距離を平面上の二点間距離近似(ピタゴラスの定理)で出すんですが できればレールの形に合わせて、距離積算なりレールからの距離取得なりしたいよなあと
f
なるほど
一旦いろいろ試行錯誤してみますか
u
ChatGPTとかに聞くとコード例とか出してくれるかも〜
3 Views