🤖 AI Robotics 周报(Week 12 实验进度)
📅 日期
2026-05-27
🧪 一、本周实验内容
本周主要完成了 Week 12 Camera Bridge 与 ArUco Marker 实验,核心内容包括:
- 克隆课程 GitHub 项目仓库
- 配置 Python 虚拟环境(venv)
- 安装 Flask、Flask-SocketIO、Eventlet、OpenCV 等依赖
- 运行
camera_bridge.py摄像头桥接服务 - 使用手机浏览器访问 Flask Camera Bridge
- 学习 ArUco Marker 的生成与检测
- 使用 OpenCV 实现实时 Marker 识别
- 解决 Flask 端口冲突与依赖问题
- 使用 Tailscale 实现手机与电脑通信
⚙️ 二、环境配置过程
1️⃣ GitHub 项目下载
成功克隆课程仓库:
git clone https://github.com/ai-robot-class/ai-robot-class.github.io.git
2️⃣ Python 环境问题
系统默认缺少 python 命令,因此统一使用:
python3
3️⃣ 安装实验依赖
安装 Flask 与 OpenCV 相关模块:
pip install flask flask-socketio eventlet numpy opencv-python
后续继续安装:
pip install opencv-contrib-python
成功解决:
- Flask 缺失
- Flask-SocketIO 缺失
- OpenCV ArUco 模块缺失
- NumPy 依赖问题
📷 三、Camera Bridge 实验
成功运行:
python3 camera_bridge.py
服务器启动后显示:
Camera bridge listening on https://0.0.0.0:5000
随后使用手机浏览器访问:
https://100.96.209.70:5000
成功实现:
- 手机摄像头实时访问
- Flask Web 页面通信
- 浏览器实时图像传输
- 图像保存至
calib_images/
🧩 四、ArUco Marker 实验
1️⃣ Marker 生成
本周使用:
DICT_4X4_1000
生成:
ID = 6
的 ArUco Marker。
2️⃣ OpenCV 检测
使用 OpenCV ArUco 模块进行检测:
cv2.aruco.detectMarkers()
成功识别:
ID: 6
并绘制 Marker 边框。
⚠️ 3️⃣ 重要问题:字典匹配
实验中发现:
Marker 生成使用:
DICT_4X4_1000
而原始代码使用:
DICT_4X4_50
导致无法识别 Marker。
最终修改:
ARUCO_DICT = cv2.aruco.DICT_4X4_1000
后成功检测。
🧠 五、遇到的问题与解决方法
❗问题1:Flask 未安装
解决:
pip install flask
❗问题2:flask_socketio 缺失
解决:
pip install flask-socketio
❗问题3:端口占用
运行时出现:
Port 5000 already in use
解决方法:
- 修改端口
- 重新启动 Flask 服务
❗问题4:python 命令不存在
解决:
统一使用:
python3
❗问题5:ArUco 无法识别
原因:
ArUco 字典不匹配。
解决:
将:
DICT_4X4_50
修改为:
DICT_4X4_1000
🚀 六、本周成果
本周成功实现:
✅ Flask Camera Bridge 运行 ✅ 手机摄像头实时传输 ✅ OpenCV 图像读取 ✅ ArUco Marker 实时检测 ✅ 成功识别 ID 6 ✅ 浏览器与 Python 实时通信 ✅ Tailscale 网络访问
📚 七、本周学习总结
通过本周实验,学习了:
- Flask Web 服务基础
- SocketIO 实时通信
- HTML5 摄像头访问
- OpenCV ArUco 模块
- Camera Bridge 图像传输
- Python 图像处理流程
- Linux 下依赖与端口调试
同时进一步理解了:
- 图像帧传输机制
- 浏览器与 Python 通信方式
- ArUco 字典识别原理
- 实时视觉检测流程
📌 八、下周计划
- 接入 ROS2 视觉节点
- 学习相机标定
- 学习位姿估计(Pose Estimation)
- 优化图像传输延迟
- 完成 Week 13 四足机器人实验准备
🖼️ 实验截图
Camera Bridge 页面

图像识别结果

ArUco Marker 检测
