| #!/usr/bin/env bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| set -e |
|
|
| WS="$HOME/ros2_vlm" |
| LOG_DIR="$WS/log"; mkdir -p "$LOG_DIR" |
| DRIVER_LOG="$LOG_DIR/navila_driver.log" |
| BRAIN_LOG="$LOG_DIR/navila_brain.log" |
|
|
| NAVILA_DIR="${NAVILA_DIR:-$HOME/NaVILA}" |
| CKPT_DIR="${CKPT_DIR:-$HOME/navila-ckpt}" |
| ENV_NAME="${ENV_NAME:-navila}" |
| SERVER_PY="$WS/src/navila/navila_server.py" |
|
|
| pkill -9 -f "go2_driver|robot.launch|agent_server|navila_server" 2>/dev/null || true |
| sleep 2 |
|
|
| PIDS=() |
| cleanup() { |
| echo; echo "⏹ Dừng tất cả (driver + não + web)…" |
| kill "${PIDS[@]}" 2>/dev/null || true |
| pkill -9 -f "go2_driver|navila_server|agent_server" 2>/dev/null || true |
| exit 0 |
| } |
| trap cleanup INT TERM |
|
|
| |
| echo "▶ [1/3] Driver robot (camera+odom) → $DRIVER_LOG" |
| ( |
| source /opt/ros/jazzy/setup.bash |
| source "$WS/install/setup.bash" |
| export DECODE_LIDAR="${DECODE_LIDAR:-false}" |
| export ROBOT_IP="${ROBOT_IP:-}" |
| exec ros2 launch go2_navigation bringup.launch.py teleop:=true |
| ) >"$DRIVER_LOG" 2>&1 & |
| PIDS+=($!) |
|
|
| |
| echo "▶ [2/3] Não NaVILA :8100 (8-bit) → $BRAIN_LOG" |
| ( |
| cd "$NAVILA_DIR" |
| exec env \ |
| CUDA_HOME="$HOME/miniconda3/envs/$ENV_NAME" \ |
| PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \ |
| conda run -n "$ENV_NAME" --no-capture-output \ |
| python "$SERVER_PY" --model-path "$CKPT_DIR" --port 8100 |
| ) >"$BRAIN_LOG" 2>&1 & |
| PIDS+=($!) |
| BRAIN_PID=$! |
|
|
| |
| echo -n "⏳ Đợi NaVILA nạp model (~30-60s)" |
| READY=0 |
| for _ in $(seq 1 150); do |
| if curl -sf http://127.0.0.1:8100/health >/dev/null 2>&1; then |
| READY=1; echo " — SẴN SÀNG ✅"; break |
| fi |
| if ! kill -0 "$BRAIN_PID" 2>/dev/null; then |
| echo; echo "❌ Não NaVILA chết khi nạp. Xem: cat $BRAIN_LOG" >&2; cleanup |
| fi |
| echo -n "."; sleep 2 |
| done |
| [ "$READY" = 1 ] || echo " — (quá lâu, vẫn bật web; kiểm $BRAIN_LOG nếu web báo lỗi não)" |
|
|
| |
| echo "▶ [3/3] Web GUI :8001 — mở http://localhost:8001 . Ctrl-C = tắt TẤT CẢ." |
| cd "$WS/src" |
| VLA_BRAIN=navila \ |
| VLA_CONTROL=vlm \ |
| USE_YOLO=0 \ |
| VLA_NAVILA_URL="${VLA_NAVILA_URL:-http://127.0.0.1:8100}" \ |
| VLA_NAVILA_FRAMES="${VLA_NAVILA_FRAMES:-8}" \ |
| VLA_MAX_TURN_DEG="${VLA_MAX_TURN_DEG:-30}" \ |
| NAVILA_FALLBACK="${NAVILA_FALLBACK:-stop}" \ |
| MOTION_LIN_SPEED="${MOTION_LIN_SPEED:-0.4}" \ |
| MOTION_ANG_SPEED="${MOTION_ANG_SPEED:-0.7}" \ |
| MOTION_ANG_MAX_DEG="${MOTION_ANG_MAX_DEG:-45}" \ |
| ./vlm/scripts/run_demo1.sh |
|
|
| |
| cleanup |
|
|