Use uv for Python environment

This commit is contained in:
2026-06-19 18:54:46 +08:00
parent 7083c45feb
commit 87060e30d4
17 changed files with 444 additions and 69 deletions
+23 -28
View File
@@ -741,48 +741,49 @@ _shoot(model, side, row, col, qr_value, machine_row):
**AGV (主控)**:
- Ubuntu 22.04 (ROS2 Humble)
- Python 3.8+
- uv 管理的 Python 3.10 虚拟环境
- OpenCV (cv2), Flask, requests, numpy, pyzbar, PyYAML
- ROS2 Humble + nav2_simple_commander
- 系统依赖:ffmpeg、libzbar0
**机械臂 (Pi)**:
- arm_server.pyTCP 服务器端口 5002
- arm_camera.pyMJPEG 服务器端口 5003
- RoboFlow(大象机器人 SDK
- uv 管理的 Python 3.10 虚拟环境
### 9.2 启动流程
```bash
# === 首次部署 / 依赖同步 ===
cd ~/work/smart-inspection
uv sync
# === 机械臂端 (Pi) ===
# 1. 启动 arm_server (TCP 5002) + arm_camera (MJPEG 5003)
sudo systemctl start arm_server
# === AGV 端 ===
# 2. 启动 ROS2 导航栈
cd ~/agv_pro_ros2
ros2 launch agv_pro_navigation2 navigation2.launch.py
# 3. 启动 Flask
cd ~/work/agv_app
python3 app.py # 监听 0.0.0.0:5000
# 2. 完整启动 ROS2 导航栈 + Flask
cd ~/work/smart-inspection
./scripts/start_all.sh
```
### 9.3 部署命令
```bash
# 本地 → AGV SCP 部署(逐个文件)
scp app.py elephant@192.168.60.80:/home/elephant/work/agv_app/app.py
scp utils/mission_executor.py elephant@192.168.60.80:/home/elephant/work/agv_app/utils/mission_executor.py
# 本地 → AGV 部署:同步仓库根目录后,在 AGV 上执行
cd ~/work/smart-inspection
uv sync --locked
# 部署后验证远程文件
ssh elephant@192.168.60.80 "grep 'def _lookup_model' /home/elephant/work/agv_app/utils/mission_executor.py"
ssh elephant@192.168.60.80 "grep 'def _lookup_model' /home/elephant/work/smart-inspection/agv_app/utils/mission_executor.py"
# 重启 Flask(使用 expect 脚本,避免 sshpass+nohup SIGTERM 问题)
# 方式一:手动 killing
ssh elephant@192.168.60.80 "pkill -f 'python3 app.py'; sleep 1; cd /home/elephant/work/agv_app && nohup python3 app.py > /tmp/flask.log 2>&1 &"
# 重启 Flask
ssh elephant@192.168.60.80 'bash -s' < scripts/restart_flask.sh
# 清空 Python 缓存(关键!修改后必须清)
ssh elephant@192.168.60.80 "find /home/elephant/work/agv_app -name '*.pyc' -delete; find /home/elephant/work/agv_app -name '__pycache__' -type d -exec rm -rf {} +"
ssh elephant@192.168.60.80 "find /home/elephant/work/smart-inspection/agv_app -name '*.pyc' -delete; find /home/elephant/work/smart-inspection/agv_app -name '__pycache__' -type d -exec rm -rf {} +"
```
### 9.4 关键运维经验
@@ -836,7 +837,6 @@ ssh elephant@192.168.60.80 "find /home/elephant/work/agv_app -name '*.pyc' -dele
agv_app/
├── app.py # Flask 主程序 (2132行)
├── config.py # 集中配置
├── requirements.txt # Python 依赖
├── templates/
│ ├── index.html # AGV 控制页
│ ├── setting.html # 设置页(网格/机型/报关单)
@@ -869,17 +869,12 @@ agv_app/
## 附录 B:关键依赖
```
flask>=2.0
flask-cors
pyyaml
opencv-python
numpy
requests
pyzbar # 二维码识别(优先引擎)
Pillow # pyzbar 依赖
rclpy # ROS2 Python 客户端
nav2_simple_commander # Nav2 Python API
geometry_msgs # ROS2 消息类型
pyproject.toml # Python 依赖声明
uv.lock # 锁定版本
.python-version # Python 3.10
ffmpeg # 系统依赖,机械臂视频流
libzbar0 # 系统依赖,pyzbar 动态库
ROS2 Humble # 系统环境,提供 rclpy/nav2_simple_commander/geometry_msgs
```
---