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