SHA256
109 lines
2.0 KiB
Bash
Executable File
109 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
PROJECT="$HOME/esarobotech/r1"
|
|
INTERFACE="${1:-enp3s0}"
|
|
|
|
cd "$PROJECT"
|
|
|
|
PIDS=()
|
|
|
|
cleanup() {
|
|
echo
|
|
echo "[R1] Stopping all services..."
|
|
|
|
for pid in "${PIDS[@]}"; do
|
|
if kill -0 "$pid" 2>/dev/null; then
|
|
kill "$pid" 2>/dev/null || true
|
|
fi
|
|
done
|
|
|
|
wait 2>/dev/null || true
|
|
|
|
echo "[R1] All services stopped."
|
|
}
|
|
|
|
trap cleanup EXIT INT TERM
|
|
|
|
echo "======================================"
|
|
echo " R1 complete stack"
|
|
echo "======================================"
|
|
echo "Interface: $INTERFACE"
|
|
echo
|
|
|
|
echo "[R1] Starting camera..."
|
|
./scripts/start_camera.sh "$INTERFACE" &
|
|
PIDS+=("$!")
|
|
|
|
sleep 1
|
|
|
|
echo "[R1] Starting YOLO..."
|
|
./scripts/start_yolo.sh &
|
|
PIDS+=("$!")
|
|
|
|
sleep 1
|
|
|
|
echo "[R1] Starting LLM..."
|
|
./scripts/start_llm.sh &
|
|
PIDS+=("$!")
|
|
|
|
echo "[R1] Waiting for LLM server..."
|
|
|
|
for i in {1..60}; do
|
|
if curl -fsS \
|
|
http://127.0.0.1:8080/health \
|
|
>/dev/null 2>&1; then
|
|
|
|
echo "[R1] LLM ready."
|
|
break
|
|
fi
|
|
|
|
sleep 1
|
|
|
|
if [[ "$i" -eq 60 ]]; then
|
|
echo "[ERROR] LLM failed to become ready."
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
echo "[R1] Waiting for camera frame..."
|
|
|
|
for i in {1..20}; do
|
|
if [[ -s /dev/shm/robot_frame.jpg ]]; then
|
|
echo "[R1] Camera ready."
|
|
break
|
|
fi
|
|
|
|
sleep 0.5
|
|
|
|
if [[ "$i" -eq 20 ]]; then
|
|
echo "[WARN] Camera frame not available yet."
|
|
fi
|
|
done
|
|
|
|
echo "[R1] Starting voice assistant..."
|
|
./scripts/start_voice.sh "$INTERFACE" &
|
|
PIDS+=("$!")
|
|
|
|
echo "[R1] Starting motion..."
|
|
./scripts/start_motion.sh "$INTERFACE" &
|
|
PIDS+=("$!")
|
|
|
|
sleep 1
|
|
|
|
echo
|
|
echo "======================================"
|
|
echo " R1 stack running"
|
|
echo "======================================"
|
|
echo "Camera: /dev/shm/robot_frame.jpg"
|
|
echo "YOLO: /dev/shm/r1_detections.json"
|
|
echo "LLM: http://127.0.0.1:8080"
|
|
echo
|
|
echo "Press Ctrl+C to stop everything."
|
|
echo
|
|
|
|
# Wait until one service exits.
|
|
wait -n "${PIDS[@]}"
|
|
|
|
echo "[R1] A service exited; shutting down the stack."
|