Initial import of FaRui Campus ADS v3.2
This commit is contained in:
Executable
+170
@@ -0,0 +1,170 @@
|
||||
#!/usr/bin/env bash
|
||||
# Start only the master Orin Autoware launch for debugging, without preset-route UI.
|
||||
#
|
||||
# 用法:
|
||||
# ./run_ecar_master_debug.sh [地图目录] [是否启动RViz] [车型]
|
||||
#
|
||||
# 位置参数都可以省略:
|
||||
# 地图目录: $ECAR_MASTER_MAP_PATH
|
||||
# 默认 /home/nvidia/FaRui-test/map/School06
|
||||
# RViz: $ECAR_MASTER_RVIZ
|
||||
# 默认 true,可选 true | false
|
||||
# 车型: $ECAR_MASTER_VEHICLE_MODEL
|
||||
# 默认 ecar_vehicle
|
||||
#
|
||||
# 常用示例:
|
||||
# 启动主板 Autoware,并打开 RViz:
|
||||
# ./run_ecar_master_debug.sh
|
||||
#
|
||||
# 启动主板 Autoware,但关闭 RViz:
|
||||
# ./run_ecar_master_debug.sh /home/nvidia/FaRui-test/map/School06 false
|
||||
#
|
||||
# 用环境变量指定地图:
|
||||
# ECAR_MASTER_MAP_PATH=/home/nvidia/FaRui-test/map/School06 ./run_ecar_master_debug.sh
|
||||
#
|
||||
# 双 Orin 说明:
|
||||
# 本脚本只启动 src/Launcher/farui_launch/launch/ecar_master.launch.xml。
|
||||
# 不启动 UI、预设路线工具、vehicle、control、system。
|
||||
# 从板仍需单独启动 ecar_slave.launch.xml,负责底盘驱动、控制和 system 反馈。
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
||||
log_error() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
|
||||
|
||||
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
find_workspace_root() {
|
||||
if [[ -n "${ECAR_MASTER_WORKSPACE_ROOT:-}" ]]; then
|
||||
echo "${ECAR_MASTER_WORKSPACE_ROOT}"
|
||||
return
|
||||
fi
|
||||
|
||||
local candidates=(
|
||||
"${script_dir}"
|
||||
"${PWD}"
|
||||
)
|
||||
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)"
|
||||
#DEFAULT_MAP_PATH="/home/nvidia/FaRui-test/map/School06" parker01
|
||||
DEFAULT_MAP_PATH="/home/nvidia/FaRui-test/map/School06"
|
||||
DEFAULT_VEHICLE_MODEL="ecar_vehicle"
|
||||
DEFAULT_LAUNCH_FILE="${WORKSPACE_ROOT}/src/Launcher/farui_launch/launch/ecar_master.launch.xml"
|
||||
DEFAULT_OPERATION_MODE_FALLBACK_SCRIPT="${WORKSPACE_ROOT}/debug/operation_mode_state_fallback.py"
|
||||
|
||||
MAP_PATH="${1:-${ECAR_MASTER_MAP_PATH:-${DEFAULT_MAP_PATH}}}"
|
||||
RVIZ="${2:-${ECAR_MASTER_RVIZ:-true}}"
|
||||
VEHICLE_MODEL="${3:-${ECAR_MASTER_VEHICLE_MODEL:-${DEFAULT_VEHICLE_MODEL}}}"
|
||||
LAUNCH_FILE="${ECAR_MASTER_LAUNCH_FILE:-${DEFAULT_LAUNCH_FILE}}"
|
||||
OPERATION_MODE_FALLBACK="${ECAR_MASTER_OPERATION_MODE_FALLBACK:-false}"
|
||||
OPERATION_MODE_FALLBACK_SCRIPT="${ECAR_MASTER_OPERATION_MODE_FALLBACK_SCRIPT:-${DEFAULT_OPERATION_MODE_FALLBACK_SCRIPT}}"
|
||||
|
||||
case "${RVIZ}" in
|
||||
true|false)
|
||||
;;
|
||||
*)
|
||||
log_error "RViz must be true or false, got: ${RVIZ}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${OPERATION_MODE_FALLBACK}" in
|
||||
true|false)
|
||||
;;
|
||||
*)
|
||||
log_error "ECAR_MASTER_OPERATION_MODE_FALLBACK must be true or false, got: ${OPERATION_MODE_FALLBACK}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ ! -f "${WORKSPACE_ROOT}/install/setup.bash" ]]; then
|
||||
log_error "Workspace setup file not found: ${WORKSPACE_ROOT}/install/setup.bash"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "${LAUNCH_FILE}" ]]; then
|
||||
log_error "Master launch file not found: ${LAUNCH_FILE}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "${MAP_PATH}" ]]; then
|
||||
log_error "Map path not found: ${MAP_PATH}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${OPERATION_MODE_FALLBACK}" == "true" && ! -f "${OPERATION_MODE_FALLBACK_SCRIPT}" ]]; then
|
||||
log_error "Operation mode fallback script not found: ${OPERATION_MODE_FALLBACK_SCRIPT}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_info "Workspace: ${WORKSPACE_ROOT}"
|
||||
log_info "Master launch: ${LAUNCH_FILE}"
|
||||
log_info "Map path: ${MAP_PATH}"
|
||||
log_info "Vehicle model: ${VEHICLE_MODEL}"
|
||||
log_info "RViz: ${RVIZ}"
|
||||
log_info "Operation mode fallback: ${OPERATION_MODE_FALLBACK}"
|
||||
log_info "Starting master Autoware without UI."
|
||||
|
||||
cd "${WORKSPACE_ROOT}"
|
||||
set +u
|
||||
source install/setup.bash
|
||||
set -u
|
||||
|
||||
log_ros_pkg_prefix() {
|
||||
local package="$1"
|
||||
local prefix
|
||||
if prefix="$(ros2 pkg prefix "${package}" 2>/dev/null)"; then
|
||||
log_info "ROS package ${package}: ${prefix}"
|
||||
else
|
||||
log_warn "ROS package ${package} not found in the sourced environment."
|
||||
fi
|
||||
}
|
||||
|
||||
log_ros_pkg_prefix "farui_launch"
|
||||
log_ros_pkg_prefix "autoware_behavior_path_planner"
|
||||
log_ros_pkg_prefix "glog_component"
|
||||
|
||||
OPERATION_MODE_FALLBACK_PID=""
|
||||
cleanup() {
|
||||
local status=$?
|
||||
trap - EXIT INT TERM
|
||||
if [[ -n "${OPERATION_MODE_FALLBACK_PID}" ]]; then
|
||||
kill "${OPERATION_MODE_FALLBACK_PID}" 2>/dev/null || true
|
||||
wait "${OPERATION_MODE_FALLBACK_PID}" 2>/dev/null || true
|
||||
fi
|
||||
exit "${status}"
|
||||
}
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
if [[ "${OPERATION_MODE_FALLBACK}" == "true" ]]; then
|
||||
log_info "Starting planning operation mode fallback."
|
||||
python3 "${OPERATION_MODE_FALLBACK_SCRIPT}" &
|
||||
OPERATION_MODE_FALLBACK_PID=$!
|
||||
fi
|
||||
|
||||
ros2 launch "${LAUNCH_FILE}" \
|
||||
map_path:="${MAP_PATH}" \
|
||||
vehicle_model:="${VEHICLE_MODEL}" \
|
||||
launch_planning:=true \
|
||||
launch_system:=false \
|
||||
launch_vehicle:=false \
|
||||
launch_control:=false \
|
||||
launch_api:=true \
|
||||
use_sim_time:=false \
|
||||
rviz:="${RVIZ}" \
|
||||
rviz_respawn:=false
|
||||
Reference in New Issue
Block a user