1.shell脚本运行多个launch文件
#!/bin/bash
# 定义函数,用于运行第一个launch文件
function launch_gemini2 {
# echo "Running launch_gemini2..."
cd /绝对路径
source ./devel/setup.bash
roslaunch orbbec_camera gemini2.launch
}
# 定义函数,用于运行第二个launch文件
function launch_lcm_xv2up {
# echo "Running launch_line_follow..."
cd /绝对路径
source ./devel/setup.bash
rosrun vel_trans lcm_xv2up
}
# 定义函数,用于运行第三个launch文件
function launch_line_follow {
# echo "Running launch_line_follow..."
cd /绝对路径
source ./devel/setup.bash
roslaunch robot_vision line_follow.launch
}
# 在后台运行第一个launch文件
launch_gemini2 &
# gnome-terminal -- bash -c "source /home/zyq/zyq_shel/start_both.sh; launch_gemini2; read -p 'Press Enter to continue...'"
# 等待一段时间(可选)
sleep 5
# 在后台运行第二个launch文件
launch_lcm_xv2up &
# gnome-terminal -- bash -c "source /home/zyq/zyq_shel/start_both.sh; launch_gemini2; read -p 'Press Enter to continue...'"
# 等待一段时间(可选)
sleep 5
# 在后台运行第三个launch文件
launch_line_follow &
# gnome-terminal -- bash -c "source /home/zyq/zyq_shell/start_both.sh; launch_line_follow; read -p 'Press Enter to continue...'"
2.
停止某个launch文件
法一:
# 直接停止运行gemini2.launch
pkill -f "roslaunch.*gemini2.launch"
pkill -f "rosrun vel_trans lcm_xv2up"
pkill -f "roslaunch.*line_follow.launch"
请注意,使用pkill
命令终止roslaunch
进程会直接停止整个launch
文件运行,包括其中的所有节点。如果你需要在终止前进行数据保存或清理工作,请确保在执行pkill
命令之前完成这些操作。
法二:
# 通过进程名称查找并终止roslaunch进程
pgrep -f "roslaunch orbbec_camera gemini2.launch" | xargs kill
pgrep -f "rosrun vel_trans lcm_xv2up" | xargs kill
pgrep -f "roslaunch robot_vision line_follow.launch" | xargs kill
通过pgrep -f "roslaunch orbbec_camera gemini2.launch" | xargs kill
命令可以关闭一个launch
文件启动的多个ROS节点。
当你运行roslaunch orbbec_camera gemini2.launch
时,该launch
文件会启动一系列的ROS节点,每个节点都在ROS中以自己的进程运行。这些节点会继续运行,直到它们被终止。
使用pgrep -f "roslaunch orbbec_camera gemini2.launch"
命令,可以查找与指定launch
文件相应的进程,并返回这些进程的ID。然后,xargs kill
命令将这些进程ID传递给kill
命令,从而终止这些进程,即关闭了launch
文件启动的多个ROS节点。
这样,pgrep
和xargs kill
命令的组合允许你一次性关闭与特定launch
文件相关联的所有ROS节点,从而停止该launch
文件的运行。请注意,这将导致所有这些节点同时停止运行,所以在使用该命令之前,请确保你不需要保存任何数据或执行其他清理操作。