ROS2:如何将参数从一个启动文件传递到子启动文件
ROS2: How to pass arguments from one launch file to a child launch file
我有一个主 bringup.launch.py
启动文件,其启动描述符包括 child.launch.py
作为 child 启动文件,如下所示:
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
def generate_launch_description():
package_prefix = get_package_share_directory('child_package')
argument_for_child = "lala"
return LaunchDescription([
# include the child launch file
IncludeLaunchDescription(
PythonLaunchDescriptionSource([package_prefix, '/launch/child.launch.py'])
),
])
如何将参数从 bringup.launch.py
传递到 child.launch.py
?
在 bringup.launch.py
中,您必须声明启动参数,并将其添加到 launch_arguments 映射中,如下所示:
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.actions import DeclareLaunchArgument
def generate_launch_description():
package_prefix = get_package_share_directory('child_package')
argument_for_child = "lala"
return LaunchDescription([
# Declare the launc parameter
DeclareLaunchArgument(
'argument_for_child',
default_value = argument_for_child,
description = 'Argument for child launch file'),
# include the child launch file
IncludeLaunchDescription(
PythonLaunchDescriptionSource([package_prefix, '/launch/child.launch.py'])
launch_arguments = {'argument_for_child': argument_for_child}.items()
),
])
在 child.launch.py
中,您读入了这样传递的参数:
from launch.substitutions import LaunchConfiguration
def generate_launch_description():
value= LaunchConfiguration('argument_for_child', default='-')
...
注:此为ROS2版本Dashing
我有一个主 bringup.launch.py
启动文件,其启动描述符包括 child.launch.py
作为 child 启动文件,如下所示:
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
def generate_launch_description():
package_prefix = get_package_share_directory('child_package')
argument_for_child = "lala"
return LaunchDescription([
# include the child launch file
IncludeLaunchDescription(
PythonLaunchDescriptionSource([package_prefix, '/launch/child.launch.py'])
),
])
如何将参数从 bringup.launch.py
传递到 child.launch.py
?
在 bringup.launch.py
中,您必须声明启动参数,并将其添加到 launch_arguments 映射中,如下所示:
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.actions import DeclareLaunchArgument
def generate_launch_description():
package_prefix = get_package_share_directory('child_package')
argument_for_child = "lala"
return LaunchDescription([
# Declare the launc parameter
DeclareLaunchArgument(
'argument_for_child',
default_value = argument_for_child,
description = 'Argument for child launch file'),
# include the child launch file
IncludeLaunchDescription(
PythonLaunchDescriptionSource([package_prefix, '/launch/child.launch.py'])
launch_arguments = {'argument_for_child': argument_for_child}.items()
),
])
在 child.launch.py
中,您读入了这样传递的参数:
from launch.substitutions import LaunchConfiguration
def generate_launch_description():
value= LaunchConfiguration('argument_for_child', default='-')
...
注:此为ROS2版本Dashing