105 lines
3.1 KiB
Markdown
105 lines
3.1 KiB
Markdown
# AGV 智能巡检系统 — 脚本说明
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
scripts/
|
||
├── prod-backend.sh ← 生产环境完整启动(ROS2 + Nav2 + Flask)
|
||
├── stop_all.sh ← 生产环境完整停止
|
||
├── dev-backend.sh ← 本地后端开发启动(Mock 硬件模式)
|
||
├── dev-frontend.sh ← 本地前端开发启动
|
||
└── stop.sh ← 停止本地开发服务
|
||
```
|
||
|
||
`scan_fixer/` 是生产启动链路的一部分:`clock_publisher.py` 发布 `/clock`,
|
||
`fix_scan_timestamp_v6.py` 将 `/scan` 重发为 `/scan_corrected`,供 Nav2/AMCL 使用。
|
||
|
||
## 使用场景
|
||
|
||
### 0. 初始化 Python 环境
|
||
|
||
项目使用 `uv` 统一管理 Python 虚拟环境,依赖声明在仓库根目录 `pyproject.toml`,锁定版本在 `uv.lock`。
|
||
|
||
```bash
|
||
# 如系统尚未安装 uv,先安装 uv
|
||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||
|
||
# 在仓库根目录执行
|
||
cd ~/work/smart-inspection
|
||
uv sync
|
||
```
|
||
|
||
`uv sync` 会按 `.python-version` 创建 Python 3.10 虚拟环境到 `.venv`。ROS2 Humble 仍使用系统环境 `/opt/ros/humble`,不要把 ROS2 系统包写入 `pyproject.toml`。
|
||
|
||
系统依赖仍需通过系统包管理器安装:
|
||
|
||
```bash
|
||
sudo apt install -y ffmpeg libzbar0
|
||
```
|
||
|
||
### 1. 首次开机 / 完整重启
|
||
```bash
|
||
# 在 AGV 上执行
|
||
cd ~/work/smart-inspection
|
||
./scripts/stop_all.sh # 先彻底清理
|
||
./scripts/prod-backend.sh # 完整启动
|
||
```
|
||
|
||
### 2. 修改代码后重新启动生产后端
|
||
```bash
|
||
# 部署文件到 AGV 后
|
||
ssh elephant@192.168.60.80 'cd ~/work/smart-inspection && ./scripts/prod-backend.sh'
|
||
```
|
||
|
||
### 3. 本地开发调试(不连硬件)
|
||
```bash
|
||
# 在本机执行,仅启动 Mock 后端
|
||
./scripts/dev-backend.sh
|
||
# 访问 http://127.0.0.1:5000
|
||
```
|
||
|
||
### 4. 本地前端开发
|
||
```bash
|
||
./scripts/dev-frontend.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` | 时间戳修正工具目录 |
|
||
| `LOG_DIR` | `/tmp` | 日志目录 |
|
||
| `FASTRTPS_SHM_DIR` | `/dev/shm` | FastRTPS 共享内存目录 |
|
||
| `AGV_CONTROLLER_DEVICE` | `/dev/agvpro_controller` | AGV 控制器设备 |
|
||
| `ROS_DOMAIN_ID` | `1` | ROS2 通信域 ID |
|
||
|
||
## 日志位置(AGV 上)
|
||
|
||
| 组件 | 日志 |
|
||
|------|------|
|
||
| bringup (激光雷达) | `/tmp/ros2_bringup.log` |
|
||
| Nav2 导航 | `/tmp/ros2_nav2.log` |
|
||
| scan fixer | `/tmp/scan_fixer.log` |
|
||
| Flask | `/tmp/agv_flask.log` |
|
||
|
||
## 机械臂端
|
||
|
||
机械臂 (Pi) 的启动由 systemd 托管,在 Pi 上执行:
|
||
|
||
```bash
|
||
cd ~/work/smart-inspection
|
||
uv sync
|
||
sudo systemctl start arm_server # 启动
|
||
sudo systemctl status arm_server # 查看状态
|
||
sudo systemctl enable arm_server # 开机自启
|
||
```
|
||
|
||
配置见 `arm_server/arm_server.service`。
|