ROS2からlaunchファイルがPythonで記述できるようになりました
各種拡張もimportで読めるようになったのですが……その中で、パラメータを扱うパッケージとしてLaunchConfigurationというのがあります
実際のところ
my_pakageのmy_nodeに対し、my_argsを適用するlaunchファイルは以下のようになります
from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.substitutions import LaunchConfiguration def generate_launch_description(): return LaunchDescription([ # コマンドラインからの引数を宣言 DeclareLaunchArgument( 'my_arg', default_value='default_value', description='A launch argument that can be set externally'), # LaunchConfigurationを使用して引数をノードに渡す Node( package='my_package', executable='my_node', name='my_node_name', parameters=[{'my_parameter': LaunchConfiguration('my_arg')}] ), ])
paramsとの使い分け
LaunchConfigurationはその名の通りlaunchファイルで威力を発揮します
モーターやカメラの個体毎に微妙に違うパラメータを適用したい場合などに特に有効
対してROS2 paramsはnodeの挙動に関するパラメータを取り扱うのに有効です
アルゴリズムの都合で途中で値を変更するケースなどで活躍してくれます