magicant / bve-autopilot Goto Github PK
View Code? Open in Web Editor NEWBve trainsim 用自動運転車両プラグイン
License: GNU Lesser General Public License v2.1
Bve trainsim 用自動運転車両プラグイン
License: GNU Lesser General Public License v2.1
発進時のみ? 他のボタン操作も?
誤差の期待値が半分になる
非常ブレーキを使うと制動力推定関係で死ぬっぽい? 後で調べる。非常ブレーキを拡張ブレーキ指令と混同しているのかもしれない。
bve-autopilot.dll!autopilot::制動特性::pressure_rates::割合と丸め閾値(double ノッチ) 行 202 C++
bve-autopilot.dll!autopilot::制動特性::pressure_rates::割合(double ノッチ) 行 228 C++
bve-autopilot.dll!autopilot::制動特性::割合(autopilot::制動指令 ノッチ) 行 162 C++
> bve-autopilot.dll!autopilot::制動特性::経過(const autopilot::共通状態 & 状態) 行 153 C++
bve-autopilot.dll!autopilot::共通状態::経過(const ATS_VEHICLESTATE & 状態) 行 106 C++
bve-autopilot.dll!autopilot::Main::経過(const ATS_VEHICLESTATE & 状態, int * 出力値, int * 音声状態) 行 177 C++
bve-autopilot.dll!Elapse(ATS_VEHICLESTATE state, int * panelValues, int * soundStates) 行 112 C++
急な上りになっている駅に低速度で進入するとき、十分に再加速をしないので手前に止まってしまうことがある。
惰性で走り続けると手前で止まってしまうような場合では再加速しなければならないが、現在の実装ではどうせすぐにブレーキをかけることになるから加速しなくてよいという風に判断してしまう。正確な位置に止めるには停止時に多少なりともブレーキをかけさせなければいけないので、そのためにはあえて先に加速する必要がある。
メトロ総合プラグイン互換モードを使用している時、17 番地上子は常に 11 メートル先に停止位置を設定する。実際、trant9123 さん & csp2206 さんの東横線データでは 11 メートル先に Station
命令がある。しかし、うさおさんの作った東急 5050 系では、運転台パネル上の停止位置目標は約 10.5 メートル先で揃うように表示されるので、ずれる。
TASC/ATO 用の拡張ブレーキノッチを車両に設定している場合、TASC が駅に到着した後、手動ブレーキをかけたときに TASC ブレーキを解除する条件が正しくない。
停止信号で停止した後、発進キーを押すと今は 10 km/h まで信号速度を緩めて再加速するが、メトロ総合プラグインの ORP 再発進時の照査が 7.5 km/h だったりするのを鑑みるともっと低い速度の方が良くないだろうか。
また、こういうときは全速力ではなく弱い力行ノッチで発進すべきではないだろうか。
Some ATO implementions, such as Trainguard MT by Siemens, has a behavior that is only a little bit different from that of bve-autopilot.
That is, the ATO turns off once the mascon leaves the neutral position, and will not resume operation automatically until the driver pushes the ATO start button again.
Is it possible to implement this, as a selectable behavior from the configuration file?
強い下り勾配の途中に駅があり、勾配設定地上子で勾配が設定されているとき、停止位置の直前数メートルにいったん列車が停止した状態から再発進 (インチング) しようとしても発進しない。
下り勾配のため発進直後からブレーキをかける必要があるが、これが発進可能かどうかの判定に引っ掛かってしまい、すぐに停止状態 (強制ブレーキ) になってしまう。
制限速度地上子が設定する制限速度区間は、隣り合う区間の制限速度が同じ場合は一つの区間に統合して計算を行うようになっている。この統合は制限速度地上子を通過するたびに直ちに行われるので、その後に途中に新たな制限速度区間を追加すると統合前の区間が無視されてしまう場合がある。
例えば地上子を以下のように設置すると
0;
Beacon.Put(1006, -1, 100050);
Beacon.Put(1006, -1, 200060);
Beacon.Put(1006, -1, 300050);
以下の三つの制限速度区間がプラグインに設定される。
しかし地上子の順序を変えて以下のようにすると
0;
Beacon.Put(1006, -1, 100050);
Beacon.Put(1006, -1, 300050);
Beacon.Put(1006, -1, 200060);
以下の二つの制限速度区間しか設定されない。
値が 300050 の地上子を通過した時点では 200 メートル地点からの制限はまだプラグインに設定されていないため、100 メートル地点からの制限と 300 メートル地点からの制限は統合され、結果として 100 メートル地点からの 50 km/h の制限だけが残る。
その後、値が 200060 の地上子を通過すると 200 メートル地点から始まる 60 km/h の制限が追加されるが、既に 300 メートル地点からの 50 km/h の制限の情報は失われているため 60 km/h の制限が 300 メートル地点以降も続いてしまう。
勾配地上子が設定する勾配も、隣り合う区間の統合に関して同様の問題がある。
I tried to use this plugin with openBVE. It turned out that if the first station is set with no door opening, in this case:
.Sta (DemoStart;;;;0;;1;;30;;)
Then, the plugin will not consider the doors are closed, and it will not be possible for ATO to depart. The traction will only be enabled by opening and then closing the door again.
制御器がノッチ戻しに対応している車両では、それを活かすようにしたい。
今の bve-autopilot は (低速域で弱く加速するとき以外は) 常に最大の力行ノッチで加速するようになっているが、現実の ATO では全てのノッチを使って加速度を調節しているし、実際そうした方がより滑らかに速度を変化させることができそうに思われる。
どのようなアルゴリズムにすればよいだろうか?
自動発進を有効にしているとき、自動発進する条件が整うと、信号待ちで停車している時でも転動防止ブレーキが解除され、信号待ちのためのブレーキ (信号順守が出力する、信号待ち用停止位置に停まるためのブレーキ) の分しかブレーキがかからない。
発進できないのであれば、自動発進の条件が整っていても転動防止ブレーキをかけ続けるべき。
「停車場へ移動」のとき、制限速度地上子や目標時刻設定地上子は無視する (あるいは少なくとも誤った位置を使用しないように補正する) べきでは? しかし通過駅に移動するときでも正しく判定できる?
v1.1 現在の仕様では、制限速度設定地上子の設置順序は、地上子が指示する制限速度変化地点の順になっていないといけない。順序が誤っていると、より後の区間の制限速度の情報が上書きされてしまう。この制限を緩和して、自由な順序で (あるいは、同じ制限速度変化地点に対して複数) 地上子を設置してよいようにできないだろうか。
現在、モード切替ボタンは「ATO 有効 → TASC のみ有効 → 両方無効」の順にループするようになっている。切り替え方をもっと柔軟にできないか?
いきなり力行を最大ノッチまで入れると衝撃が大きい (車両もある) ので、段階的にノッチを上げていくようにしたい。
一センチでも過走したらすぐ最大ブレーキになるのは良くない。
あと、手前に止まりそうになったらさっさと止めてしまうべき。
今は特定の type を持つ地上子を (それに合う互換モードで) 通過したときにだけ地上子から閉塞の位置と信号を読み取っている。しかし Beacon.Put
文では常に閉塞を指定する必要があるので、どの type の地上子を通過するときにも何らかの閉塞の位置と信号がプラグインには伝わってきている。それを積極的に利用するようにすれば、プラグインが知らない type の地上子からも閉塞の位置と信号を読み取れるのではないか? そうすれば互換モードでいちいち対応しなくてもいろいろな type の地上子に対応できるのでは?
プラグインの仕様として、目標減速度設定地上子で高い目標減速度を設定しても、設定ファイルに設定した最大減速度の 95% までしか目標減速度は上がらないようにリミッターをかけている。しかし pressurerates に設定された最大常用ブレーキの減速度割合が 0.95 以下の場合にはリミッターをすり抜けてしまい、結果として減速が間に合わないことがある。
Many trains has multiple buttons for starting ATO, which must be pushed simultaneously.
I wonder if it is possible to simulate such behavior.
メトロ総合プラグイン互換モードを使用している時、17 番地上子は常に停止位置設定地上子として認識されるので、通過駅に 17 番地上子があるとそこで停止してしまう。
停止する瞬間の減速度は比較的小さくしたい。
現在速度がパターンを下回っているならパターンに近付くように加減した減速度を出す。
これをやると #4 は不要?
両数から列車の長さを計算する
制限速度区間を地上子から受け取って共通状態に保存する
減速パターンに基づく制動出力計算を TASC から抽出する
加速し過ぎないように力行を制御する
列車の長さを設定ファイルから読み込む
現在分かっている課題:
On some older metro system, trains do not coast at its target speed.
That means once it reaches the target speed. The train stops accelerating until the train falls below the minimum speed.
(The minimum speed is different depending on track section. But usually 5-10km/h less than target speed)
Can this be a feature, and minimum speed defined with beacon? Thanks!
(Sorry if this got implemented already, I've read the wiki a few times but I still can't find it)
下り勾配の駅で、プラグイン側の想定する減速度と実際の減速度がずれているとずるずると低速で進み続けて止まるまで何秒もかかることがある。
停止位置に近付いて低速で一定時間経過したら、それまでより強いブレーキノッチをかけ続けると良い?
このプラグインが主に用いられる路線データといえば、東急東横線や目黒線・東京メトロ副都心線や南北線といったところであろう。特に前者に関しては動画サイト上で運転台計器類の動作も映った前面展望動画も多数ある。
しかしながら、それらの動画を見る限り、運転台上の「TASC制御」灯は定位置に停車し開扉したタイミング(主に東急線内)、もしくは転動防止動作を手動で行うなどした一定のタイミング(主にメトロ線内)で消灯している。
それに対し、現在の本プラグインの仕様上、上述の「TASC制御」灯に対応するbve運転台パネル出力の「tascmonitor」は閉扉しない限り点灯し続ける。
また、絶対式停止位置設定地上子をmapファイルの0m地点などに一括で設定した場合、走行中・停車中は常時「tascmonitor」が点灯し続ける。
というわけで、TASC制御状態の表示を点灯・消灯するタイミングを設定できないだろうか?
例えば、
などである。
停止信号で停止した後に再発進すると現在閉塞と次の閉塞の制限速度を 7.5 km/h に上げて進行するが、このとき信号前照査順守での照査が無効になるので、再発進位置から次の閉塞までの制限速度は単に現在閉塞に対する信号速度のみに制約され、ATS の照査よりも高い速度となることがある。すると他の保安装置プラグインと併用している場合にその照査に引っ掛かることがある。
現在、強い下り勾配からほぼ平坦に変わるような線形で停車させようとすると、前半 (強い下り勾配部分) でブレーキが強すぎになりがちである。もう少し「攻めた」ブレーキングはできないだろうか。
I used this plugin in the BVE5 Yamanote line made by Tn_E235(with TASC beacon)
I also used the E235 series made by e233_kun, including the D-ATC plugin made by Mi5000, and manually added the autopilot plugin
When only TASC is enabled, the plugin works normally
But when I enabled ATO, the vehicle cannot run and will stop immediately
Then I used the "clearcar" to check the problem. I found that the speed limit read by the plugin is often 0km/h, sometimes to 25km/h, but it can hardly read the normal speed limit (for example, 65km/h in the Tokyo-Yurakucho section)
ATO often travels at a lower speed, I hope this problem can be fixed soon: D
(Sorry for my bad English, I am a user from China and using Google Translate: D)
結局今はドアが開いた時にしか転動防止していないが、止まった時はいつも転動防止した方が良い
ブレーキの応答が速いか低速時に摩擦係数が上がらない車両では「目標速度に近付いたらノッチを緩めて衝撃を抑える」が効きすぎて過走してしまう。
目標速度に近付くにつれて目標減速度が下がるように減速パターンを変化させると良いか? あるいはブレーキの応答までのラグを考慮する (調整可能にする) ようにする?
今は 12 番地上子を通過したときに必ず ORP を起動しているので、信号が ORP を現示していなくても ORP の動作が開始してしまう。
さて、次の場合の動作は?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.