【上流検証】最小構成のモデルベース開発事例 その55【ドライビングシミュレータ⑤】

【上流検証】最小構成のモデルベース開発事例 その55【ドライビングシミュレータ⑤】 事例

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

はじめに

オープンソースドライビングシミュレータであるCARLAの話。
PID制御の組み込みと、車速の取得ができたので動かす。

登場人物

博識フクロウのフクさん

イラスト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

動かしてみた・・・が?

太郎くん
太郎くん

よし!ばっちり組み込んだよ。
あとは動かすだけかな?

フクさん
フクさん

うーん。
動くとは思うよ。

太郎くん
太郎くん

「思うよ」って・・・。

フクさん
フクさん

まぁ動かしてみればいいんじゃない?
シミュレーションだし、何かが壊れるって心配もないよ。

太郎くん
太郎くん

まぁやってみるか・・・。

太郎くん
太郎くん

・・・。

太郎くん
太郎くん

これ、むちゃくちゃ処理が重い!!
キーボードの操作も受け付けたり受けつけなかったり。
しかも受けつけないことの方が多い!!

フクさん
フクさん

だろうね。

太郎くん
太郎くん

知ってたのか?!

フクさん
フクさん

いや、予想はしていたってだけだよ。

太郎くん
太郎くん

解決策を!早く!

とりあえずSleep入れる

フクさん
フクさん

原因はPythonAPIの叩きすぎだね。
というわけで、PID制御とかキー入力を処理するループ処理のところがあるんだけど、
そこにsleep関数を差し込めば処理が軽くなるんじゃないかな。

太郎くん
太郎くん

どこに入れれば良い?

フクさん
フクさん

(うーん、いろいろヒントは言ったつもりだったんで自分で見つけて欲しいんだけどなぁ。)

フクさん
フクさん

game_loop関数の中にwhileループがあるんで、
その中にsleep(0.2)ってのを追加すればOKだよ。

太郎くん
太郎くん

引数の0.2ってのは?

フクさん
フクさん

sleepする時間だね。
単位は秒なんで、0.2ってことは\(200[ms]\)相当になる。

sleep関数を入れてから動かしてみた・・・が?

太郎くん
太郎くん

よし、sleep関数を差し込んだぞ!
これで動かす!

太郎くん
太郎くん

あれ?

フクさん
フクさん

どうしたん?

太郎くん
太郎くん

一応、動いて自動で50[km/h]を目指すような挙動はしてはいるんだけど・・・。

太郎くん
太郎くん

むっちゃ制御が弱い!

フクさん
フクさん

まだ課題があるってことだね。

まとめ

フクさん
フクさん

まとめだよ。

  • PythonAPIを叩きすぎると重くなる。
    • Sleep関数等を使用して処理の頻度を下げることで回避可能。

バックナンバーはこちら

コメント

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