qing
|
aa271e395a
|
fix(pybot×actpred): 审计修复 7 项——Hailo 部署链语义对齐 + NaN 安全
P1-1: export_deploy.py forward() 从硬编码 3 帧改为 *inputs 动态解析
P1-2: hailo_infer.py 补 predict_delta 支持(残差模式 + --ckpt 自动检测)
P1-3: pybot _load_predictor 自动查找 pred_token.npy/action_stats.npy/
companion checkpoint,恢复 Hailo 推理训练语义
P1-4: pretrain_mt.py random_images 每 batch 重新生成噪声,防 BN 退化
P2-1: predict.py/hailo_infer.py/robot.py 三层 NaN/Inf 防线
P2-3: recorder.py imu_dim 默认 8→0,避免外部直接使用时形状错误
P2-5: _npu_test.py imu_dim 移到函数定义前,消除执行顺序依赖
|
2026-08-14 16:23:05 +08:00 |
|
qing
|
cd4d512ecd
|
feat(pybot×actpred): R2 多 MPU6050 支持——8×N 姿态向量拼接与归一化平铺
- robot:_find_imus/_read_imus 按脚本块行序收集拼接 ≤4 个 MPU6050,_pad_imu 对齐 predictor.imu_dim
- recorder/imu_norm/dataset/config:imu.npy 宽度 8×N,归一化除数按传感器数平铺
- 测试:双传感器闭环拼接/pad/truncate、宽布局录制、16 维归一化加载
|
2026-08-14 09:34:39 +08:00 |
|
qing
|
b289e7d17c
|
fix(pybot): Windows 测试环境兼容(scripts 软链解析、os.pathsep 分隔)
- conftest:pybot/scripts 为 git 符号链接,Windows 落盘为文本文件(内容=目标相对路径),测试时手动解析到 bot4cj/scripts
- plugin:PYBOT_MODULES_PATH 改按 os.pathsep 分隔,避免 Windows 盘符冒号被切碎导致 find_module 返回丢盘符的路径
|
2026-08-14 09:34:26 +08:00 |
|
qing
|
a2ba797410
|
feat(pybot×actpred): R2 姿态反馈方案一——MPU6050 独立 IMU token 全链路
- pybot:recorder 逐帧落盘 imu.npy(T×8,roll,pitch,ax,ay,az,gx,gy,gz,与帧/动作同调用对齐);run_loop 对声明 imu_dim 的 predictor 以 predict(..., imu=) 调用(鸭子类型,旧两参调用向后兼容)
- actpred:新增 --imu-dim;model 序列 [img×F, act×H, (IMU), PRED](imu_dim>0 时 F+H+2,IMU token 位于 PRED 前);dataset/train 读 imu.npy(缺失按零向量兜底);predict/ONNX/Hailo 三后端与 export/gen_calibration/dfc_compile/_npu_test 部署链适配 imu 输入
- 姿态按物理量程固定缩放归一化(imu_norm.py,训练/推理共用,零状态)
- 测试:actpred 128 passed / pybot loop+recorder 28 passed
|
2026-08-14 09:07:24 +08:00 |
|
qing
|
fe12dd7b33
|
feat(pybot): 进程内实时预测闭环(--loop)与帧源/节拍修复
- 新增 run_loop 闭环:F 帧+H 步历史双滑窗,冷启动重复同帧+零动作,
每步 采样→推理→执行→回写,hz 节拍控制,可选同步录制
- --loop CKPT/--hz/--loop-steps 参数,按 .hef 后缀选 Hailo/PyTorch 后端,
actpred 软依赖(仅 --loop 时 import),保持 pybot 零依赖
- P1-2 帧源修复:闭环改从 camera 守护线程队列取最近 F 帧(低延迟),
替代 capture() 同步曝光阻塞,framerate/capacity 配置真正生效
- P1-1 overrun 告警:超时步记录实际耗时,汇总 overrun 比例并给降频建议
- 剔除 Speaker.delay 发声阻塞,speaker 补 delay=0 非阻塞
- 新增 tests/test_loop.py 11 用例(冷启动/历史滑动/索引映射/帧源等)
|
2026-08-14 07:52:07 +08:00 |
|
qing
|
bfa6d8deb6
|
fix(pybot): 录制时改用同步 capture() 按需抓帧,避免帧重复
_grab_frame 从 camera.latest()(读后台队列)改为 camera.capture()
(直接调 grabber 同步抓帧),确保每个微动作拿到独立帧而非队列中
可能重复的旧帧。Camera 新增 capture() 方法。
|
2026-08-13 16:38:15 +08:00 |
|
qing
|
3fc213e7b9
|
feat(pybot): 微动作分解——带时延的 @Action 行按 10ms 粒度插值执行
每行带 delay 的动作分解为 N=delay//10 个微步,舵机角度从上一行
目标值线性插值到当前行目标值。首行不分解(设初始位置),每步调
speaker.play(freq, 10) 提供声音+时序,dry_run 下补 sleep(0.01)。
delay 必须是 10 的倍数。录制时每个微步产出一帧+插值动作向量。
|
2026-08-13 16:28:00 +08:00 |
|
qing
|
b9f8abdfeb
|
feat(pybot): 运行 .mt 脚本时录制 actpred 格式自监督数据集
新增 EpisodeRecorder,在 run() 每行 @Action 执行前抓取摄像头帧
+ 构建动作向量,产出 actpred ActionDataset 可直接加载的
episode_XXXX/images/*.jpg + actions.npy 格式。dry_run 下生成
随机噪声帧替代真实图像。
CLI 新增 --record DIR 和 --action-dim 选项。
|
2026-08-13 16:08:47 +08:00 |
|
qing
|
0aa0710a9e
|
fix: 统一 .mt 首行 '-' 占位符语义——actpred 对齐 pybot/bot4cj 运行时(填 0),弃用 @Servo max 列填充
|
2026-08-11 16:30:39 +08:00 |
|
qing
|
fee1241e49
|
feat: pybot 新增 @Camera 摄像头块——picamera2 惰性导入,后台守护线程维护有界帧队列(满丢最旧)
|
2026-08-11 02:32:20 +08:00 |
|
qing
|
a8ffa73a6b
|
fix: pybot 审计修复——插件异常类型、I2C 引用校验、卡尔曼除零守卫、CLI 端到端测试
|
2026-08-10 16:16:40 +00:00 |
|
qing
|
bba7ee3eb4
|
feat(pybot): bot4cj 的 Python 迁移版(.mt 解析 + 硬件驱动 + 插件系统)
- parser: FSM 解析器与仓颉版逐语义对齐,修 S01/S02/S04/Q05
- robot/hardvars: 六类硬件变量工厂,修 r.cj:911 重名 FIXME、Q07 倒序释放
- plugin: Python 插件替代 Lua 桥接,修 S07 三级路径查找
- hd: i2c(每fd锁 Q03/S06)/spi/servo/kalman/mpu6050(S05/Q06)/speaker(S03 实声)
- modules: PCA9685 与 Lua 版逐字节对齐;ADS1115 重写(experimental);ADS1256 空桩
- tests: 42 项 pytest 全绿(Mock 总线 journal 断言)
- CLI: --dry-run / --test roundtrip / --verbose;运行时零第三方依赖
|
2026-08-09 18:57:03 +00:00 |
|