Initial import of FaRui Autoware Dual-Orin Stack
This commit is contained in:
Executable
+117
@@ -0,0 +1,117 @@
|
||||
#!/usr/bin/env bash
|
||||
# Clean leftover slave-board Autoware/control/vehicle processes.
|
||||
#
|
||||
# Usage:
|
||||
# ./cleanup_slave_autoware.sh
|
||||
#
|
||||
# Notes:
|
||||
# This script is intended for the slave Orin. It stops the slave launch,
|
||||
# control containers, chassis/CAN bridge, MRM, diagnostics, and derived ROS
|
||||
# processes. Do not run it on a board where you intentionally keep another
|
||||
# Autoware stack running in the same ROS environment.
|
||||
|
||||
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} $*"; }
|
||||
|
||||
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
find_workspace_root() {
|
||||
if [[ -n "${SLAVE_WORKSPACE_ROOT:-}" ]]; then
|
||||
echo "${SLAVE_WORKSPACE_ROOT}"
|
||||
return
|
||||
fi
|
||||
|
||||
local candidates=(
|
||||
"${PWD}"
|
||||
"${script_dir}"
|
||||
)
|
||||
for candidate in "${candidates[@]}"; do
|
||||
if [[ -f "${candidate}/install/setup.bash" ]]; then
|
||||
(cd "${candidate}" && pwd)
|
||||
return
|
||||
fi
|
||||
done
|
||||
|
||||
echo "${script_dir}"
|
||||
}
|
||||
|
||||
WORKSPACE_ROOT="$(find_workspace_root)"
|
||||
|
||||
PATTERNS=(
|
||||
"run_slave_real_vehicle.sh"
|
||||
"ros2 launch.*ecar_slave"
|
||||
"ros2 launch.*farui_launch.*/launch/ecar_slave"
|
||||
"launch_ros_[0-9]+"
|
||||
"launch_ros"
|
||||
"component_container"
|
||||
"component_container_mt"
|
||||
"robot_state_publisher"
|
||||
"ecar_can"
|
||||
"ecar_can_receiver"
|
||||
"ecar_can_sender"
|
||||
"socket_can"
|
||||
"socket_can_receiver"
|
||||
"socket_can_sender"
|
||||
"vehicle_velocity_converter"
|
||||
"mrm_emergency_stop_operator"
|
||||
"mrm_handler"
|
||||
"hazard_status_converter"
|
||||
"diagnostic_graph_aggregator"
|
||||
"autoware_trajectory_follower"
|
||||
"autoware_lane_departure_checker"
|
||||
"autoware_shift_decider"
|
||||
"autoware_vehicle_cmd_gate"
|
||||
"autoware_operation_mode_transition_manager"
|
||||
"autoware_autonomous_emergency_braking"
|
||||
"autoware_control_evaluator"
|
||||
"glog_component"
|
||||
"heartbeat_monitor.sh"
|
||||
)
|
||||
|
||||
MATCH_RE='run_slave_real_vehicle|ecar_slave|component_container|robot_state_publisher|ecar_can|socket_can|vehicle_velocity_converter|mrm_|hazard_status|diagnostic_graph|trajectory_follower|lane_departure|shift_decider|vehicle_cmd_gate|operation_mode_transition|autonomous_emergency_braking|control_evaluator|glog_component|launch_ros|heartbeat_monitor'
|
||||
|
||||
terminate_patterns() {
|
||||
local signal="$1"
|
||||
local pattern
|
||||
|
||||
for pattern in "${PATTERNS[@]}"; do
|
||||
pkill "-${signal}" -f "${pattern}" 2>/dev/null || true
|
||||
done
|
||||
}
|
||||
|
||||
log_info "Workspace: ${WORKSPACE_ROOT}"
|
||||
|
||||
if [[ -f "${WORKSPACE_ROOT}/install/setup.bash" ]]; then
|
||||
cd "${WORKSPACE_ROOT}"
|
||||
set +u
|
||||
source install/setup.bash
|
||||
set -u
|
||||
else
|
||||
log_warn "Workspace setup file not found; continuing without sourcing: ${WORKSPACE_ROOT}/install/setup.bash"
|
||||
fi
|
||||
|
||||
log_info "Sending TERM to leftover slave Autoware processes."
|
||||
terminate_patterns TERM
|
||||
sleep 3
|
||||
|
||||
if pgrep -f "${MATCH_RE}" >/dev/null 2>&1; then
|
||||
log_warn "Some slave 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 "${MATCH_RE}" | grep -v grep || true
|
||||
|
||||
log_info "Remaining ROS nodes:"
|
||||
ros2 node list 2>/dev/null || true
|
||||
Reference in New Issue
Block a user