74 lines
2.3 KiB
Bash
74 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Deploy SLAM stéréo sur Raspberry Pi via SSH/rsync
|
|
# Usage: bash deploy_pi.sh <IP_PI>
|
|
|
|
set -e
|
|
|
|
# --- Variables ---
|
|
PI_USER="pi"
|
|
PI_PASS="raspberry"
|
|
PI_DEST="/home/pi/slam_stereo"
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
|
|
# --- Argument ---
|
|
if [ -z "$1" ]; then
|
|
echo "[ERREUR] Usage: $0 <IP_PI>"
|
|
echo "Exemple: $0 192.168.2.2"
|
|
exit 1
|
|
fi
|
|
PI_HOST="$1"
|
|
|
|
echo "[INFO] Déploiement vers $PI_USER@$PI_HOST:$PI_DEST"
|
|
|
|
# --- Test connectivité ---
|
|
echo "[INFO] Test SSH..."
|
|
if ! sshpass -p "$PI_PASS" ssh -o StrictHostKeyChecking=no \
|
|
-o ConnectTimeout=5 "$PI_USER@$PI_HOST" "echo 'SSH OK'" 2>/dev/null; then
|
|
echo "[ERREUR] Impossible de se connecter à $PI_HOST"
|
|
echo "[INFO] Vérifier: IP correcte, Pi allumé, sshpass installé"
|
|
exit 1
|
|
fi
|
|
|
|
# --- Créer dossiers sur Pi ---
|
|
echo "[INFO] Création des dossiers..."
|
|
sshpass -p "$PI_PASS" ssh -o StrictHostKeyChecking=no "$PI_USER@$PI_HOST" \
|
|
"mkdir -p $PI_DEST/{src/calibration,src/slam,src/interface,config}"
|
|
|
|
# --- Rsync src/ ---
|
|
echo "[INFO] Transfert src/..."
|
|
sshpass -p "$PI_PASS" rsync -avz --progress \
|
|
-e "ssh -o StrictHostKeyChecking=no" \
|
|
"$PROJECT_DIR/src/" \
|
|
"$PI_USER@$PI_HOST:$PI_DEST/src/"
|
|
|
|
# --- Rsync config/ ---
|
|
echo "[INFO] Transfert config/..."
|
|
sshpass -p "$PI_PASS" rsync -avz --progress \
|
|
-e "ssh -o StrictHostKeyChecking=no" \
|
|
"$PROJECT_DIR/config/" \
|
|
"$PI_USER@$PI_HOST:$PI_DEST/config/" 2>/dev/null || echo "[WARN] config/ vide, skip"
|
|
|
|
# --- Install dépendances Python ---
|
|
echo "[INFO] Installation dépendances Python..."
|
|
sshpass -p "$PI_PASS" ssh -o StrictHostKeyChecking=no "$PI_USER@$PI_HOST" bash << 'REMOTE'
|
|
set -e
|
|
pip3 install --upgrade pip --quiet
|
|
pip3 install opencv-python flask numpy pyyaml --quiet
|
|
echo "[OK] Dépendances installées"
|
|
REMOTE
|
|
|
|
# --- Test Flask ---
|
|
echo "[INFO] Test Flask..."
|
|
sshpass -p "$PI_PASS" ssh -o StrictHostKeyChecking=no "$PI_USER@$PI_HOST" \
|
|
"cd $PI_DEST && python3 -c 'import flask, cv2, numpy, yaml; print(\"[OK] Imports OK\")'"
|
|
|
|
echo ""
|
|
echo "=== DEPLOY TERMINÉ ==="
|
|
echo "Interface web: http://$PI_HOST:5000"
|
|
echo "Démarrage manuel:"
|
|
echo " ssh $PI_USER@$PI_HOST"
|
|
echo " cd $PI_DEST && python3 src/interface/app.py"
|
|
echo ""
|
|
echo "Note BlueOS: utiliser aussi le Dockerfile pour extension native"
|