#!/usr/bin/env bash # Clean leftover master-board Autoware/debug processes. # # 用法: # ./cleanup_master_autoware.sh # # 说明: # 这个脚本用于主板调试后清理残留进程。 # 如果你在同一块板上故意运行从板底盘驱动,不要执行本脚本, # 因为它会停止 ecar_can/socket_can 相关节点。 set -euo pipefail GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO]${NC} $*"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } PATTERNS=( "run_ecar_master_debug.sh" "run_preset_route_real_vehicle.sh" "ros2 launch.*ecar_master" "ros2 launch.*farui_launch" "launch_ros_[0-9]+" "launch_ros" "component_container" "component_container_mt" "timoo_ros" "pointcloud_process" "map_hash_generator" "imu_corrector" "gyro_bias_validator" "hipnuc" "imu_sub" "rqt_gui" "rqt_gui_py_node" "rviz2" "ecar_can" "ecar_can_receiver" "ecar_can_sender" "socket_can" "socket_can_receiver" "socket_can_sender" ) terminate_patterns() { local signal="$1" local pattern for pattern in "${PATTERNS[@]}"; do pkill "-${signal}" -f "${pattern}" 2>/dev/null || true done } log_info "Sending TERM to leftover master Autoware processes." terminate_patterns TERM sleep 3 if pgrep -f "component_container|component_container_mt|timoo_ros|map_hash_generator|imu_corrector|gyro_bias_validator|ecar_can|socket_can|rviz2|rqt_gui|launch_ros|ecar_can_receiver|ecar_can_sender|socket_can_receiver|socket_can_sender" >/dev/null 2>&1; then log_warn "Some processes are still alive; sending KILL." terminate_patterns KILL sleep 1 fi log_info "Restarting ROS daemon to refresh node discovery." ros2 daemon stop >/dev/null 2>&1 || true ros2 daemon start >/dev/null 2>&1 || true log_info "Remaining matching processes:" ps -ef | grep -E 'autoware|component_container|rviz2|timoo|ros2 launch|launch_ros|preset_route|ecar_can|socket_can|imu_corrector|gyro_bias|map_hash|rqt_gui' | grep -v grep || true log_info "Remaining ROS nodes:" ros2 node list 2>/dev/null || true