195 lines
5.6 KiB
Bash
195 lines
5.6 KiB
Bash
#!/bin/bash
|
|
# ============================================
|
|
# Dragon Q6A 环境自动配置脚本
|
|
# 适用:Python 3.12 + PyQt5 + Open3D + PyOpenGL + GPU 硬件加速
|
|
# ============================================
|
|
|
|
set -e # 遇到错误立即退出
|
|
|
|
echo "============================================"
|
|
echo " Dragon Q6A 环境配置开始"
|
|
echo "============================================"
|
|
|
|
# ============================================
|
|
# 1. 系统更新
|
|
# ============================================
|
|
echo ""
|
|
echo "[1/7] 更新系统..."
|
|
sudo rsetup
|
|
|
|
# ============================================
|
|
# 2. 安装系统依赖
|
|
# ============================================
|
|
echo ""
|
|
echo "[2/7] 安装系统依赖..."
|
|
sudo apt install -y \
|
|
build-essential git wget curl \
|
|
python3-pyqt5 pyqt5-dev-tools \
|
|
python3-pyqt5.qtsvg python3-pyqt5.qtwebengine \
|
|
mesa-utils mesa-vulkan-drivers \
|
|
libgl1-mesa-dri libglx-mesa0 \
|
|
libegl1-mesa-dev libgles2-mesa-dev \
|
|
libgbm-dev libdrm-dev libvulkan-dev \
|
|
vulkan-tools libglu1-mesa-dev libx11-xcb-dev \
|
|
python3-venv python3-pip \
|
|
v4l-utils ffmpeg
|
|
|
|
# ============================================
|
|
# 3. 验证 GPU
|
|
# ============================================
|
|
echo ""
|
|
echo "[3/7] 验证 GPU 驱动..."
|
|
echo "OpenGL 渲染器信息:"
|
|
glxinfo | grep "OpenGL renderer" | head -1
|
|
echo ""
|
|
echo "Vulkan 驱动信息:"
|
|
vulkaninfo | grep -E "driverName|deviceName" | head -4 || echo "⚠️ 请检查 Vulkan 驱动"
|
|
|
|
# ============================================
|
|
# 4. 设置虚拟环境
|
|
# ============================================
|
|
echo ""
|
|
echo "[4/7] 设置 Python 虚拟环境..."
|
|
|
|
# 定义项目目录
|
|
PROJECT_DIR1="$HOME/orisys_gripper/ctag2f-90d-sdk"
|
|
PROJECT_DIR2="$HOME/orisys_gripper/orisys-sdk"
|
|
|
|
configure_project() {
|
|
local PROJECT_DIR="$1"
|
|
if [ -d "$PROJECT_DIR" ]; then
|
|
echo " 配置项目: $PROJECT_DIR"
|
|
cd "$PROJECT_DIR"
|
|
|
|
# 删除旧的虚拟环境(如果存在)
|
|
if [ -d ".venv" ]; then
|
|
echo " 移除旧的虚拟环境..."
|
|
rm -rf .venv
|
|
fi
|
|
|
|
# 创建新虚拟环境
|
|
echo " 创建虚拟环境..."
|
|
python3 -m venv .venv --system-site-packages
|
|
|
|
# 激活并安装依赖(使用 . 代替 source)
|
|
echo " 安装 Python 依赖..."
|
|
. .venv/bin/activate
|
|
|
|
# 升级 pip
|
|
pip install --upgrade pip
|
|
|
|
# 安装 requirements.txt(如果存在)
|
|
if [ -f "requirements.txt" ]; then
|
|
pip install -r requirements.txt
|
|
fi
|
|
#pip install pyqtgraph
|
|
|
|
# 安装基础包
|
|
#pip install PyOpenGL
|
|
#pip install open3d-unofficial-arm
|
|
#pip install numpy scipy matplotlib pyyaml
|
|
|
|
# 验证安装
|
|
echo " 验证安装..."
|
|
python -c "import PyQt5.QtCore; print(' PyQt5 OK')"
|
|
python -c "from OpenGL.GL import *; print(' OpenGL OK')"
|
|
python -c "import open3d as o3d; print(' Open3D OK: v' + o3d.__version__)"
|
|
|
|
# 退出虚拟环境
|
|
deactivate
|
|
|
|
cd - > /dev/null
|
|
echo " ✅ $PROJECT_DIR 配置完成"
|
|
return 0
|
|
else
|
|
echo " ⚠️ 目录不存在: $PROJECT_DIR (跳过)"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 配置项目
|
|
configure_project "$PROJECT_DIR1"
|
|
configure_project "$PROJECT_DIR2"
|
|
|
|
# ============================================
|
|
# 6. 创建启动脚本
|
|
# ============================================
|
|
echo ""
|
|
echo "[6/7] 创建启动脚本..."
|
|
|
|
cat > ~/run_visualizer.sh << 'EOF'
|
|
#!/bin/bash
|
|
# Dragon Q6A 可视化程序启动脚本
|
|
|
|
# 查找项目目录
|
|
if [ -d "$HOME/orisys_gripper/ctag2f-90d-sdk" ]; then
|
|
PROJECT_DIR="$HOME/orisys_gripper/ctag2f-90d-sdk"
|
|
elif [ -d "$HOME/orisys_gripper/orisys-sdk" ]; then
|
|
PROJECT_DIR="$HOME/orisys_gripper/orisys-sdk"
|
|
else
|
|
echo "错误: 找不到项目目录"
|
|
exit 1
|
|
fi
|
|
|
|
echo "进入项目目录: $PROJECT_DIR"
|
|
cd "$PROJECT_DIR"
|
|
|
|
# 激活虚拟环境
|
|
if [ -f ".venv/bin/activate" ]; then
|
|
. .venv/bin/activate
|
|
else
|
|
echo "错误: 找不到虚拟环境"
|
|
exit 1
|
|
fi
|
|
|
|
# 运行程序
|
|
python -m gripper.visualizer "$@"
|
|
EOF
|
|
|
|
chmod +x ~/run_visualizer.sh
|
|
echo "✅ 启动脚本已创建: ~/run_visualizer.sh"
|
|
|
|
# ============================================
|
|
# 7. 最终验证
|
|
# ============================================
|
|
echo ""
|
|
echo "[7/7] 最终验证..."
|
|
|
|
# 查找存在的项目目录
|
|
if [ -d "$PROJECT_DIR1" ]; then
|
|
cd "$PROJECT_DIR1"
|
|
elif [ -d "$PROJECT_DIR2" ]; then
|
|
cd "$PROJECT_DIR2"
|
|
else
|
|
echo "⚠️ 未找到项目目录,跳过验证"
|
|
cd "$HOME"
|
|
fi
|
|
|
|
if [ -f ".venv/bin/activate" ]; then
|
|
. .venv/bin/activate
|
|
echo "✅ 虚拟环境激活成功"
|
|
|
|
echo "验证 Python 包:"
|
|
python -c "import PyQt5.QtCore; print(' ✅ PyQt5: OK')" 2>/dev/null || echo " ❌ PyQt5: 失败"
|
|
python -c "from OpenGL.GL import *; print(' ✅ PyOpenGL: OK')" 2>/dev/null || echo " ❌ PyOpenGL: 失败"
|
|
python -c "import open3d as o3d; print(' ✅ Open3D: v' + o3d.__version__)" 2>/dev/null || echo " ❌ Open3D: 失败"
|
|
|
|
deactivate
|
|
fi
|
|
|
|
# ============================================
|
|
echo ""
|
|
echo "============================================"
|
|
echo " Dragon Q6A 环境配置完成!"
|
|
echo "============================================"
|
|
echo ""
|
|
echo "GPU 状态: 硬件加速已启用 (FD643/Turnip)"
|
|
echo ""
|
|
echo "下一步:"
|
|
echo " 1. 重启终端或执行: source ~/.bashrc"
|
|
echo " 2. 运行程序: ~/run_visualizer.sh"
|
|
echo ""
|
|
echo "如果遇到图形问题,可以设置软件渲染模式:"
|
|
echo " export LIBGL_ALWAYS_SOFTWARE=1"
|
|
echo "============================================"
|