from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.substitutions import LaunchConfiguration from launch_ros.actions import Node def generate_launch_description() -> LaunchDescription: # Optional node name override from launch argument node_name_arg = DeclareLaunchArgument( 'node_name', default_value='ctrlgui_node', description='Name of the ctrlgui node') host_arg = DeclareLaunchArgument( 'host', default_value='0.0.0.0', description='Host interface for NiceGUI') port_arg = DeclareLaunchArgument( 'port', default_value='8080', description='TCP port for NiceGUI') ld = LaunchDescription([node_name_arg, host_arg, port_arg]) ctrlgui_node = Node( package='ctrlgui', executable='ctrlgui_node', name=LaunchConfiguration('node_name'), output='screen', emulate_tty=True, parameters=[], env={ 'HOST': LaunchConfiguration('host'), 'PORT': LaunchConfiguration('port'), }, ) ld.add_action(ctrlgui_node) return ld