1
0
Fork 2
RobotKernal-UESTC/Code/MowingRobot/pibot_ros/ros_ws/run.py

50 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python
import sys
from pynput.keyboard import Key, Listener
import subprocess
running_process = None
def execute_launch(key):
global running_process
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
}
# 检查按键是否对应一个.launch文件
if key in launch_files:
# 获取对应的.launch文件和参数
launch_file, launch_args = launch_files[key]
# 构造启动命令
launch_command = ["roslaunch", launch_file] + launch_args
# 执行对应的.launch文件
running_process = subprocess.Popen(launch_command)
# 监听按键事件
def on_press(key):
global running_process
if key.char == 'q':
print("stop1")
if running_process:
running_process.terminate()
running_process = None # 清除已结束的进程
print("stop2")
return False # 停止监听器
try:
if key.char == 's':
print("按下 's' 键,程序停止")
return False # 停止监听器
execute_launch(key.char)
except AttributeError:
# 按下的不是字符键,忽略
pass
with Listener(on_press=on_press) as listener:
listener.join()