#!/bin/bash # 雷达检测系统 - 快速Linux打包脚本 echo "🚀 快速创建Linux软件包..." # 检查是否在正确的目录 if [ ! -f "CMakeLists.txt" ] || [ ! -d "src" ]; then echo "❌ 请在项目根目录运行此脚本" exit 1 fi # 创建简单的软件包 PACKAGE_DIR="yushu-radar-linux" rm -rf ${PACKAGE_DIR} mkdir -p ${PACKAGE_DIR} echo "🔨 编译程序..." # 确保程序已编译 if [ ! -d "build" ]; then mkdir build cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc) yushu_leida_fixed cd .. elif [ ! -f "build/yushu_leida_fixed" ]; then cd build make -j$(nproc) yushu_leida_fixed cd .. fi if [ ! -f "build/yushu_leida_fixed" ]; then echo "❌ 编译失败,请检查错误信息" exit 1 fi echo "📦 打包文件..." # 复制主程序 cp build/yushu_leida_fixed ${PACKAGE_DIR}/ # 复制配置文件 cp -r config ${PACKAGE_DIR}/ # 创建简单的启动脚本 cat > ${PACKAGE_DIR}/start.sh << 'EOF' #!/bin/bash # 雷达检测系统启动脚本 echo "🚀 启动雷达检测系统..." # 检查设备 if [ ! -e "/dev/ttyUSB0" ] && [ ! -e "/dev/ttyUSB1" ] && [ ! -e "/dev/ttyACM0" ]; then echo "⚠️ 未找到雷达设备,请检查连接" echo "可用设备:" ls -l /dev/ttyUSB* /dev/ttyACM* 2>/dev/null || echo "无串口设备" fi # 检查权限 for device in /dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyACM0; do if [ -e "$device" ]; then if [ ! -r "$device" ] || [ ! -w "$device" ]; then echo "⚠️ 设备权限不足:$device" echo "请运行:sudo chmod 666 $device" echo "或:sudo usermod -a -G dialout \$USER (需要重新登录)" else echo "✅ 设备权限正常:$device" break fi fi done # 启动程序 echo "🎯 启动主程序..." ./yushu_leida_fixed EOF chmod +x ${PACKAGE_DIR}/start.sh # 创建桌面快捷方式文件 echo "🔗 创建桌面快捷方式文件..." cat > ${PACKAGE_DIR}/yushu-radar.desktop << 'EOF' [Desktop Entry] Version=1.0 Type=Application Name=雷达检测系统 Name[en]=YuShu Radar Detection System Comment=雷达实时检测和点云显示系统 Comment[en]=YuShu Radar real-time detection and point cloud display system Exec=bash -c 'cd "%k" && ./start.sh' Icon=applications-science Terminal=true Categories=Science;Engineering; StartupNotify=true Path=%k Keywords=radar;detection;pointcloud;宇树;雷达;检测;点云; EOF # 创建快捷方式安装脚本 cat > ${PACKAGE_DIR}/create_shortcuts.sh << 'EOF' #!/bin/bash # 创建雷达检测系统的快捷方式 echo "🔗 创建雷达检测系统快捷方式..." # 获取当前目录的绝对路径 INSTALL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" DESKTOP_FILE="$INSTALL_DIR/yushu-radar.desktop" echo "📁 安装目录: $INSTALL_DIR" # 1. 创建桌面快捷方式 if [ -d "$HOME/Desktop" ]; then echo "🖥️ 创建桌面快捷方式..." cp "$DESKTOP_FILE" "$HOME/Desktop/雷达检测系统.desktop" chmod +x "$HOME/Desktop/雷达检测系统.desktop" # 修正桌面文件中的路径 sed -i "s|%k|$INSTALL_DIR|g" "$HOME/Desktop/雷达检测系统.desktop" echo "✅ 桌面快捷方式已创建: ~/Desktop/雷达检测系统.desktop" else echo "⚠️ 未找到桌面目录,跳过桌面快捷方式创建" fi # 2. 创建应用程序菜单快捷方式 APPLICATIONS_DIR="$HOME/.local/share/applications" mkdir -p "$APPLICATIONS_DIR" echo "📱 创建应用程序菜单快捷方式..." cp "$DESKTOP_FILE" "$APPLICATIONS_DIR/yushu-radar.desktop" chmod +x "$APPLICATIONS_DIR/yushu-radar.desktop" # 修正应用程序菜单文件中的路径 sed -i "s|%k|$INSTALL_DIR|g" "$APPLICATIONS_DIR/yushu-radar.desktop" echo "✅ 应用程序菜单快捷方式已创建" # 3. 创建命令行快捷方式 echo "⌨️ 创建命令行快捷方式..." # 创建用户级快捷方式 USER_BIN_DIR="$HOME/.local/bin" mkdir -p "$USER_BIN_DIR" cat > "$USER_BIN_DIR/yushu-radar" << SCRIPT_EOF #!/bin/bash #雷达检测系统启动器 cd "$INSTALL_DIR" ./start.sh SCRIPT_EOF chmod +x "$USER_BIN_DIR/yushu-radar" echo "✅ 用户命令行快捷方式已创建: ~/.local/bin/yushu-radar" # 检查PATH设置 if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then echo "⚠️ ~/.local/bin 不在PATH中" echo " 建议将以下行添加到 ~/.bashrc:" echo " export PATH=\"\$HOME/.local/bin:\$PATH\"" echo " 然后运行: source ~/.bashrc" else echo "✅ 现在可以在任何位置运行: yushu-radar" fi # 4. 尝试创建系统级快捷方式 (可选) read -p "是否创建系统级命令快捷方式?(需要sudo权限) (y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then if sudo ln -sf "$USER_BIN_DIR/yushu-radar" /usr/local/bin/yushu-radar 2>/dev/null; then echo "✅ 系统级快捷方式已创建: /usr/local/bin/yushu-radar" else echo "❌ 系统级快捷方式创建失败" fi fi echo "" echo "🎉 快捷方式创建完成!" echo "" echo "📋 使用方法:" echo "1. 桌面双击: 雷达检测系统" echo "2. 应用程序菜单: 搜索 '雷达'" echo "3. 命令行: yushu-radar" echo "4. 直接启动: ./start.sh" echo "" EOF chmod +x ${PACKAGE_DIR}/create_shortcuts.sh # 创建安装脚本 cat > ${PACKAGE_DIR}/install.sh << 'EOF' #!/bin/bash # 简单安装脚本 echo "📦 安装雷达检测系统..." # 检查依赖 echo "🔍 检查系统依赖..." missing_deps=() if ! pkg-config --exists pcl_common 2>/dev/null; then missing_deps+=("libpcl-dev") fi if ! pkg-config --exists yaml-cpp 2>/dev/null; then missing_deps+=("libyaml-cpp-dev") fi if ! command -v espeak >/dev/null 2>&1; then missing_deps+=("espeak") fi if [ ${#missing_deps[@]} -gt 0 ]; then echo "❌ 缺少依赖包:" printf '%s\n' "${missing_deps[@]}" echo "" echo "请运行以下命令安装依赖:" echo "sudo apt update" echo "sudo apt install ${missing_deps[*]}" echo "" read -p "是否现在安装依赖?(y/N): " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then sudo apt update sudo apt install -y "${missing_deps[@]}" else echo "⚠️ 请手动安装依赖后再运行程序" fi fi # 复制到系统目录 (可选) read -p "是否安装到系统目录 /opt/yushu-radar?(y/N): " -n 1 -r echo SYSTEM_INSTALL=$REPLY if [[ $REPLY =~ ^[Yy]$ ]]; then sudo mkdir -p /opt/yushu-radar sudo cp -r * /opt/yushu-radar/ sudo ln -sf /opt/yushu-radar/start.sh /usr/local/bin/yushu-radar echo "✅ 已安装到系统目录,可以使用 'yushu-radar' 命令启动" else echo "✅ 本地安装完成,使用 './start.sh' 启动程序" fi # 询问是否创建快捷方式 echo "" read -p "是否创建桌面和菜单快捷方式?(Y/n): " -n 1 -r echo if [[ ! $REPLY =~ ^[Nn]$ ]]; then echo "🔗 创建快捷方式..." ./create_shortcuts.sh fi echo "" echo "🎉 安装完成!" echo "" echo "📋 使用方法:" echo "1. 本地启动: ./start.sh" if [[ $SYSTEM_INSTALL =~ ^[Yy]$ ]]; then echo "2. 系统启动: yushu-radar" fi echo "3. 桌面快捷方式: 双击桌面图标" echo "4. 应用程序菜单: 搜索'雷达'" echo "5. 命令行快捷方式: yushu-radar" echo "" echo "⚠️ 重要提醒:" echo "如果遇到设备权限问题,请运行:" echo "sudo usermod -a -G dialout \$USER" echo "然后重新登录" EOF chmod +x ${PACKAGE_DIR}/install.sh # 创建使用说明 cat > ${PACKAGE_DIR}/README.txt << 'EOF' 雷达检测系统 - Linux版本 📋 功能特点: - 实时3D点云显示 - 坐标轴和网格显示 - 遮挡物检测 (20厘米预警) - 裂缝检测 (100米阈值) - 声音预警系统 📦 使用方法: 1. 安装依赖和程序: ./install.sh 2. 启动程序: ./start.sh 3. 如果遇到权限问题: sudo chmod 666 /dev/ttyUSB0 或 sudo usermod -a -G dialout $USER (需要重新登录) 🔗 快捷方式: 安装后可通过以下方式启动: - 桌面快捷方式: 双击"雷达检测系统"图标 - 应用程序菜单: 搜索"雷达" - 命令行: 输入 yushu-radar - 手动创建快捷方式: ./create_shortcuts.sh 📁 文件说明: - yushu_leida_fixed: 主程序 - config/: 配置文件目录 - start.sh: 启动脚本 - install.sh: 安装脚本 - create_shortcuts.sh: 快捷方式创建脚本 - yushu-radar.desktop: 桌面快捷方式文件 🔧 配置文件: 主要配置在 config/config.yaml 中: - port: 串口设备路径 (默认 /dev/ttyUSB0) - occlusion_detection.alert_distance: 遮挡物预警距离 (默认 0.20m) - slope_detection.crack_threshold: 裂缝检测阈值 (默认 100.0m) ❓ 故障排除: 1. 找不到设备:检查雷达连接,查看 ls /dev/ttyUSB* 2. 权限被拒绝:运行 sudo chmod 666 /dev/ttyUSB0 3. 缺少依赖:运行 ./install.sh 自动安装 4. 图形界面问题:确保X11转发正常 (远程连接时) 5. 快捷方式问题:运行 ./create_shortcuts.sh 重新创建 版本:1.0.0 EOF # 创建压缩包 echo "🗜️ 创建压缩包..." tar -czf yushu-radar-linux.tar.gz ${PACKAGE_DIR}/ echo "" echo "🎉 Linux软件包创建完成!" echo "" echo "📁 软件包目录: ${PACKAGE_DIR}/" echo "📦 压缩包: yushu-radar-linux.tar.gz" echo "" echo "🔗 新增功能:" echo "✅ 桌面快捷方式支持" echo "✅ 应用程序菜单集成" echo "✅ 命令行快捷方式" echo "✅ 自动快捷方式创建" echo "" echo "📋 分发方法:" echo "1. 直接使用目录: cd ${PACKAGE_DIR} && ./install.sh" echo "2. 分发压缩包: 解压后运行 ./install.sh" echo "" echo "✅ 用户只需要:" echo " tar -xzf yushu-radar-linux.tar.gz" echo " cd yushu-radar-linux" echo " ./install.sh" echo " # 然后可以通过多种方式启动程序" echo ""