#!/bin/bash # ============================================================ # dev_start.sh - 本地开发环境启动(不启动 ROS2/机械臂硬件) # 用法: ./scripts/dev_start.sh # ============================================================ set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" AGV_APP_DIR="$PROJECT_DIR/agv_app" AGV_ROS2_DIR="${AGV_ROS2_DIR:-$HOME/agv_pro_ros2}" ROS_DISTRO="${ROS_DISTRO:-humble}" ROS_SETUP="${ROS_SETUP:-/opt/ros/$ROS_DISTRO/setup.bash}" ROS_WORKSPACE_SETUP="${ROS_WORKSPACE_SETUP:-$AGV_ROS2_DIR/install/setup.bash}" FLASK_PORT="${FLASK_PORT:-5000}" echo "==========================================" echo " 本地开发模式 - 仅启动 Flask" echo "==========================================" echo "" # 切换到项目目录 source "$ROS_SETUP" 2>/dev/null || true source "$ROS_WORKSPACE_SETUP" 2>/dev/null || true cd "$AGV_APP_DIR" # 检查是否有运行的 Flask 进程 FLASK_PID=$(pgrep -f "python.*app.py" 2>/dev/null || true) if [ -n "$FLASK_PID" ]; then echo "Flask 已在运行 (PID: $FLASK_PID)" read -p "是否重启? [y/N] " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then kill "$FLASK_PID" 2>/dev/null sleep 1 else echo "保持现有进程,退出" exit 0 fi fi # 使用前台模式运行(方便看日志和 Ctrl+C 停止) echo "启动 Flask (前台模式,Ctrl+C 停止)..." echo "访问: http://127.0.0.1:$FLASK_PORT" echo "" exec uv run --locked python app.py