阿福老年陪护机器人 v1.7 发布

前言
从 v1.0 的小蜜陪护机器人到如今的阿福老年陪护机器人 v1.7,这个项目经历了大量的迭代与打磨。v1.0 的初衷是解决独居老人的安全问题,而 v1.7 则是在此基础上,让机器人看得更准、想得更聪明、用得更放心。
v1.7 的核心改进围绕三个方向展开:
- 检测能力升级:RTSP 流媒体摄像头接入、双模型重叠确认、摔倒检测
- AI 对话质量提升:自动搜索防护、答案质量守护、工具调用格式兼容
- 系统稳定性增强:内存泄漏修复、多线程解码、报警逻辑优化

v1.7 主要变更
一、检测能力升级
1. RTSP 流媒体摄像头接入
v1.0 仅支持 ESP32-CAM 拍照模式,v1.7 新增了 RTSP 流媒体摄像头接入能力,支持市面上绝大多数 IP 摄像头:
- FFmpeg 拉流 :支持 H.264/H.265 编码,多线程解码(
thread_count=0+FF_THREAD_FRAME|FF_THREAD_SLICE),解决超高清摄像头(2592×1944)解码性能问题 - OpenGL 渲染:自研 GLVideoWidget,OpenGL 3.3 着色器直接将 YUYV422 格式转 RGB 渲染,CPU 零负载,QPainter 叠加检测框/骨骼/姿态标签
- 多摄像头并发 :支持同时接入多路 RTSP 摄像头,非选中摄像头跳过 YUYV→BGR 转换,推理线程独立丢帧策略(
isBusy机制),帧缓冲内存池上限 16 块 - 自动重联:TCP 连接断开(-10054 WSAECONNRESET)自动重连,等首个关键帧再解码避免 POC 错误刷屏
- 配置持久化:摄像头列表通过 QSettings 保存,重启自动恢复
2. 双模型重叠确认
v1.0 仅靠姿态模型检测人,v1.7 引入双模型重叠确认机制:
- 姿态模型先检测人体骨骼关键点
- 目标检测模型检测 person 框(classId==0)
- 每个姿态结果与 person 框计算 IoU,IoU≥0.3 才保留
- 无 person 框检出则全部丢弃
这一机制大幅减少了姿态模型的误检率,特别是在复杂背景下。
3. 摔倒检测功能
v1.7 新增专门的摔倒检测模型 yolov26-fall.onnx,采用条件触发策略:
- 姿态检测先运行,检查是否有非站立(坐立/躺卧)的人
- 有非站立的人时才运行摔倒模型(节省算力)
- 摔倒模型结果与非站立人的框做 IoU≥0.3 重叠确认
- 确认通过才标记为摔倒并触发报警
报警复用现有确认机制:连续 5 帧命中 + 3 秒时间窗口 + 30 秒节流,后台摄像头也报警(不限选中)。
4. 火焰烟雾置信度可配置
系统设置新增火焰烟雾置信度阈值(默认 50%)和摔倒置信度阈值(默认 35%),通过 QSettings 持久化,实时生效。

二、AI 对话质量提升
5. 自动搜索防护与答案质量守护
v1.6 及之前版本中,当模型给出泛化回答(如"有很多著名的景点")时会自动触发网络搜索,但存在多个严重问题:
- 搜索关键词被污染 :系统记忆前缀
[系统记忆 - 跨对话上下文]被当作搜索关键词,截断后变成"AI Agent记忆"等无关内容 - 泛化判定过于简单:仅检查"有很多"等单一关键词,具体回答(含故宫、长城等实体)也被误判为泛化
- 搜索结果无关时仍替换原回答:好的回答被无关搜索结果替换,导致答非所问
v1.7 的改进:
| 改进项 | 说明 |
|---|---|
| 多维度泛化判定 | 模板措辞命中 且(长度不足 或 实体缺失)才触发搜索,单一维度命中不触发 |
| 搜索关键词净化 | 剥离系统记忆前缀,从用户原始问题提取关键词 |
| 搜索结果相关性判定 | 核心实体不匹配时保留原回答,不注入 RAG 重新生成 |
| 候选回答质量比较 | 原回答 vs 新回答综合得分比较(相关性 0.6 + 具体性 0.25 + 长度 0.15),禁止降级替换 |
| 纯文本回答直接采纳 | 聊天类任务首次纯文本回答不再强制重试 JSON 格式 |
| 配置外置化 | 泛化判定关键词列表、质量阈值等外置到 bin/agentconfigs/answer_guard.json |
6. XML 工具调用格式兼容
v1.7 使用的 Spark-X2.5-4B 模型会自然产出 XML 格式的工具调用:
<function name="网络搜索">{"arguments": {"搜索关键词": "新都 好玩 推荐 景点"}}</function>
但原有转换逻辑只支持 <param name="key">value</param> 子标签格式,导致 arguments 内容丢失变成空对象 {},工具执行失败"搜索关键词不能为空"。
v1.7 修复:在 <param> 子标签未匹配时,自动尝试将标签体作为 JSON 解析,支持 {"arguments": {...}} 包装格式和纯参数对象格式。日志文案从 "MiniCPM5" 改为通用的 "XML tool-call format"。
三、系统稳定性增强
7. 内存泄漏修复
| 泄漏点 | 修复方案 |
|---|---|
| 日志控件 undo 栈无限累积 | setUndoRedoEnabled(false) |
av_frame_unref 规范化 |
补充帧释放 |
| 帧缓冲内存池 | BufferPool 上限 16 块,QSharedPointer 自定义 deleter 归还 |
| 推理事件堆积(主因) | inferRequested 跨线程队列 cv::Mat 约 3.7MB/帧堆积 → m_inferInFlight 原子限流 |
8. 报警逻辑优化
- 位置重叠确认:IoU≥0.2 或中心点包含 + 连续 5 次 + 时间窗口 3 秒双条件
- 后台摄像头也报警:不限选中摄像头
- 断流清零追踪:摄像头断开连接时清零报警追踪状态
9. 其他改进
- llama.cpp API 适配 :新版
common_chat_params::prompt类型变更、common_chat_parse参数变更、GGML_CPU_ALL_VARIANTS=ON适配 - Qt 中文翻译 :加载
qtbase_zh_CN.qm翻译,QMessageBox 按钮中文化 - 检测框绘制:火焰红/烟雾灰/人绿框 + COCO 17 关键点骨架连线 + 关键点圆点 + 中文标签 + 置信度
- 人体姿态标签:人的框标签显示"人·站立/坐立/躺卧 xx%",底部摘要"检测到 N人 (站立X 坐立Y)"

功能列表
| 功能 | 说明 | v1.0 | v1.7 |
|---|---|---|---|
| 摔倒检测 | 姿态检测非站立 → 摔倒模型确认 → IoU≥0.3 重叠确认 → 报警 | - | ✅ |
| RTSP 流媒体接入 | FFmpeg 拉流 + OpenGL 渲染 + 多摄像头并发 + 自动重联 | - | ✅ |
| 双模型重叠确认 | 姿态模型 + 目标检测 person 框 IoU≥0.3 确认 | - | ✅ |
| 自动搜索防护 | 多维度泛化判定 + 关键词净化 + 相关性判定 + 质量比较 | - | ✅ |
| XML 工具调用兼容 | 支持 JSON 包装格式 {"arguments":{...}} | - | ✅ |
| 火焰烟雾检测 | 置信度阈值可配置(默认 50%) | ✅ | ✅+ |
| 晕倒检测 | 检测到人晕倒后及时报警或通知家属 | ✅ | ✅ |
| 长时间站立检测 | 发现你一个人在家站立很久,就会和你攀谈 | ✅ | ✅ |
| 记忆能力 | 跨对话记住用户说过的话,做过的事 | ✅ | ✅ |
| 设备操作能力 | 控制各种家用电器 | ✅ | ✅ |
| 隐私保护能力 | 所有数据存储在本地,不会上传到任何服务器 | ✅ | ✅ |
| 语音识别能力 | 可以识别人类语言,根据语言做相应处理 | ✅ | ✅ |
| 工具调用能力 | 可以调用外部工具,比如搜索、翻译、播放音乐等 | ✅ | ✅ |
| 聊天能力 | 可以和用户进行简单的聊天 | ✅ | ✅+ |
| 播放广播电视 | 可以播放广播电视,比如新闻、天气、股票等 | ✅ | ✅ |
| 定时任务能力 | 可以设置定时任务 | ✅ | ✅ |
| 扩展能力 | 系统设计成插件的模式 | ✅ | ✅ |
技术栈
| 组件 | 版本/说明 |
|---|---|
| 开发框架 | Qt 5.15.16 (MSVC 2022) |
| AI 模型 | Spark-X2.5-4B(对话)+ YOLOv8 系列(检测)+ yolov26-fall(摔倒) |
| 推理引擎 | ONNX Runtime + llama.cpp |
| 视频处理 | FFmpeg 7.1 (libavcodec 63) |
| 渲染 | OpenGL 3.3 + QPainter |
| 操作系统 | Windows 10+ |
安装说明
下载地址
百度网盘:百度网盘 请输入提取码(提取码:4qsj)
安装步骤
- 解压软件包
- 将模型文件放到软件启动目录的 sceneconfigs\models 下(含
yolov26-fall.onnx摔倒检测模型) - 运行软件 KuboRobot.exe
新增配置文件
| 文件 | 说明 |
|---|---|
| bin\agentconfigs\answer_guard.json | 自动搜索防护配置:泛化判定关键词列表、质量阈值、权重参数 |
RTSP 摄像头配置
在软件界面"RTSP 摄像头"选项卡中添加摄像头,填写:
- 摄像头名称
- RTSP 地址(如
rtsp://admin:password@192.168.1.100:554/stream1) - 点击添加即可,支持多摄像头并发
结语
阿福老年陪护机器人 v1.7 在 v1.0 的基础上,让机器人真正具备了实时监控的能力。从拍照模式到流媒体实时监控,从单一姿态检测到双模型重叠确认 + 摔倒模型确认,从简单的泛化判定到多维度答案质量守护,每一次改进都源于实际使用中发现的问题。
希望阿福老年陪护机器人能真正帮助到有需要的人,用科技守护每一个家庭。
阿福老年陪护机器人开发团队