from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
def generate_launch_description():
policy_path_arg = DeclareLaunchArgument(
"policy_path", description="Absolute path to the pretrained policy model directory"
)
device_arg = DeclareLaunchArgument(
"device",
default_value="auto",
description="Device to run inference on (cuda, cpu, npu, ascend_om, ascend_om_3403, auto)",
)
input_topic_arg = DeclareLaunchArgument(
"input_topic",
default_value="/preprocessed/batch",
description="Topic to subscribe for preprocessed batches from Edge",
)
output_topic_arg = DeclareLaunchArgument(
"output_topic", default_value="/inference/action", description="Topic to publish inference results back to Edge"
)
cloud_node = Node(
package="inference_service",
executable="pure_inference_node",
name="pure_inference_cloud",
output="screen",
parameters=[
{
"policy_path": LaunchConfiguration("policy_path"),
"device": LaunchConfiguration("device"),
"input_topic": LaunchConfiguration("input_topic"),
"output_topic": LaunchConfiguration("output_topic"),
"use_sim_time": False,
}
],
)
return LaunchDescription(
[policy_path_arg, device_arg, input_topic_arg, output_topic_arg, cloud_node]
)