【PyFMI】最小構成のMBD事例 第2章 その129【リアルタイム描画㉓】

【PyFMI】最小構成のMBD事例 第2章 その129【リアルタイム描画㉓】 事例
【PyFMI】最小構成のMBD事例 第2章 その129【リアルタイム描画㉓】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/model-based-of-minimum-2-backnumber/

はじめに

前回はかなりしっかり実験を行い、
負荷の度合いと影響を確認した。
一応、これでも精度を求めないHILSとしての使い道のあるとは思うが、もう少しなんとかならないだろうか?

というあたりを検討する回

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

負荷を下げる方法は無いのか?

太郎くん
太郎くん

前回で一応負荷の確認ができて、
作成したHILSもどきだと、
「精度求めなかれば使い道はありそう」
ってあたりだったねー。

フクさん
フクさん

そうだねー。
まぁこれはこれで結構使えるとは思うけどね。
実際は制御対象すらもないことの方が多いから
多少精度が悪かろうと制御対象っぽいものがあるだけで
品質の積み上げはし易くなる。

太郎くん
太郎くん

それはなんとなくわかる

太郎くん
太郎くん

でも、なんかもうちょっとなんとかならないもんかなー。

フクさん
フクさん

じゃーちょっと試してみるか。

太郎くん
太郎くん

お!
なんか裏技があるのか?!

負荷改善の方法

フクさん
フクさん

裏技と言うか、単純に波形の更新を止めてしまう。

太郎くん
太郎くん

え゛

太郎くん
太郎くん

ということはまたなんかコードを追加するのか・・・。

フクさん
フクさん

いんや。
単純にpauseにチェック入れるだけで描画の更新は止まるんで、
その間は低負荷になると思うよ。

太郎くん
太郎くん

pauseするとシミュレーションも止まっちゃうんじゃ・・・。

フクさん
フクさん

pauseはあくまで描画だけを一時停止してるだけで、
内部のシミュレーション処理はそのまま動いてる。
試しに8秒くらいpauseして、
pause解除しから4秒ほど待った波形を確認してみよう。

描画負荷を無くした際の負荷具合

tkinter、FMU、クラス、sin波入力、CPU負荷表示、リアルタイム描画、8秒pause、Enable Scale bar、Enable Cpu Load、pause、sin wave、Sawtooth wave、target Speed、target[rad/s]、voltage[V]、speed[rad/s]、loadTorqueStep.tau[N m]、current[A]、cpu_load[ms]
太郎くん
太郎くん

お、これは!
描画していなかった間は割と低負荷をキープできていたってことか!

フクさん
フクさん

ついでに拡大で確認。

tkinter、FMU、クラス、sin波入力、CPU負荷表示、リアルタイム描画、8秒pause、拡大、Enable Scale bar、Enable Cpu Load、pause、sin wave、Sawtooth wave、target Speed、target[rad/s]、voltage[V]、speed[rad/s]、loadTorqueStep.tau[N m]、current[A]、cpu_load[ms]
太郎くん
太郎くん

pauseで描画負荷がかかってない期間はかなりキレイにシミュレーションできてるね。

フクさん
フクさん

と言う感じで描画せずに精度を重要視することもある程度は可能ってことだ。
まぁその間の情報は見れないけど、
そこも確認するフェーズを分けて考えればOkかな。

太郎くん
太郎くん

まずは精度を犠牲に見える化を優先してデバック。
ある程度不具合が取れたら
描画を無くして高精度に評価する。
ってことか。

フクさん
フクさん

そのとおり。

フクさん
フクさん

とりあえず、これで机上HILSは
「制約有れど可能そう」
ってことがわかったってことになる。

動画でシミュレーション状況

フクさん
フクさん

一応、一連の動作を動画で取って置いた。


以下は音声合成ソフト「VOICEVOX」の実験を兼ねて作成した解説動画です。

ソースコードについて

フクさん
フクさん

実験用のソースコードはGithubに上げておいたので興味ある人は動かしてみると良いだろう。

まとめ

フクさん
フクさん

まとめだよ。

  • 前回の負荷を安定化する方法を検討。
    • 描画に処理時間を持っていかれているっぽからpauseで描画だけ停止していた。
      • 案の定、負荷安定化。
  • 上記より、フェーズを分けた利用法が考えられる。
    • デバッグフェーズは波形を見ながら。
    • ある程度デバッグが完了したら波形無しの高精度状態で検証する。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました