##はじめに##
自己紹介
十年間にわたり組込みOSの分野でFAE/プロジェクトマネージャを経験。
現在はヘテロマルチコア向けのソースコード解析や最適化を行うSilexicaで奮闘中。
記事内容
今回はROS1/ROS2ビルドシステムへの統合
について記事にしました。
##目次
####ROSの統合
####ビデオで統合の解説
##ROSの統合
ROS(バージョン1と2)には、Rviz、RQTグラフ、Gazeboなど、自律システムの開発に役立つ広範囲なオープンソースのエコシステムツールが既に存在します。しかしこれらツールはFPGA特化 自動車ソフトウェア開発向け#1で述べたようなユースケースの解決には向いていません。
-ROS 1/ROS 2ビルドシステムへの完全な統合
●各個モジュールのオンデマンド解析
● 複数モジュールの並列解析サポート
-自動リグレッションテストなどを可能にする十分なCIインテグレーションサポート
-オリジナルのソースコードラインに回帰可能な後方トレーサビリティでアプリケーションの変動性に対する自動ルートコーズ解析。
これにより、同じソフトウェアで起こる異なった実行が違う動きをするかの理解に役立ちます。この理由として、入力データや状態の異なりによる実行経路の違いや、再帰的アルゴリズム、または異なった動的スケジューリング順列による実行動作の変動で生じる実行時間が変わってきます。
##ビデオで統合の解説
1.Rosシナリオの実行
・ v1.8 autoware適用(安定性を高めるパッチ適用)[7]
・“Moriyama” のデータセットに基づく
・分離されたGPSのテストシナリオ(実行時間:〜10秒)
・GPSセンサーの速度(ROSbagによる):25Hz
・環境:カスタムNvidia Dockerコンテナ(十分なオートウェアスタックとSLXを含む)
2.オペレーティングシステムのプロファイリング情報(コンテキストスイッチの数、カーネル/プロセスランタイム、アイドル時間など)をROS固有の情報(稼働中のモジュール/トピック、依存関係など)と融合したSLXシステム概要チャートで、システム全体の概況を把握。
3.SLX詳細解析のモジュールを選択。(ここではAutowareの「GPS」モジュール:nmea2tfpose)
4ソフトウェアアーキテクチャの概要を把握するため、スレッド、関数、および変数の依存関係の調査。
5.結果のソートをすると、かなりの数の同期呼び出しが明らかになります(特に、必要なモジュール周波数(25 Hz)とシナリオ実行時間(10秒)が与えられた場合)。
6.ソースコードに直接ジャンプして、同期呼び出しの根本的な原因の確認し、同期呼び出しを減らすコードセグメントへの置き換えます。
7.シナリオの再実行で同期呼び出しの大幅な減少が確認されます。
タイトル 『Mastering Automotive Software Development/自動車ソフトウェア開発』
###参考文献
[1] Center for Automotive Research (https://www.cargroup.org)
[2] Robot Operating System 2 (https://index.ros.org/doc/ros2)
[3] AUTOSAR Adaptive (https://www.autosar.org/standards/adaptive-platform)
[4] Motor industry software reliability association (https://misra.org.uk)
[5] Multicore Association SHIM2 (https://multicore-association.org/workgroup/shim.php)
[6] Apex.OS by Apex.AI: https://www.apex.ai/products
[7] Autoware (https://github.com/CPFL/Autoware, v1.8)
[8]提案された変更は移植性がなく、ros :: Rateの使用がより適切であると言えるが、更新レートを安定に保つメカニズムには一定の費用が必要。
##最後に
ここまで読んでくださってありがとうございます。
自動車開発、コード解析、並列処理など質問や疑問に思ったことなどあれば
いつでもお待ちしております。