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

力行の多段制御 (全速力でない力行) #79

Closed
magicant opened this issue Jul 5, 2020 · 2 comments · Fixed by #81
Closed

力行の多段制御 (全速力でない力行) #79

magicant opened this issue Jul 5, 2020 · 2 comments · Fixed by #81

Comments

@magicant
Copy link
Owner

magicant commented Jul 5, 2020

今の bve-autopilot は (低速域で弱く加速するとき以外は) 常に最大の力行ノッチで加速するようになっているが、現実の ATO では全てのノッチを使って加速度を調節しているし、実際そうした方がより滑らかに速度を変化させることができそうに思われる。

どのようなアルゴリズムにすればよいだろうか?

@magicant
Copy link
Owner Author

magicant commented Jul 7, 2020

現行のアルゴリズムでは P1 の最大加速度を 2.5 km/h/s と、P2 以上の最大加速度を 5 km/h/s と想定してどこまで力行ノッチを上げるかを計算している。P1 を除く全てのノッチで同じ最大加速度を想定しているので、一度やめた加速を再開する (力行ノッチを上げる) タイミングを今よりも早くすることはできない (たとえ最大よりも弱い力行ノッチを使用しようとする場合でも)。しかし加速終了遅延時間 (offdelay) がデフォルトで 2 秒なので制限速度より 10 km/h 以上下がらないと再加速しないというデフォルトの挙動はあまり好ましいとも思えず、どうにかより早く加速を再開できるようにしたいところである。

また、戻しノッチに非対応の車両であることを想定すると現行のアルゴリズムよりも加速をやめる (ノッチを下げる) タイミングを遅くすることはできない。

以上の理由により、最大加速度を定数で想定している限り現行のアルゴリズムよりも「攻めた」加速はできない。となると、各力行ノッチの最大加速度を設定ファイルで個別に設定できるようにした方が良いか。ただし、そのようにしたとしても、最大加速度が (ほぼ) 等しい力行ノッチが複数ある場合にそれらを使い分けることは引き続きできない。


また、加速をやめる条件と再会する条件の閾値が異なっているので、状況によっては加速をやめた直後に加速を再開しようとする場合がある。これは動作がぎこちなくなるだけでなく速度超過する恐れもあるので、加速をやめてから加速終了遅延時間が経過するまでは再加速しないようにする制約を追加する必要がありそう。
なおこの問題は現行のアルゴリズムでも発生しうるが、P1 は低速度でしか使用しないようになっているので発生頻度は低い。

@magicant
Copy link
Owner Author

magicant commented Jul 8, 2020

戻しノッチに対応した車両でも実際に戻しノッチを ATO が実用することが可能かというと難しそうなところである。というのも、以下のような不確実性があるため結局どのタイミングでノッチを下げればよいのか計算できない。

  • ノッチを下げてから実際に加速度が下がるまでどれだけの時間がかかるのか分からない。 設定ファイルで指定した加速終了遅延時間と同じ時間だと仮定するのは常に正しいとは言えない。
  • ノッチを下げたときにどれだけ加速度が下がるのかが分からない。加速度が下がりすぎてまたすぐにノッチを上げたくなるかもしれない。

magicant added a commit that referenced this issue Jul 26, 2020
戻しノッチに非対応の車種もあるので、戻しノッチに頼った出力制御はしない
方が良い。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
1 participant