基于 OpenBot 架构的室内自主跟随购物车原型项目,目标是在课程周期内完成一个低成本、可演示、可复用的首版闭环系统。
本项目面向室内超市或模拟超市场景,尝试解决传统购物车需要用户持续手推的问题。我们采用 OpenBot 的核心思路,以 Android 手机作为上位机主脑,负责视觉感知、人物检测、跟随决策和交互;以 Arduino Nano 或 ESP32 作为下位机,负责接收控制命令、驱动电机并执行底层安全保护。
首版目标不是商业化成品,而是一个课程可交付的工程原型。它需要做到:
- 在室内平坦环境中完成单人低速稳定跟随。
- 在目标丢失、急停、通信异常、前方障碍等情况下优先保证安全。
- 在预算和 4 周集中实践周期内完成软硬件集成验证。
- OpenBot 基础链路跑通
- 手动遥控与底盘联调
- 指定人物检测、目标锁定与自主跟随
- 购物筐或载物平台集成
- 目标丢失后的安全搜寻与停车
- 急停、通信异常停车、基础障碍停车
- 基础测试记录与演示流程整理
- 完整 SLAM
- 复杂路径规划
- 高精地图构建
- 自动结账
- 真实超市长期部署
- 云端多车调度
购物者 / 目标人物
↓
Android 手机 / OpenBot App
(摄像头感知 + AI 推理 + 跟随决策 + 人机交互)
↓
通信接口:USB Serial / Bluetooth
↓
微控制器:Arduino Nano / ESP32
(指令解析 + 电机控制 + 超时保护)
↓
电机驱动模块
↓
移动底盘
↓
购物筐 / 载物平台
目标丢失策略采用“安全优先的有限重定位”:
- 目标丢失后立即取消前进速度,禁止继续向前跟随。
- 系统进入短时原地低速搜寻状态。
- 若在限定时间内重新锁定目标,则恢复 FOLLOW。
- 若搜寻超时或出现其他异常,则发送
STOP并停车。
AutoFollowShoppingCart/
├─ design/
│ ├─ structure.md
│ ├─ background/
│ ├─ gantt/
│ └─ doc/
│ ├─ 2-9自主跟随机器人平台-深研院-张凯.pptx
│ ├─ 智能系统创新实践学生手册.pdf
│ └─ 项目汇报超市自主跟随购物车.md
├─ dev/
│ └─ OpenBot/ # Team OpenBot fork, tracked as a Git submodule
├─ tools/
│ └─ reid_pc_test/ # PC-side ReID experiments, scripts, docs, and local ignored assets
├─ README.md
└─ AGENTS.md
- Android 手机:视觉感知、模型推理、控制界面
- 微控制器:Arduino Nano 或 ESP32
- 移动底盘:双轮差速或兼容 OpenBot 的低成本底盘
- 电机驱动模块
- 电源系统
- 手机固定支架
- 购物筐 / 载物平台
- 急停装置
- 可选障碍传感器:超声波优先
- 已同步采购记录到 design/采购.md。
- 已采购核心硬件包括:305 系列四驱底盘、ESP32 相关开发板套件、电池、充电器、AT8236 驱动板。
- 已采购装配辅材包括:杜邦线、手机支架、联轴器、铜柱、螺丝。
- 截至 2026-07-09,采购记录中的已购物料总额约为 830.65 元。
- 急停按钮、超声波模块、降压模块、OTG 线等安全与联调用物料仍可按联调进度补购。
- OpenBot:作为总体架构、手机端框架和底盘控制思路来源
- Android Studio:上位机 App 修改、调试和构建
- OpenBot App 工程:复用遥控、模式切换、感知与推理主框架
- MCU 固件:串口通信、电机控制、超时保护、急停
- 轻量级视觉模型:人物检测与短时目标跟踪
本项目的重点不是重写 OpenBot,而是基于 OpenBot 做“购物车场景化集成”和安全策略增强。
当前 OpenBot 工程以 Git submodule 形式放在 dev/OpenBot,指向团队组织下的 OpenBot fork。首次克隆本仓库后,可执行:
git submodule update --init --recursive硬件到位前的软件验证优先从 OpenBot Android 工程开始:使用 Android Studio 打开 dev/OpenBot/android,先完成 Gradle Sync、robot App 构建安装和手机端摄像头 / 权限验证,再进入跟随逻辑和手机-下位机通信联调。
团队协作、分支、OpenBot 子模块提交流程见 CONTRIBUTING.md。
SysML 风格建模产物位于 design/sysml/。团队默认使用 Codex Desktop Skill 生成建模文档、PUML 源文件和 PlantUML 查看链接;已安装 Codex CLI 的成员也可以使用可选批处理脚本。
- 主文档:
design/sysml/sysml-modeling.md - Skill 源目录:
design/sysml/skills/autofollow-sysml-modeler/ - 输出目录:
design/sysml/runs/<YYYYMMDD-HHMMSS>/ - 常见产物:
puml/*.puml、diagram-links.md、generation-report.md、可选svg/*.svg
Codex Desktop 推荐提示词:
使用 $autofollow-sysml-modeler,读取当前项目文档,更新 SysML 建模文档,生成默认 PlantUML 图并输出链接。
CLI 可选入口:
powershell -ExecutionPolicy Bypass -File .\design\sysml\run_sysml.ps1 -Render server -Format svg -CondaEnv base公共 PlantUML server 会接收 PUML 内容;若不希望上传,可使用 -Render none 只生成 PUML 和链接,或使用本地 PlantUML jar。详细说明见 design/sysml/README.md。
上位机开发已经从文档规划推进到 Android 真机验证阶段,当前主线在 dev/OpenBot/android:
Human Cart Simulator已跑通目标初始化、确认、距离状态、行为动作与 debug 面板。- 阶段 A 已完成:
Evidence -> BehaviorDecisionResult -> BehaviorAction -> HumanCommand最小行为层可运行。 - 阶段 B 已完成首版:Android 端 TFLite ReID 已接入 Human Cart Simulator,
osnet_x0_25推理可运行,实机约 30 FPS。 - 阶段 C 已进入策略修正验证:
TargetTrackManager + IdentityBeliefAccumulator已从首版接入推进到 locked ghost、suspected dwell、loose/default/strict bbox gate、恢复后 relock 与非 locked 空间支持门控。 - Human Cart Simulator 已支持
cartfollow_diagnostics诊断采集,并新增“记录日志”开关;默认关闭时不会创建 session 目录或写入 CSV/crop/gallery/event。 - PC 端 ReID 研究工作区位于
tools/reid_pc_test/,已包含 crop 数据整理、bbox gate、chronological replay、sequence replay 等脚本和文档。 PersonCropCollector与PersonSequenceCollector已用于采集真实 OpenBot 检测框 crop 与连续时序数据。
当前暴露的核心问题不是“ReID 能否运行”,而是:
如何防止目标离开后误跟干扰者;
如何在目标返回后更快、更安全地重捕获。
下一步应安装最新 APK 做手机验收。需要先按需打开“记录日志”开关,再采集目标返回、蹲下/遮挡、目标离开 + 干扰者、目标在场 + 干扰者四类短场景,并用 tools/reid_pc_test/analyze_cartfollow_diagnostics_v1.py --compare-roots old=...,new=... 复盘 candidate_switch_penalty / belief_high_bbox_failed / recovered_rate / hard_stop_count / 非目标转绿。
注意:*.tflite、*.pth、*.onnx、tools/reid_pc_test/images/、tools/reid_pc_test/outputs/、tools/reid_pc_test/weights/ 等本地模型、图片和实验输出默认不进入版本库。
- 第 1 周:跑通 OpenBot 基础链路,完成需求、分工、BOM 和初版 PPT。
- 第 2 周:完成底盘联调、人物检测与自主跟随初版。
- 第 3 周:完成购物车化结构、安全停车、参数调优和中期材料。
- 第 4 周:完成联调、测试记录、最终演示流程、汇报与文档收口。
- 明确三位成员的最终分工
- 产出 BOM、接线图和测试记录模板
- 确认 OpenBot 具体代码仓与硬件兼容路径
- 落实底盘、电源、急停和购物筐结构方案
- OpenBot 工程理解不充分导致手机端调试卡住
- 电源与重心设计不合理影响跟随稳定性
- 目标跟随在遮挡和多人干扰场景下不稳定
- 采购周期挤压联调时间