#!/usr/bin/env python
import subprocess
import keyboard

def execute_launch(launch_file, launch_args=[]):
    # 构造启动命令
    launch_command = ["roslaunch", launch_file] + launch_args
    # 启动一个新的终端并执行对应的.launch文件
    subprocess.Popen(['gnome-terminal', '--', 'bash',' '.join(launch_command)])

# 监听按键事件
def on_press(event):
    key = event.name

    # 检查按键是否对应一个.launch文件
    launch_files = {
        'a': ('/home/firefly/pibot_ros/ros_ws/src/upbot_vision/launch/upbot_vision.launch', []),  # stereo
        'b': ('/home/firefly/pibot_ros/ros_ws/src/pibot_navigation/launch/nav.launch', ['map_name:=10_10m']),  # nav
        'c': ('/home/firefly/pibot_ros/ros_ws/src/ipa_coverage_planning/ipa_room_exploration/ros/test/room_exploration_client.launch', ['robot_env:=10_10m']),  # client
        'd': ('/home/firefly/pibot_ros/ros_ws/src/ipa_coverage_planning/ipa_room_exploration/ros/launch/room_exploration_action_server.launch', []),  # server
    }

    if key in launch_files:
        # 获取对应的.launch文件和参数
        launch_file, launch_args = launch_files[key]
        # 执行对应的.launch文件
        execute_launch(launch_file, launch_args)

keyboard.on_press(on_press)

# 运行程序
keyboard.wait('q')  # 等待按下 'q' 键
