Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

社製ROS nodeのコードを直してCPU負荷を減らしたホボROSと関係ない話

541 views

Published on

社製ROS nodeのコードを直してCPU負荷を減らしたホボROSと関係ない話

Published in: Technology
  • Be the first to comment

  • Be the first to like this

社製ROS nodeのコードを直してCPU負荷を減らしたホボROSと関係ない話

  1. 1. Copyright © OPTiM Corp. All Right Reserved.Copyright © OPTiM Corp. All Right Reserved. 社製ROS nodeのコードを直して CPU負荷を減らした ホボROSと関係ない話
  2. 2. Copyright © OPTiM Corp. All Right Reserved. 1Copyright © OPTiM Corp. All Right Reserved. ATTENTION 本発表は基本的に発表者個人の 見解であり所属する組織・団体を 代表するものではありません 予めご了承ください
  3. 3. Copyright © OPTiM Corp. All Right Reserved. 2Copyright © OPTiM Corp. All Right Reserved. 2 ◼足立(a.k.a. @moguriso) ◼社内では組込み関連担当? WHO AM I?
  4. 4. Copyright © OPTiM Corp. All Right Reserved. 3Copyright © OPTiM Corp. All Right Reserved. 概要 node node node node node node 今回実装したnode エッジデバイス 参考:https://tech-blog.optim.co.jp/entry/2019/10/21/163000
  5. 5. Copyright © OPTiM Corp. All Right Reserved. 4Copyright © OPTiM Corp. All Right Reserved. 4 ◼元々はpythonで実装していた ◼ライブラリ使用のためオーバーヘッド が無視できないレベルだった ◼他にも色々積み重なってCPU負荷が 相当高かった 背景 (私の参画前)
  6. 6. Copyright © OPTiM Corp. All Right Reserved. 5Copyright © OPTiM Corp. All Right Reserved. 5 改善結果 OLD NOW republish 13.9 0 read/publish 25.5 0.7 25.5 13.9 0.7 ◼VGA画質 ◼10FPS ◼1/57程度 まで低減
  7. 7. Copyright © OPTiM Corp. All Right Reserved. 6Copyright © OPTiM Corp. All Right Reserved. 6 ◼余分な画像変換、再変換があった ◼Python実装はrepublish必須と思い込んでいた OLD実装の問題点(1) node エッジデバイス Image_transport MJPEG MJPEG BMP 変換 BMP JPEG 再変換 publish http://wiki.ros.org/image_transport#republish
  8. 8. Copyright © OPTiM Corp. All Right Reserved. 7Copyright © OPTiM Corp. All Right Reserved. 7 ◼Pythonとカメラの通信にCvBridge を利用していた ◼CvBridgeを利用すると内部的にMat形式で保持 され、MJPEG=>BMP変換を抑止出来なかった ◼V4L2のPythonライブラリ(OSS実装)で実用可 能なものを見つけられなかった OLD実装の問題点(2)
  9. 9. Copyright © OPTiM Corp. All Right Reserved. 8Copyright © OPTiM Corp. All Right Reserved. 8 ◼カメラとV4L2で直接通信する様にした(C++で再実装した) ◼データをパススルーして余分な処理を極力減らした NOW実装 node エッジデバイス MJPEG MJPEG publish
  10. 10. Copyright © OPTiM Corp. All Right Reserved. 9Copyright © OPTiM Corp. All Right Reserved. 9 NOW実装(最初の実装) ◼callback未登録状態でspinOnceを呼び 続けると処理遅延が発生
  11. 11. Copyright © OPTiM Corp. All Right Reserved. 10Copyright © OPTiM Corp. All Right Reserved. 10 NOW実装(改善後の実装) ◼いい感じに待ってくれると信じていた(気がする) ros::sleep()の呼び方が悪く徐々にFPSが悪化
  12. 12. Copyright © OPTiM Corp. All Right Reserved. 11Copyright © OPTiM Corp. All Right Reserved. 11 NOW実装(現在の実装) FPS周期 タイマー Publish処理 スレッド Main (終了待ち) Signal待ち 画像読込 publish
  13. 13. Copyright © OPTiM Corp. All Right Reserved. 12Copyright © OPTiM Corp. All Right Reserved. 12 ◼期待される性能値は概ね実現の目処 は立った ◼本モジュールのみに限って技術的負 債は返せた(ものと思いたい) NOW実装の成果
  14. 14. Copyright © OPTiM Corp. All Right Reserved. 13Copyright © OPTiM Corp. All Right Reserved. 13 ◼メモリ使用量がランニング時間で増 えていく傾向がある ◼ユニットテスト(gtest利用) の追加 をしたいが出来ていない ◼その他、やりたいことは多々あります が手が回っていない状況です NOW実装の課題
  15. 15. Copyright © OPTiM Corp. All Right Reserved. 14Copyright © OPTiM Corp. All Right Reserved. 14 We’re hiring!! https://www.optim.co.jp/recruit/career
  16. 16. Copyright © OPTiM Corp. All Right Reserved. 15Copyright © OPTiM Corp. All Right Reserved. 15 OPTiM Tech Night 定期的に開催しています https://optim.connpass.com/
  17. 17. Copyright © OPTiM Corp. All Right Reserved. 16 2019.10.24 19:00~20:30 @ HOTEL GAJOEN TOKYO

×