Use uv for Python environment
This commit is contained in:
+23
-28
@@ -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.py(TCP 服务器端口 5002)
|
||||
- arm_camera.py(MJPEG 服务器端口 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user