77 lines
2.4 KiB
Bash
Executable File
77 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
PID_FILE=$1
|
||
|
||
# 检查 Python3 是否安装
|
||
if ! command -v python3 &> /dev/null; then
|
||
echo -e "\033[31m错误:未找到 Python3,请确保已安装 Python3\033[0m"
|
||
exit 1
|
||
fi
|
||
|
||
# 检查 ROS 是否安装
|
||
if ! command -v roslaunch &> /dev/null; then
|
||
echo -e "\033[31m错误:未找到 roslaunch,请确保已安装 ROS\033[0m"
|
||
exit 1
|
||
fi
|
||
|
||
# 清理旧的 PID 文件(如果存在)
|
||
if [ -f "$PID_FILE" ]; then
|
||
rm "$PID_FILE"
|
||
echo -e "\033[33m已删除旧的 PID 文件: $PID_FILE\033[0m"
|
||
fi
|
||
|
||
# 捕获 Ctrl+C 信号,清理后台进程
|
||
trap 'echo -e "\033[31m接收到 Ctrl+C,清理后台进程...\033[0m"; \
|
||
if [ -f "$PID_FILE" ]; then \
|
||
while read -r pid; do \
|
||
kill $pid 2>/dev/null && echo -e "\033[32m已终止进程 PID: $pid\033[0m"; \
|
||
done < "$PID_FILE"; \
|
||
fi; \
|
||
exit 0' SIGINT
|
||
|
||
# 执行 kuavo_tf2_web_republisher
|
||
echo -e "\033[32m启动 kuavo_tf2_web_republisher...\033[0m"
|
||
cd ~/kuavo_ros_application && source devel/setup.bash && roslaunch kuavo_tf2_web_republisher start_websocket_server.launch &
|
||
WEB_PID=$!
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "\033[32mkuavo_tf2_web_republisher 启动成功 (PID: $WEB_PID)\033[0m"
|
||
echo "$WEB_PID" >> "$PID_FILE"
|
||
else
|
||
echo -e "\033[31mkuavo_tf2_web_republisher 启动失败\033[0m"
|
||
exit 1
|
||
fi
|
||
|
||
DELAY=5
|
||
sleep $DELAY
|
||
# 执行 load_kuavo_gazebo_manipulate
|
||
echo -e "\033[32m启动 load_kuavo_gazebo_manipulate...\033[0m"
|
||
cd ~/kuavo-ros-opensource && source devel/setup.bash && roslaunch humanoid_controllers load_kuavo_gazebo_manipulate.launch joystick_type:=bt2pro &
|
||
GAZEBO_PID=$!
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "\033[32mload_kuavo_gazebo_manipulate 启动成功 (PID: $GAZEBO_PID)\033[0m"
|
||
echo "$GAZEBO_PID" >> "$PID_FILE"
|
||
else
|
||
echo -e "\033[31mload_kuavo_gazebo_manipulate 启动失败\033[0m"
|
||
kill $WEB_PID 2>/dev/null
|
||
rm "$PID_FILE" 2>/dev/null
|
||
exit 1
|
||
fi
|
||
|
||
DELAY=10
|
||
sleep $DELAY
|
||
# 执行 robot_strategies
|
||
echo -e "\033[32m启动 robot_strategies...\033[0m"
|
||
cd ~/kuavo-ros-opensource && source devel/setup.bash && roslaunch ar_control robot_strategies.launch &
|
||
STRATEGIES_PID=$!
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "\033[32mrobot_strategies 启动成功 (PID: $STRATEGIES_PID)\033[0m"
|
||
echo "$STRATEGIES_PID" >> "$PID_FILE"
|
||
else
|
||
echo -e "\033[31mrobot_strategies 启动失败\033[0m"
|
||
kill $WEB_PID $GAZEBO_PID 2>/dev/null
|
||
rm "$PID_FILE" 2>/dev/null
|
||
exit 1
|
||
fi
|
||
|
||
# 在这里阻塞
|
||
wait |