DriverTrac/install_rpi.sh

84 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
# Raspberry Pi Installation Script
# This script helps install dependencies on Raspberry Pi with proper error handling
set -e # Exit on error
echo "🚗 Driver DSMS ADAS - Raspberry Pi Installation"
echo "================================================"
echo ""
# Check Python version
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2)
PYTHON_MAJOR=$(echo $PYTHON_VERSION | cut -d. -f1)
PYTHON_MINOR=$(echo $PYTHON_VERSION | cut -d. -f2)
echo "📋 System Information:"
echo " Python: $(python3 --version)"
echo " Architecture: $(uname -m)"
echo " OS: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
echo ""
# Check if virtual environment exists
if [ ! -d "venv" ]; then
echo "📦 Creating virtual environment..."
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip setuptools wheel
else
echo "✓ Virtual environment exists"
source venv/bin/activate
fi
echo ""
echo "📦 Installing base requirements (without MediaPipe)..."
pip install -r requirements_rpi.txt
echo ""
echo "🎯 Attempting MediaPipe installation..."
# Try MediaPipe based on Python version
if [ "$PYTHON_MAJOR" -eq 3 ] && [ "$PYTHON_MINOR" -ge 11 ]; then
echo " Trying MediaPipe 1.0+ (for Python 3.11+)..."
pip install mediapipe>=1.0.0 && echo " ✓ MediaPipe 1.0+ installed successfully" || {
echo " ⚠️ MediaPipe 1.0+ installation failed"
echo " Trying MediaPipe 0.10.8 as fallback..."
pip install mediapipe==0.10.8 && echo " ✓ MediaPipe 0.10.8 installed successfully" || {
echo " ⚠️ MediaPipe installation failed - will use OpenCV fallback"
}
}
elif [ "$PYTHON_MAJOR" -eq 3 ] && [ "$PYTHON_MINOR" -ge 9 ]; then
echo " Trying MediaPipe 0.10.8 (for Python 3.9-3.10)..."
pip install mediapipe==0.10.8 && echo " ✓ MediaPipe 0.10.8 installed successfully" || {
echo " ⚠️ MediaPipe 0.10.8 installation failed"
echo " Trying MediaPipe 1.0+ as fallback..."
pip install mediapipe>=1.0.0 && echo " ✓ MediaPipe 1.0+ installed successfully" || {
echo " ⚠️ MediaPipe installation failed - will use OpenCV fallback"
}
}
else
echo " ⚠️ Python version $PYTHON_VERSION may not be supported"
echo " Trying MediaPipe anyway..."
pip install mediapipe>=1.0.0 && echo " ✓ MediaPipe installed successfully" || {
echo " ⚠️ MediaPipe installation failed - will use OpenCV fallback"
}
fi
echo ""
echo "✅ Installation complete!"
echo ""
echo "📝 Verification:"
python3 -c "import cv2; print(f' ✓ OpenCV {cv2.__version__}')" 2>/dev/null || echo " ✗ OpenCV not found"
python3 -c "import mediapipe; print(f' ✓ MediaPipe {mediapipe.__version__}')" 2>/dev/null || echo " ⚠️ MediaPipe not found (will use OpenCV fallback)"
python3 -c "import streamlit; print(f' ✓ Streamlit {streamlit.__version__}')" 2>/dev/null || echo " ✗ Streamlit not found"
python3 -c "import torch; print(f' ✓ PyTorch {torch.__version__}')" 2>/dev/null || echo " ✗ PyTorch not found"
echo ""
echo "🚀 To run the application:"
echo " source venv/bin/activate"
echo " streamlit run src/poc_demo.py --server.port 8501 --server.address 0.0.0.0"
echo ""
echo "Or use: ./run_poc.sh"
echo ""