本项目面向具身智能的数据采集业务。机器人要学会在真实环境里干活,需要大量「人是怎么操作物体的」真实数据:采集员头戴多目相机、双手各持一只采集夹爪,在采集室完成收纳、组装等真实任务,设备把多路视频和动作信号录成 MCAP 文件,质检后交付给模型公司训练。
原来的采集现场主要靠人工:采集员在设备厂商的 App 里用访客身份登录,录完的数据留在设备或存储卡里,靠拔读卡器、插 U 盘拷到电脑再上传,用「设备编号 + 文件夹 + 表格」记账。由此带来几个问题:
1. 人、设备、任务、数据对不上,结算和追责说不清;
2. 取数靠人工,拷数据时设备停工,容易拷漏、拷错;
3. 存储卡在数据没备份完时被格式化,素材永久丢失;
4. 数据只增不删,存储和对外交付的成本随数据量快速上涨;
5. 数据质量问题往往到客户验收时才暴露,造成返工。
同时有几条硬约束:采集设备是第三方产品,不能改固件和厂商 App;新功能不能影响公司已有系统;手机扫码要求 HTTPS;现场网络不稳定;画面里有人脸,对外界面要做隐私保护。
围绕「采集 → 取数 → 入库 → 存储 → 交付 → 展示」这条数据链路,做了 8 个模块:
1. 扫码绑定:采集室、设备、存储卡、人员、任务五类对象都有永久编号和二维码。采集员在手机上领任务,连续扫房间码和设备码就能开始录制,系统把每次录制和人、房间、设备、卡、任务绑在一起,录完的素材按「设备 + 拍摄时间」自动归属。一台设备、一张卡同一时间只能在一条录制里,扫到别人正在用的设备会当场拦下;录制超时先提醒,宽限期后自动结束并标为异常。
2. 二维码与权限管理:管理后台管住二维码的整个生命周期:补打的新码扫一下才生效、旧码自动作废,标签丢失可作废补打;设备原有的厂商序列号码录入后可直接扫;支持先贴空白码后建档、表格批量登记和扫码盘点;采集员扫不出来可一键上报。内置超级管理员、管理员、采集员、老板等六种角色,系统按权限点校验,改权限立即生效。
3. 存储卡生命周期:存储卡有 9 个状态,每次变化都留记录。至少两份校验通过的副本、其中一份在云端,管理员才能放行格式化;拷卡站读一次卡同时写本地和云端,边读边算哈希,写完两端回读复核,并生成行业通用的 ASC MHL 校验清单。
4. 设备实时画面与远程配网:在飞书网页应用的设备页查看头戴多路相机的实时画面,约 3 秒出画、约 10 帧/秒,没人看自动停推,开着预览也不影响录制;管理员可远程给设备换 Wi-Fi,录制中禁止切换,连不上新网络自动回到原网络。
5. 夹爪无线取数:插一次 USB 完成授权,之后全走 Wi-Fi;只拉已录完的片段,增量拉取、断点续传,两端各算一次 sha256 对账,不一致自动重拉,再按设备和时间窗上报归属。
6. 上传入库:外地采集站把批次文件夹拖进浏览器,本机先预检文件类型、文件头,以及头戴、左爪、右爪三路数据是否齐全、时间是否对齐,不合格的文件不上传;上传前可三路同步预览;合格文件分片直传对象存储
技术选型:后端统一用 Python FastAPI + SQLite,和团队已有系统一致,便于并入;前端是原生 JavaScript 单页,内联 jsQR 扫码;接入飞书网页应用,OAuth + PKCE 免登,JSAPI 调起原生扫一扫;状态大屏用 SSE 实时推送、globe.gl 绘制三维地球;拷卡站是 Python 命令行(xxhash、ascmhl、对象存储 STS 临时凭证);设备侧通过 SSH 执行 shell(wpa_cli、dbus-send),落地机用 OpenCV 拉流转帧;各服务独立部署在 Linux 服务器上,Nginx 独立路由。
关键设计:
1. 统一状态机:手机端、后台、拷卡站的所有状态变化只经过一个状态机引擎,每类对象一张转移表(状态 × 动作 × 前置条件 × 角色);事件流水只追加,纠错也是追加一条「更正」,历史可以完整回放。
2. 并发与幂等:「谁在用」用带起止时间的绑定记录表示,数据库唯一索引保证一台设备、一张卡同时只有一条未结束的绑定;写接口带请求号做幂等,并发和重复提交在数据库层兜住。
3. 拷卡可信:一次读取双写本地和云端,流式计算 xxh64,写完从两端回读复核并生成 ASC MHL;后台比对哈希后裁决,不采信拷卡站自报,格式化之前有完整证据链。
4. HTTPS 页面播放局域网视频流:落地机按需打开设备预览,用 OpenCV 拉流、只保留最新一帧,压成约 10 KB 的 JPEG,经长连接推到云端,手机在同一域名下取帧;不开放任何入站端口,没人看就停。
5. 远程换网不失联:设备上只用 wpa_cli 新增并切换网络,连接失败自动退回原网络;录制中禁止换网;Wi-Fi 密码用完即从云端删除。
6. 大文件不经服务器:浏览器本地预检,合格的才分片直传对象存储,服务器只负责签名和记账,数据量再大也不压服务器。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论