news 2026/5/20 7:11:02

盲人出行辅助系统原型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
盲人出行辅助系统原型

我做了一个很有意义的盲人出行辅助系统原型,主要是结合现有导航OSRM/高德,实时感知前方潜在危险目标,辅助视障人士出行。 持续优化中(20260519),欢迎大家尝试,有一些想法也可以提出来。

开源地址:https://github.com/Lii-sir/Eye-Guide.git

1. 项目背景

对于视障人群来说,日常出行可以通过高德等等进行路线导航,但是在到达过程中最困难的是持续感知环境风险。传统导航软件可以告诉用户“往哪里走”,但是没法告诉用户“前方是否有行人、障碍物、台阶或者车辆”。而纯视觉系统虽然能识别环境,却缺少路径导航和实时位置联动功能。

针对以上问题,我做了一个原型项目EyeGuide。这个系统通将摄像头视觉感知、地图导航、GPS定位和语音播报串成一条完整链路,让系统不仅能“规划路线”,还能“观察前方环境实时提醒用户”。

这个项目更偏向一个工程原型和技术验证系统,终点不是做成商业的最终产品,如果要商用,后面可以嵌入开发板。但是嵌入之前还有一些工作需要做,比如功能的完善、推理加速等等,这些内容我还在持续优化中。

2. 项目目标

项目核心目标:

  • 实时感知用户前方环境,识别潜在危险目标。
  • 支持步行导航,并结合当前GPS定位实时推进导航。
  • 通过语音播报,把环境信息和导航信息及时传递给用户。

3. 系统主要功能

界面目前比较简单,还请忽略我这个太草率了。后面功能完善之后会优化界面。

3.1 自由探索模式

在自由探索模式下,程序会调用摄像头实时读取画面,并进行目标识别。系统会重点关注以下几类对象:行人、汽车、摩托车、台阶/高度变化区域。

对于靠近用户、存在风险的目标,系统会进行语音提示,比如:“注意,正前方,行人,1.0米”

3.2 路线导航模式

在路线导航模式下,用户输入起点和终点后,系统会调用地图服务生成步行路线,并在导航过程中实时播报当前导航步骤以及前方的危险目标。

项目目前支持两类导航来源:

OSM:基于Nominatim + OSRM

高德:基于高德Web服务API

3.3 GPS定位接入

为了实现边走边导航,项目支持接入USB/NMEA GPS模块,读取串口中的定位信息。如果没有外接GPS,系统会尝试调用Windows自带定位服务作为补充。这样可以实现获取当前位置、自动将当前位置填入导航起点、根据实时位置动态推进路线步骤。

4. 核心技术方案

4.1 视觉感知:YOLO 与 OpenCV双路径检测

在视觉感知部分,项目优先采用 Ultralytics YOLO 进行目标检测与目标跟踪,用于识别行人、车辆、自行车、障碍物等目标;在深度模型可用时,再结合 Depth Anything V2 对目标距离进行估计。

与此同时,系统并不完全依赖 YOLO。为了保证在依赖不完整、模型不可用或部署环境受限时仍能运行,项目还实现了一套基于 OpenCV 的启发式检测方案,主要包括:

  • 行人检测
  • 地面障碍物检测
  • 台阶/高度变化风险检测

目前 YOLO 检测用的还是开源权重,后面可能会爬一些数据,针对盲人出行常会遇到的障碍再进行微调训练。

4.2 深度估计:Depth Anything V2

仅仅知道前面有什么肯定不够,所有引入了深度估计进行单目深度估计,用来辅助计算目标和用户之间的大致距离。这里的距离并不是激光雷达那种严格物理测距,而是基于深度模型对单帧图像做推理得到的近似值。这里的距离也会用于风险等级评估,比如估计距离为0.8m以内,那这个风险等级就比较高。

4.3 方位判断

方位判断目前采用的是比较直接但很实用的方法,根据目标框中心点在画面中的横向位置,把目标划分成几个区域:左侧、左前方、正前方、右前方、右侧。这样系统就可以播报更具体的提示,比如:“左前方,行人,1.2米”。

4.4 地图导航

导航采用了两种实现路线。

OSM路线

  • 使用 Nominatim 做地理编码与地点搜索
  • 使用 OSRM 的 foot 模式做步行路线规划

高德路线

  • 使用高德的 POI 搜索、地理编码和步行导航接口
  • 更适合中文地址场景,尤其是国内地点检索

此外,为了避免地址模糊匹配错误,系统对候选地点做了多结果展示,让用户自己确认终点,而不是强行只用第一条结果。

4.5 语音播报机制

语音播报使用 Windows 下的 SAPI / pyttsx3 作为输出后端。为了避免播报过于频繁和混乱,系统在语音层做了几项处理:

  • 去重
  • 冷却时间控制
  • 优先级控制
  • 队列替换策略

这样可以尽量减少“同一目标每一帧都播报一次”的问题,让播报更接近真实辅助场景。

5. 项目整体架构

整个系统大体可以分成四层:

感知层

负责摄像头读取、YOLO 检测、深度估计、障碍物识别与方位判断。

定位与导航层

负责 GPS 接入、当前位置更新、地址解析、路线规划和自动导航推进。

播报层

负责把检测事件与导航事件统一送入语音队列,再根据优先级和冷却策略进行播报。

界面层

使用桌面 GUI 展示控制面板,同时显示视频窗口、导航信息和运行日志。

6. 当前存在的问题

这个项目目前仍然是原型系统,还存在不少问题:

  • 单目深度估计的距离误差仍然比较明显
  • 复杂场景下目标检测稳定性还有提升空间
  • 语音播报策略还需要继续优化,避免漏报或重复播报
  • 导航与视觉提示的融合逻辑还不够细腻
  • 打包部署体积较大,依赖项较重

这些问题也说明,视障辅助出行系统并不是单一模型就能解决的,而是一个需要持续工程优化和多模块协同的复杂系统。

7. 后续优化方向(持续优化中)

后续我计划继续完善:

  • 优化 YOLO 与深度估计的推理效率
  • 进一步减少语音播报重复和队列冲突
  • 增强对台阶、坑洞、盲道、路沿等关键场景的识别能力
  • 提升路线跟踪与自动重规划能力
  • 做更轻量的部署方案,降低安装包体积
  • 进一步适配新电脑开箱即用的安装流程

8. 展示

高清视频:

https://live.csdn.net/v/527244https://live.csdn.net/v/527244

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 7:05:21

写完一个 AI 编程助手之后,我才确定 prompt 工程不是重点

写完一个 AI 编程助手之后,我才确定 prompt 工程不是重点 代码开源在 GitHub,从零开始可读:code-agent。欢迎拍砖,点点star。 用 Claude Code 用着用着我有个怪念头:这东西底下是不是就一个 while 循环? 试着拆了一…

作者头像 李华
网站建设 2026/5/20 7:00:26

2026年企微会话存档涨价后,怎么买最划算?

2026 年企业微信官方会话存档价格大幅上调,基础费用直接翻倍。不少依赖会话存档做合规、质检的企业,陷入了 “合规刚需不能丢,成本暴涨扛不住” 的两难。其实,放弃纯官方接口自研,转向高性价比第三方服务商&#xff0c…

作者头像 李华
网站建设 2026/5/20 7:00:10

Keil µVision3在x64系统下的兼容性解决方案

1. Keil Vision3在Windows x64系统上的兼容性解析作为一名嵌入式开发老手,我深知开发环境配置的重要性。最近在帮团队搭建x64开发环境时,遇到了Keil Vision3的兼容性问题,这里把踩坑经验系统整理出来。Keil Vision3作为经典的嵌入式开发IDE&a…

作者头像 李华
网站建设 2026/5/20 6:56:16

《龙虾OpenClaw系列:从嵌入式裸机到芯片级系统深度实战60课》057、传感器融合:多传感器数据同步与滤波算法

OpenClaw系列:从嵌入式裸机到芯片级系统深度实战 057 传感器融合:多传感器数据同步与滤波算法 一、一个让我熬夜三天的bug 去年做四足机器人腿部姿态估计,IMU和关节编码器数据死活对不上。IMU输出200Hz,编码器只有100Hz,更离谱的是——IMU的SPI总线偶尔被DMA抢断,导致…

作者头像 李华
网站建设 2026/5/20 6:40:15

从KVL困惑到全双工通信:详解Hybrid混合器与回声消除技术

1. 项目概述:从“一根线”的困惑到Hybrid的真相刚入行硬件设计那会儿,第一次看到以太网PHY芯片的框图,里面TX和RX信号竟然共用一对差分线,我脑子里瞬间蹦出一个大大的问号:这不违反基尔霍夫电压定律(KVL&am…

作者头像 李华