146 lines
4.0 KiB
Bash
Executable File
146 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# ECar Mapping Script - 在线建图启动脚本
|
|
# 使用方法: ./mapping.sh [选项]
|
|
|
|
set -e # 遇到错误立即退出
|
|
|
|
# ============ 配置 ============
|
|
WORKSPACE_DIR="/home/nvidia/FaRui/v3.1"
|
|
MAP_SAVE_PATH="${WORKSPACE_DIR}/maps/$(date +%Y%m%d_%H%M%S)"
|
|
SLAM_METHOD="liorf" # 可选: fast_lio2 或 liorf
|
|
RECORD_BAG="false"
|
|
LAUNCH_RVIZ="true"
|
|
|
|
# ============ 帮助信息 ============
|
|
function show_help() {
|
|
echo "ECar Mapping Script - 在线建图启动脚本"
|
|
echo ""
|
|
echo "用法: $0 [选项]"
|
|
echo ""
|
|
echo "选项:"
|
|
echo " -h, --help 显示帮助信息"
|
|
echo " -m, --method METHOD 选择SLAM算法: fast_lio2 或 liorf (默认: ${SLAM_METHOD})"
|
|
echo " -s, --save PATH 地图保存路径 (默认: ${MAP_SAVE_PATH})"
|
|
echo " -r, --record 录制rosbag备份"
|
|
echo " --no-rviz 不启动RViz"
|
|
echo " -b, --bag-path PATH 指定rosbag录制路径"
|
|
echo ""
|
|
echo "示例:"
|
|
echo " $0 # 默认使用liorf建图"
|
|
echo " $0 -m fast_lio2 # 使用FAST_LIO2建图"
|
|
echo " $0 -r -s /home/nvidia/my_maps # 建图并录制bag到指定目录"
|
|
echo " $0 --no-rviz # 建图但不启动RViz"
|
|
exit 0
|
|
}
|
|
|
|
# ============ 解析参数 ============
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
-h|--help)
|
|
show_help
|
|
;;
|
|
-m|--method)
|
|
SLAM_METHOD="$2"
|
|
shift 2
|
|
;;
|
|
-s|--save)
|
|
MAP_SAVE_PATH="$2"
|
|
shift 2
|
|
;;
|
|
-r|--record)
|
|
RECORD_BAG="true"
|
|
shift
|
|
;;
|
|
--no-rviz)
|
|
LAUNCH_RVIZ="false"
|
|
shift
|
|
;;
|
|
-b|--bag-path)
|
|
BAG_SAVE_PATH="$2"
|
|
shift 2
|
|
;;
|
|
*)
|
|
echo "未知参数: $1"
|
|
show_help
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# ============ 验证参数 ============
|
|
if [[ "${SLAM_METHOD}" != "fast_lio2" && "${SLAM_METHOD}" != "liorf" ]]; then
|
|
echo "错误: 不支持的SLAM算法 '${SLAM_METHOD}'"
|
|
echo "支持的算法: fast_lio2, liorf"
|
|
exit 1
|
|
fi
|
|
|
|
# 创建地图保存目录
|
|
mkdir -p "${MAP_SAVE_PATH}"
|
|
echo "地图将保存到: ${MAP_SAVE_PATH}"
|
|
|
|
# ============ 环境设置 ============
|
|
echo "================================"
|
|
echo " ECar 在线建图启动"
|
|
echo "================================"
|
|
echo "工作目录: ${WORKSPACE_DIR}"
|
|
echo "SLAM算法: ${SLAM_METHOD}"
|
|
echo "RViz: ${LAUNCH_RVIZ}"
|
|
echo "录制bag: ${RECORD_BAG}"
|
|
echo "================================"
|
|
|
|
# 切换到工作目录
|
|
cd "${WORKSPACE_DIR}"
|
|
|
|
# 加载ROS环境
|
|
echo "[1/3] 加载ROS2环境..."
|
|
if [ -f "install/setup.bash" ]; then
|
|
source install/setup.bash
|
|
echo " 已加载本地工作空间"
|
|
else
|
|
echo " 警告: 未找到本地工作空间,使用系统ROS2"
|
|
source /opt/ros/humble/setup.bash
|
|
fi
|
|
|
|
# 检查必要的包是否存在
|
|
echo "[2/3] 检查必要组件..."
|
|
REQUIRED_PKGS=("farui_launch" "timoo_ros2_driver" "wheeltec_gps_driver" "hipnuc_imu")
|
|
for pkg in "${REQUIRED_PKGS[@]}"; do
|
|
if ros2 pkg list | grep -q "^${pkg}$"; then
|
|
echo " ✓ ${pkg}"
|
|
else
|
|
echo " ✗ ${pkg} 未找到!"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# 启动建图
|
|
echo "[3/3] 启动建图节点..."
|
|
echo ""
|
|
|
|
# 构建启动参数
|
|
LAUNCH_ARGS=""
|
|
LAUNCH_ARGS+=" slam_method:=${SLAM_METHOD}"
|
|
LAUNCH_ARGS+=" map_save_path:=${MAP_SAVE_PATH}"
|
|
LAUNCH_ARGS+=" record_bag:=${RECORD_BAG}"
|
|
LAUNCH_ARGS+=" rviz:=${LAUNCH_RVIZ}"
|
|
|
|
if [ -n "${BAG_SAVE_PATH}" ]; then
|
|
LAUNCH_ARGS+=" map_save_path:=${BAG_SAVE_PATH}"
|
|
fi
|
|
|
|
echo "启动参数: ${LAUNCH_ARGS}"
|
|
echo ""
|
|
|
|
# 启动 launch 文件
|
|
ros2 launch farui_launch ecar_mapping.launch.xml ${LAUNCH_ARGS}
|
|
|
|
# 建图结束后提示
|
|
echo ""
|
|
echo "================================"
|
|
echo " 建图已结束"
|
|
echo "================================"
|
|
if [ -d "${MAP_SAVE_PATH}" ]; then
|
|
echo "地图保存位置: ${MAP_SAVE_PATH}"
|
|
ls -lh "${MAP_SAVE_PATH}" 2>/dev/null || true
|
|
fi
|
|
echo "================================"
|