ros-launch-analyzerは、ROSのlaunchファイルの依存関係を分析してグラフを生成するツールです。
ROS1がインストールされていない環境で使うことを想定したツールのため、ROSに依存せずに動かせます。
(そのためROSがインストールされている環境ならば簡単にパスが見つかるようなパッケージも、見つかりにくいことがあります)
- launchファイル間の依存関係を解析
- ROSノードの依存関係を解析
- 依存関係をGraphvizを使ってグラフ化
- シンプルグラフと詳細グラフの生成
- ノード情報のCSV出力
pip install ros-launch-analyzer$ ros-launch-analyzer <launchファイルまたはディレクトリのパス> [--output <出力ファイル名>] [--ros-ws <ROSワークスペースのパス>]解析対象の指定について:
-
ディレクトリを指定した場合: 指定されたディレクトリ以下の全ての
.launchおよび.launch.xmlファイルを再帰的に検索し、それらのファイル間の依存関係(<include>タグによる参照)を全て解析します。間接的な依存関係も含まれます。# 例: mycobot_gazebo パッケージの launch ディレクトリ全体を解析 $ ros-launch-analyzer catkin_ws/src/mycobot_ros/mycobot_gazebo/launch --ros-ws "$(pwd)/catkin_ws"
-
単一のlaunchファイルを指定した場合: 指定された launch ファイルと、そのファイルが 直接
<include>タグで参照している launch ファイルのみ を対象として解析し、グラフを生成します。指定ファイルから見て2階層目以降の間接的な依存関係はグラフに含まれません。これは、特定のファイル周辺の直接的な依存関係に絞って確認したい場合に便利です。# 例: demo.launch とそれが直接 include するファイルのみを解析 $ ros-launch-analyzer catkin_ws/src/mycobot_ros/mycobot_move_it_config/launch/demo.launch --ros-ws "$(pwd)/catkin_ws"
mycobot_rosのlaunchファイルを解析する例 (ディレクトリ指定)
$ cd /tmp
$ mkdir -p catkin_ws/src
$ git clone https://github.com/Tiryoh/mycobot_ros.git catkin_ws/src/mycobot_ros
$ ros-launch-analyzer catkin_ws/src/mycobot_ros/mycobot_gazebo/launch --ros-ws "$(pwd)/catkin_ws"from ros_launch_analyzer.analyzer import LaunchAnalyzer
# 解析器の初期化
analyzer = LaunchAnalyzer("/path/to/launch/dir", "/path/to/catkin_ws")
# launchファイルの解析
analyzer.parse_launch_file("/path/to/your.launch")
# グラフの生成
analyzer.create_graph("output_filename")
# または
analyzer.create_simple_graph("output_filename") # シンプルグラフのみ
analyzer.create_full_graph("output_filename") # 詳細グラフのみ以下のファイルを生成し出力します。
dotファイルはxdotやVSCodeの拡張機能(Graphviz Interactive Preview)などで表示できます。
生成されたファイルはClaudeなどでdrawioのフォーマットに変換して使用すると便利です。
ros_nodes_graph_simple.dot- launchファイルの依存関係を表すGraphvizのdotファイル
ros_nodes_graph_simple.pdf- 上記のdotファイルをレンダリングしたPDF
ros_nodes_graph.dot- launchファイル(ROSパッケージも含む)の依存関係を表すGraphvizのdotファイル
ros_nodes_graph.pdf- 上記のdotファイルをレンダリングしたPDF
ros_nodes_graph_nodes.csv- launchファイルのノード名とパッケージ名を出力したCSVファイル
simpleグラフをdrawioのフォーマット(flow.drawio.txt)に変換したもの

- Python 3.8以上
- Graphviz(システムにインストールされている必要があります)
本プロジェクトはMITライセンスのもとで公開されています。

