Refactor ROS startup scripts

This commit is contained in:
2026-06-22 13:06:31 +08:00
parent 62cccfbcc6
commit 55f646053d
5 changed files with 480 additions and 345 deletions
+17 -12
View File
@@ -4,11 +4,11 @@
```
scripts/
├── start_all.sh ← 生产环境完整启动(ROS2 + Nav2 + Flask
├── prod-backend.sh ← 生产环境完整启动(ROS2 + Nav2 + Flask
├── stop_all.sh ← 生产环境完整停止
├── start_flask.sh ← 仅重启 Flask(修改代码后快速部署
├── restart_flask.sh ← 语法检查 + 清缓存 + 重启 Flask + 验证
└── dev_start.sh ← 本地开发用(前台运行,不启动 ROS2)
├── dev-backend.sh ← 本地后端开发启动(Mock 硬件模式
├── dev-frontend.sh ← 本地前端开发启动
└── stop.sh ← 停止本地开发服务
```
`scan_fixer/` 是生产启动链路的一部分:`clock_publisher.py` 发布 `/clock`
@@ -42,25 +42,25 @@ sudo apt install -y ffmpeg libzbar0
# 在 AGV 上执行
cd ~/work/smart-inspection
./scripts/stop_all.sh # 先彻底清理
./scripts/start_all.sh # 完整启动
./scripts/prod-backend.sh # 完整启动
```
### 2. 修改代码后快速部署
### 2. 修改代码后重新启动生产后端
```bash
# 部署文件到 AGV 后
ssh elephant@192.168.60.80 'bash -s' < scripts/restart_flask.sh
ssh elephant@192.168.60.80 'cd ~/work/smart-inspection && ./scripts/prod-backend.sh'
```
### 3. 本地开发调试(不连硬件)
```bash
# 在本机执行,仅启动 Flask
./scripts/dev_start.sh
# 在本机执行,仅启动 Mock 后端
./scripts/dev-backend.sh
# 访问 http://127.0.0.1:5000
```
### 4. 远程轻量重启(ROS2 已运行)
### 4. 本地前端开发
```bash
ssh elephant@192.168.60.80 'bash -s' < scripts/start_flask.sh
./scripts/dev-frontend.sh
```
## 环境变量
@@ -72,8 +72,13 @@ ssh elephant@192.168.60.80 'bash -s' < scripts/start_flask.sh
| `AGV_PROJECT_DIR` | `/home/elephant/work/smart-inspection` | 仓库根目录 |
| `AGV_APP_DIR` | `$AGV_PROJECT_DIR/agv_app` | Flask 应用目录 |
| `AGV_ROS2_DIR` | `/home/elephant/agv_pro_ros2` | ROS2 工作空间 |
| `ROS_SETUP` | `/opt/ros/humble/setup.bash` | ROS2 环境脚本 |
| `ROS_WORKSPACE_SETUP` | `$AGV_ROS2_DIR/install/setup.bash` | ROS2 工作空间环境脚本 |
| `SCAN_FIXER_DIR` | `$AGV_PROJECT_DIR/scan_fixer` | 时间戳修正工具目录 |
| `FIXER_SCRIPT` | `fix_scan_timestamp_v6.py` | fixer 脚本名 |
| `LOG_DIR` | `/tmp` | 日志目录 |
| `FASTRTPS_SHM_DIR` | `/dev/shm` | FastRTPS 共享内存目录 |
| `AGV_CONTROLLER_DEVICE` | `/dev/agvpro_controller` | AGV 控制器设备 |
| `ROS_DOMAIN_ID` | `1` | ROS2 通信域 ID |
## 日志位置(AGV 上)