Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

ROS2のlaunchファイル用のパラメータを色々するLaunchConfiguration

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の挙動に関するパラメータを取り扱うのに有効です
アルゴリズムの都合で途中で値を変更するケースなどで活躍してくれます