设计一款帮助轮椅使用者在城市环境中导航的安卓应用程序
轮椅使用者在出行前往往不清楚道路和人行道的状况或路面类型。根据路面是光滑沥青、碎石还是破损的铺装,旅行体验可能会有很大差异。不平整的路面、裂缝以及损坏的道路会使导航变得不舒服、困难,甚至存在安全隐患,给日常行动带来额外挑战。
道路分类的机器学习
我们使用 Edge Impulseulse 平台,利用自行收集的数据训练机器学习模型。大部分数据是在卢布尔雅那的现实轮椅移动场景中采集的。
该数据集主要关注三种地形类型:平地、硬质地形和崎岖地形。平地主要包括沥青路面,硬质地形包括铺有石板的碎石路和小径,而崎岖地形则指路面凹凸不平的道路,例如铺有花岗岩块的路面以及破损道路。
此外,我们引入了一个独立的空闲分类器,用于检测用户是否处于静止不动状态。这有助于提高地形分类系统的准确性和可靠性。
尽管该模型取得了非常高的准确率,但这一结果可能受到所收集数据量有限的影响。尽管如此,该模型在实际测试场景中仍表现出强劲且可靠的表现。
应用
我们决定为安卓手机开发这款应用,主要有两个原因。第一,安卓是全球使用最广泛的移动操作系统。第二,Edge Impulse平台提供了一个安卓库,可以轻松集成到现有的安卓项目中。
所有传感器数据均在设备本地处理,除非用户明确选择分享路线,否则不会向外部服务器发送任何数据。这也使应用程序具有极低的延迟,因此地形预测几乎能立即显示在用户界面上。
对于地图功能,我们主要使用了 Google Maps API,因为其文档详尽且易于集成。此外,我们还使用 Firebase,因为用户需要先注册账户,才能将记录的路径存储到数据库中。这有助于将手机本地存储的数据量降至最低。
使用中央数据库还能让我们构建一个由社区驱动的地图,该功能旨在成为我们应用程序的主要特色。然而,由于目前应用依赖于众包数据,我们尚未拥有足够的用户数据,因此这一功能对普通用户来说尚不实用。
通过该应用程序,用户可以随时随地记录路线。当他们对某条路线满意后,可停止录制,并选择将其删除、私密保存,或公开分享,以便加入社区地图。
用户还可以完全控制自己的隐私设置,并可随时将任何公开路线更改为私密模式。
进一步改进
我们主要是为了验证概念而开发这个项目,因此我们的原型和代码可能还有很大的改进空间。
数据主要来自一个来源,因此规模较小。我们认为,如果能收集到更多人参与的数据集,就能提高准确性,并明确每种地形应对应的颜色类型。由于Edge Impulse专注于存储空间极小的边缘设备,较大的模型不会占用过多空间,也不会使设备运行变慢。
目前缺少的一个关键功能是智能导航。这款应用的最终版本应能够查看所有上传的路径,并选择到目标地点最短且最平滑的一条路线。当然,这意味着我们需要收集大量用户上传的不同路径,才能让该功能正常运行。
或许除了自动地形追踪外,再增加一个按钮来添加楼梯和不可穿越的路径等障碍物也会是个不错的补充。
本文编译自hackster.io





