目的
主要适配某些有启动顺序要求的launch文件或节点
方法
使用TimerAction
来设置一个定时器,然后在定时器触发后启动目标节点或launch文件。
示例代码:
from launch import LaunchDescription
from launch.actions import TimerAction, DeclareLaunchArgument
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
# 可以在这里定义一些参数
DeclareLaunchArgument('delay_time', default_value='5', description='Delay time in seconds'),
# 定义定时器操作
TimerAction(
period=5.0, # 这里设置延迟时间为5秒
actions=[
Node(
package='your_package_name',
executable='your_node_executable',
name='your_node_name',
output='screen'
)
]
)
])
在这个示例中,TimerAction
将在5秒后启动指定的节点。可根据需要调整period
参数的值,以设置所需的延迟时间。
如果希望在延迟后启动整个launch文件,可以使用IncludeLaunchDescription
与TimerAction
结合,如下所示:
from launch import LaunchDescription
from launch.actions import TimerAction
from launch_ros.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
def generate_launch_description():
return LaunchDescription([
TimerAction(
period=5.0, # 设置延迟时间
actions=[
IncludeLaunchDescription(
PythonLaunchDescriptionSource('path/to/your/other_launch_file.py')
)
]
)
])
请确保替换your_package_name
、your_node_executable
和路径到目标launch文件为自己的实际值。这样就可以实现按固定时间后启动指定的节点或launch文件。