TIAN-LEIDA-JIANCE/quick_linux_package.sh

352 lines
9.6 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 ""