feat: Dockerfile BlueOS, deploy_pi.sh rsync, camera_mount.scad baseline 110mm
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
73
scripts/deploy_pi.sh
Normal file
73
scripts/deploy_pi.sh
Normal file
@@ -0,0 +1,73 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user