slug
type
status
date
summary
tags
category
password
Property
Aug 27, 2023 01:44 PM
icon
Blind-Helper,基于标签识别和物联网编写的的盲人购物智能辅助装置
第一部分——绪论
项目研究的背景
根据中国盲人协会的统计数据,目前中国约有1700万盲人。这些盲人在日常生活中面临着各种困难,其中在超市和商场这种大人流量的环境中购物更是一大挑战。由于他们的视力障碍,很难快速找到需要的商品,同时志愿者也难以为他们提供个性化的帮助和服务。这不仅给盲人本身带来困扰,也给全社会带来了共同的责任和挑战。为此,智能辅助装置成为当代社会生活的迫切需求。
在这种情况下,本项目应运而生。我们旨在为盲人提供一种智能的购物辅助装置,以解决盲人购物过程中遇到的问题。通过标签识别和物联网技术,该装置能够快速扫描商品标签,提供商品信息和导航等服务。在这种方式下,盲人可以更快速、更准确地找到需要的商品,同时也可以获得更加个性化的购物体验。
我们希望本项目将会为盲人在超市和商场中的购物带来重大的改善,同时也希望通过该项目的推广和普及,让全社会能够更加关注盲人群体的需求,形成全社会关爱盲人的强大合力,共同努力为盲人提供更好的生活体验。
项目的目标
当前已有的技术实现方案
1.专利-盲人导购系统总体方案2.产品设计,其中包含盲文标签,无障碍支付实现方案3.通过手机app实现引导4.专利-摄像头模块提示商品信息
现有的盲人智能导购产品所依赖的技术大多为定位系统或视觉识别算法中的物体识别。基于定位系统实现的装置容易受到定位信号在大楼内不稳定的影响,使其引导精度大幅降低,同时也无法适用于现实中大型多层的复杂购物环境。基于视觉识别的装置则受到人流、光线等不稳定因素的影响,无法为盲人提供准确的引导服务。
项目的创新之处
- 在技术实现方案上
本项目采取了基于AprilTag的标签识别算法,借助AprilTag的光反射弱的特点,相较于传统条形码、二维码有着更快更准的识别能力。同时,AprilTag也是视觉校准算法,广泛应用于机器人摄像头纠偏,故可通过标签识别算法来提供非常准确的空间位置引导,其精度可以达到厘米级。后期可通过本项目开发适配的接口来实现远超在现已存在的设备中的引导精度,这是该算法的应用前景。
引用:AprilTag标签识别算法的优势利用Huskylens的AI摄相头进行识别AprilTag的原理
- 在使用便捷程度上
在现有的项目中,常见的软件解决方案为设计手机APP和定制机器人。然而,对于本就有视力障碍的盲人群体而言,使用手机APP来实现引导的功能存在很大的挑战,因为安装APP对他们而言并不轻松。另一方面,使用定制化的机器人将直接提高产品的实际成本,同时其庞大的体积在使用时也很不便,并妨碍正常客户的购物需求和体验。因此,本项目采用小型化、轻量化的硬件,在不造成额外影响的前提下,尽可能提高盲人群体的购物体验。此外,我们还通过后期开发扩展模块的方式来实现APP中的功能。
- 在与其他产品的适配性上
在现有的解决方案中,大多为私有化开发并注册专利,让没有开发经验的普通商家“心有余而力不足”,很难将其适配到自己的商店之中。同时,其闭源的特点也让它在大多数时候处于无人维护系统、更新商品信息的状态下,在实际中没有很好的体验。而本项目采取“开源硬件+开源软件”的解决方案,于商家,所有的技术都可查可用,适配更轻松!与开发人员,开放源代码意味着有着强大的开发社区生态,由许多开发人员共同维护。同时,本项目对现有的商店环境改动小,可融合现有商品管理系统,不为商家管理带来负担,切实提升全社会无障碍服务的建设。
blind_helper
lifeafter619 • Updated Nov 12, 2024
综上,提出本项目的开发目标和预期效果
- 商品识别:通过AprilTag标签识别实现商品识别,并进行播报详细信息和位置引导
- 语音识别:使用语音识别模块识别语音并作出反应
- 音量调节:通过设计音量调节功能页,让盲人能自行控制音量
- 物连网连接:与物联网平台进行连接,实现信息推送与传入
- 服务端、项目接口:通过开发对应接口实现功能和音量调节,如服务端实例“按键映射”(见后文),实现与其他产品联动
第二部分——具体的代码实现方案
项目总体流程设计:

1.项目初始化部分

如图所示,ESP32主程序下为本项目的主枝代码。其中,第一个实现的功能即为连接功能。在connect模块下有一个设置选项connect_switch,可在调用时根据实际情况设置对应值。若将connect_switch的值设置为local,那么主控端将会在本地连接WiFi和物联网平台。如果该值被设置为server,则意味着启动服务端进行连接物联网平台,能减轻主控板计算及传输压力,带来更好的体验。连接初始化完成后,Global_init模块进行全局模块初始化,包括设定环境变量(Setup_env_local子模块),初始化语音识别模块(Voice_module_init子模块)以及mp3播放模块,AI摄像头模块。
2.功能——商品识别部分:基于AprilTag标签识别算法

如图所示。为了提升项目整体的稳定性,我们将功能模块分别置于子线程中予以实现。商品识别服务为子线程1。当掌控板上的按键A键被按下后,则将页面切换到商品识别对应的页面(Scan_module_page子模块),并进行语音提醒。随后即调用AI摄像头对应组件。来判定商品是否属于方框中,并播放对应的音频文件来实现商品识别引导以及位置提醒功能。
为了节约掌控版的整体算力,所有的功能实现模块均进行了反向条件的判定:即避免循环执行所带来的内存占用问题,在其它按键被按下时(如暂停)及时跳出循环。
3.功能-语音识别部分:基于语音识别模块

语音识别服务为子线程4,语音识别模块识别到对应关键词后返回id值(于Global_init模块中Voice_module_init子模块定义)至主控板,并写入speech_rec_id变量中,程序则根据对应id做出反应。
4.音量调节功能

本项目精心设计了音量调节功能,定义了set_volume函数用于直接调节音量,适用于外部调用;同时也定义了volume_up和volume_ down函数用于调高、调低音量并包含对应提示页面和提示语音,让用户拥有更智能化的音量调节体验
5.提示页面

本项目使用了“语音提示+屏幕显示”双通知模式,同时设计了提示页面和提示语音,既能有效保障盲人能得到正确引导,也能够让视力正常者根据屏幕提示的内容进行对应设置和调整。经实测,提示页面接近无障碍app使用体验,满足当代人机交互原则。
6.与服务端连接、物联网

主控板与服务端之间通过无线广播功能进行连接来达到按键映射的效果,如图左侧所示,在服务端接受到物联网平台的消息或相应按键被按下后便向主控板发送控制命令来调整功能;同样地,主控板接收到物联网平台easyiot传输的消息后便执行对应指令


7.其它推送服务支持、公共API
通过http发送Get或Post包的方式,可以接入其它统一推送服务来取代mqtt平台接收消息,相较而言,通过统一推送服务进行消息推送更便于使用,如推送至微信或手机通知中
下面给出一种调用的实例:

同时,由于mqtt平台使用时需登录,给普通人使用带来麻烦,并且不适合在外紧急时使用,所以我正在开发公共api调用功能,即向我的api地址api.66619.eu.org发送post包,包体中包含key以验证是否有控制权限,以及需要调用的功能,亦或直接将其拼接在url中调用,如 https://api.66619.eu.org/your_key/function 来调用。目前该功能正在开发之中,并通过apipost平台进行测试
更为重要的是,该功能在完成后即可加入公共api体系,让其他联网程序更为便捷的调用本项目,让“万物互联”成为可能!
第三部分——总结
Blind-Helper项目的目标是通过现有的技术来提高盲人的购物体验。项目的主要功能包括商品识别、语音识别、音量调节、与物联网平台的连接等。其中,商品识别功能可以通过AprilTag标签识别实现商品识别,并进行详细信息和位置引导的播报;语音识别功能可以使用语音识别模块识别语音并作出反应;音量调节功能可以让盲人得以自行控制音量,提高购物体验;与物联网平台的连接可以实现信息推送与传入。除此之外,本项目还提供了提示页面、公共API等功能,为盲人购物带来更加便捷的体验。未来,我希望能通过开发app的方式更加便捷地进行管理和使用,并形成设备间网络来实现更好的辅助、引导效果!
附录:双端源代码
- 作者:𝟞𝟙𝟡
- 链接:https://66619.eu.org/article/blind-helper-docs
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。