feat: pybot 新增 @Camera 摄像头块——picamera2 惰性导入,后台守护线程维护有界帧队列(满丢最旧)

This commit is contained in:
qing committed 2026-08-11 02:32:20 +08:00
1 parent a8ffa73a6b
commit fee1241e49
6 files changed
+283 -2

No files matched your search

+14 -1
View File
@@ -12,6 +12,7 @@ PCA9685 PWM 控制器 + MPU6050 姿态传感器)。
- **零第三方依赖**:纯标准库(fcntl / struct / threading / wave / argparse),
树莓派上 `git pull` 即部署,无构建步骤。
(picamera2 为可选依赖,仅 `@Camera` 摄像头块需要,树莓派 OS 预装,勿 pip 安装)
- **与仓颉版逐语义对齐**:FSM 解析器、占位符递归、Servo 校准算法、
PCA9685 寄存器序列均与 bot4cj 一致(Mock 总线 journal 可逐字节 diff)。
- **Python 插件替代 Lua**:`modules/<块名>.py` 定义
@@ -35,7 +36,7 @@ cat scripts/std.mt | ./_run.sh # 与 bot4cj 相同的管道用法
```
pybot/ # 包:parser / robot / hardvars / plugin / main
pybot/hd/ # 硬件层:i2c / spi / servo / kalman / mpu6050 / speaker
pybot/hd/ # 硬件层:i2c / spi / servo / kalman / mpu6050 / speaker / camera
modules/ # 硬件驱动插件:PCA9685 / SPI / ADS1115 / ADS1256
scripts -> ../bot4cj/scripts # .mt 脚本与仓颉版共享
tests/ # pytest 单元测试(Mock 总线,无需硬件)
@@ -55,3 +56,15 @@ venv/bin/python -m pytest tests/ -v
见 [bot4cj/README.md](../bot4cj/README.md) 与 `scripts/std.mt`。
格式要点:`@块名` 开块、行 0 为表头、`;` 结行、`#` 注释、
`-` 占位符(非首行取上一行同列值;首行数值列解析为 0)、`@` 收块。
新增块(无仓颉版对应):
```
@Camera
name width height framerate capacity;
cam0 640 480 30 4;
@
```
`build` 启动后台抓帧线程,维护容量为 `capacity` 的有界帧队列(满丢最旧帧);
`play` 返回最新帧 `(时间戳, frame)`。