
みん友さんのsmartDSU不調。
openpilotのコードを調整することで状況が好転したと連絡がありました。
経緯の仔細はみん友さんにお願いしますが、プログラマン的に興味が湧いたので該当するコードを見てみました。
タイトル画像の
frame_fingerprint = 10 # 0.1s
この時間指定を10倍以上に伸ばすことで、オートパイロット中のエラー発生は抑えられるらしいと言うことです。
ーーーーーーーーーーーーーーーーーー
話が前後しますが、smartDSUの機能に関して要点を記載します。
機能1・DSUを切り離した時に車体にエラーを起こさせない
機能2・openpilot動作時にsmartDSUがついているということをcomma側に教える
この二つです。勘違いしがちなのは、smartDSUが縦制御に必要とよく誤解されていることです。ややこしいのでここでよく覚えてください笑🤣
smartDSUはopenpilot無し(commaを取り付けていない)時に車体DSUの切り離しエラーを回避するものです。(車体DSUが縦制御に邪魔)
TSSP車両用でTSS2車両には関係ありません。
そのへんOP始めたばかりの人には分からないでしょうし、自分も知らなかったので諸先輩方に教えてもらいました。
機能2はopenpilot側が判定して縦制御を有効にするためのフラグに使います。イチロウパイロット含め、大抵のカスタムフォークはそうしていますが、公式だけは中途半端に縦制御を有効にしてくれません。
対応するようプルリクエストしたら却下されました💢
ーーーーーーーーーーーーーーーーーー
閑話休題。今回発生した不具合はsmartDSUを取り付けた際、
不具合A・comma無しでしばらくするとプリクラッシュエラーが発生する(本来なら何も起きない)
不具合B・openpilot動作時に、前走車がいなくなるとエンゲージ解除されてしまう
不具合Bはopenpilotが縦制御せずに車体ACCが動作しているように思いました。ここから機能2が上手くいっていないことが推測されます。
上に書いたコード修正は、openpilotが車体のさまざまな状態を取得するさいのタイミング(余裕?)みたいなのを指定してるようで、0.1秒だったのを1秒以上に伸ばしてデータ不整合が起きても大目に見てエラーを見逃してやることで一見不具合が出ていないように見せかけているのでは・・・🤔
実際この辺は程度問題で、うちの環境でもたまに前触れなくオレンジエラーがピーピー鳴くことがあります。物理時間相手のプログラムなのでこう言う制御はよくあります。(10倍以上の設定値がワークアラウンドとして妥当かという問題はありますけど)
問題の出たsmartDSUから出している信号が弱い(遅延?)か途切れ途切れで、openpilot側(+車体)で通常より大目に見ないとエラー判定されてしまうのかというのがプログラマン的な推測です。
ーーーーーーーーーーーーーーーーーー
ここまでは良いですが、不思議なのは不具合Aの方です。こちらは機能1と関連しており、commaをつなげない状態で起きていたらしいのですが、報告いただいた限りでは今回のコード書き換えで治ったみたいなのです。
そもそもopenpilotが動いていない時の症状まで改善するというのが理屈に合いません。
無理やり考えれば、コードのタイミング書き換えがsmartDSU側にフィードバックしているのでしょうか?
ざっと見た限りopenpilotのプログラムに、非公式のハードであるsmartDSUの制御を書き換えるコードまでは無いように見えます。
となるとsmartDSU側がopenpilotの挙動を監視して自身の状況を設定し直している・・・??
そんな可能性ありますかね💦 だったらsmartDSU、オレが考えてるよりはるかにスマート(賢い!)です
Posted at 2022/04/15 08:20:02 | |
トラックバック(0)