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


前言

从 v1.0 的小蜜陪护机器人到如今的阿福老年陪护机器人 v1.7,这个项目经历了大量的迭代与打磨。v1.0 的初衷是解决独居老人的安全问题,而 v1.7 则是在此基础上,让机器人看得更准、想得更聪明、用得更放心。

v1.7 的核心改进围绕三个方向展开:

  1. 检测能力升级:RTSP 流媒体摄像头接入、双模型重叠确认、摔倒检测
  2. AI 对话质量提升:自动搜索防护、答案质量守护、工具调用格式兼容
  3. 系统稳定性增强:内存泄漏修复、多线程解码、报警逻辑优化

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.0v1.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)

安装步骤

  1. 解压软件包
  2. 将模型文件放到软件启动目录的 sceneconfigs\models 下(含 yolov26-fall.onnx 摔倒检测模型)
  3. 运行软件 KuboRobot.exe

新增配置文件

文件说明
bin\agentconfigs\answer_guard.json自动搜索防护配置:泛化判定关键词列表、质量阈值、权重参数

RTSP 摄像头配置

在软件界面"RTSP 摄像头"选项卡中添加摄像头,填写:

  • 摄像头名称
  • RTSP 地址(如 rtsp://admin:password@192.168.1.100:554/stream1)
  • 点击添加即可,支持多摄像头并发

结语

阿福老年陪护机器人 v1.7 在 v1.0 的基础上,让机器人真正具备了实时监控的能力。从拍照模式到流媒体实时监控,从单一姿态检测到双模型重叠确认 + 摔倒模型确认,从简单的泛化判定到多维度答案质量守护,每一次改进都源于实际使用中发现的问题。

希望阿福老年陪护机器人能真正帮助到有需要的人,用科技守护每一个家庭。


阿福老年陪护机器人开发团队

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐