一次贴身超车只持续几秒。骑行者还来不及说清那辆汽车、道路宽度、路面上的车道标线,以及受挤压的感受,车辆已经驶到前方。OpenBikeSensor 为这个转瞬即逝的事件留下持久记录,其中的分工格外坦率:超声波传感器测量自行车侧方物体的距离,GPS 记录自行车的位置,固件让各项记录保持时间同步,骑行者按下按钮,表示“刚才发生了一次超车”。[1][3]
最后这个动作划出了一道分界,让整个开源项目变得易于理解;把它看作等待自动化替代的初级功能,便会错过这一点。汽车、墙壁、立柱、行人或另一辆自行车都会把回声送回测距传感器,这些距离读数只说明侧方存在反射体,交通事件仍由骑行者判断。OpenBikeSensor 因而广泛记录,只给骑行者确认的事件加上标签;机器观察与赋予观察以含义的人类判断都得到保留。[1]
这个项目公开的内容远超一件小设备。它的代码仓库包含固件、电路板、可打印外壳、文档,以及地理空间数据门户的代码。[2] 如今,这条完整链路尤为重要,因为研究人员对 OpenBikeSensor 数据的使用已经超出单次倡议骑行:近年的研究把观测记录与道路特征关联起来,制定正式的采集规程,并明确说明过滤、GPS 不确定性和事件定义方面的选择。[6][8] 它的吸引力来自一条可检查的路线,从街道上的一次经历一直通往研究主张;一个绝对可靠的数字从来不在项目的承诺之内。
图片说明:题图中的设备装在鞍座下方,正处于实际工作位置;实验台上孤立摆放的设备会失去这层位置关系。黑色超声波换能器朝向超车车辆经过的一侧,线缆通往骑行者使用的显示器和按钮。背景仍是乌尔姆市政厅,它把公民测量放回现实街道,抽象的物联网演示则缺少这份具体背景。[9]
一个点出现在地图上前,五类事实必须相遇
OpenBikeSensor Classic 以 ESP32 微控制器为核心,配有分别朝向左右两侧的超声波测距模块、GPS、microSD 卡,以及独立的显示器与按钮单元。项目零件清单列出了 ESP32、两个 JSN-SR04T 模块、GPS 和 SD 卡硬件;相关代码仓库还公开了复现设备所需的 PCB 与外壳设计。[2][10] 每个部分掌握着不同的事实:
| 层级 | 能够确认的事实 | 单独使用时无法确认的内容 |
|---|---|---|
| 超声波测距 | 回声在某个声波传播时间后返回 | 反射回声的物体是什么,以及是否发生了超车 |
| 骑行者按钮 | 骑行者把刚刚过去的某个时刻认定为超车 | 缺少对应传感器读数时的横向间距 |
| GPS | 自行车所处的大致地点和时间 | 车道的精确几何形态或超车车辆的行驶轨迹 |
| 轨迹文件 | 测量值、元数据与确认记录保存在一起 | 数据采集规程是否始终一致 |
| 门户 | 大量轨迹可以得到处理、查询和制图 | 地图上的热点是否反映因果关系、是否具有代表性,以及该处是否安全 |
设备手册把测量几何关系写得很具体。出发前,用户根据自行车与传感器的位置输入偏移量,再分别以开放空间和墙壁检查设备。墙壁位于约 2.5 米范围内时,应用已配置偏移量后的读数应当合理;面对开放空间时,预期结果为无距离读数。骑行期间,设备测量左右两侧,并连续保存轨迹。[1][11]
在最底层,距离始于时间。超声波脉冲离开换能器,经物体反射后以回声返回。轨迹格式保留以微秒计的左右两侧原始回声时长及换算系数,经过修正的 Left 和 Right 字段则保存以厘米计的最小距离。[3] 两种表示同时保留,是一项扎实的开放数据设计。未来的解析器仍能回看原始测量值,取整后的显示数值只是其中一种表示。
这样的设计也让累积的校准问题显露出来。偏移量错误,会让每一个名义横向间距发生偏移。传感器略微朝上时,收到的回声有时会来自另一处表面,与对准车身时不同。安装件松动,则会增加骑行途中角度变化的风险。源码让计算过程公开可查,实际安装状态仍决定哪些数据进入计算。
按钮写入事件含义,距离另有测量来源
无论车辆是否正在经过,超声波模块都会持续运行。手册提醒,传感器的有效范围内除了机动车,还会出现建筑物、立柱、其他骑行者和行人。骑行者识别出一次超车后,短按按钮便会记录事件。如果左侧存在可用的探测结果,固件会把这次确认与近期窗口内保留的左侧最小读数关联起来;文档留出了约五秒,骑行者因而可以避开最危险的瞬间再伸手按键。[1][3]
这项关联可以直接从 CSV 文件中核查。Confirmed 字段的内容是与骑行者确认动作相关联的原始测量索引,距离则保存在其他字段中。典型文件约为每秒一行;同一时间段内确认了多项测量时,行记录可以重复。每一行还可包含多组带时间戳的左右回声三元组,元数据会声明其最大组数与数据格式版本。[3]
这种设计带来一种容易被汇总地图遮住的人因失效模式:选择性按键。如果骑行者只标记令人害怕的贴身超车,忽略间距充足的超车,所得分布便无法代表全部超车事件。项目明确要求用户也标记横向间距充足的超车。[11] 项目同时强调个人安全优先;按键会分散对路况的注意力时,可以放弃这次测量。[1] 两条说明都成立。合在一起看,漏记事件属于方法的一部分,把它仅仅当作可以忽略的麻烦,会抹去这一事实。
2025 年的一项独立传感器项目把这项取舍呈现得格外清楚。SenseBike 保留超声波测距,同时加入朝向后方的探测系统,让超车事件可以自动触发;论文作者把这套安排与 OpenBikeSensor 的车把按钮作了对比。[7] 自动化减轻了骑行者的操作负担,同时引入一个新的分类器,随之而来的还有自身的探测几何与误报。OpenBikeSensor 选择了另一种取舍:由人标注事件,文件则保留足够的时间证据,供人检查标注的具体内容。
轨迹留下审计记录,结论仍需另行建立
OpenBikeSensor 的内部格式先写入 URL 编码的元数据,再接上以分号分隔的 CSV 表头和数据行。元数据记录固件与数据格式版本、车把偏移量、传感器类型、隐私模式、设备与轨迹标识符、最大有效回声时间等内容。解析器应忽略未知的元数据键;对于一套需要持续演进的格式,这是一项重要的兼容规则。[3]
数据行把多个观测尺度放在一起:日期和时间;纬度、经度、海拔、航向与速度;HDOP 和卫星数量等 GPS 质量字段;电池电量;左右两侧最小距离;确认索引;隐私状态;以及原始回声序列。[3] 它包含的信息比地图上的一个点更丰富,因为文件还保留着判断这个点是否可靠的线索。GPS 定位质量较差、电池电量耗尽、回声缺失或确认记录未能匹配,都可以在清理期间继续作为证据保留下来,避免被渲染后的符号遮蔽。
门户延续了同样的职责划分。它的 API 接收轨迹上传并保存原始轨迹文件,后台工作进程随后转换其中的观测记录并提取相关事件。PostgreSQL 与 PostGIS 保存地理空间记录,数据库函数生成矢量瓦片,React 前端再用 MapLibre 完成渲染。[5] 每一处分界都让运营人员能够提出准确的问题:骑行记录是否成功上传?原始文件是否得到解析?哪些事件经过处理后被保留下来?数据库查询是否正确汇总了事件?地图样式是否只是让某一类事件看起来更醒目?
隐私同样属于测量链。骑行手册建议在离家一段距离的位置开始和结束记录,或配置隐私区。[1] 固件配置支持带有半径和隐私行为的地理区域;同一份配置若包含 Wi-Fi 凭据和门户访问 token,这些内容会以纯文本保存,因此文档专门提醒用户谨慎分享备份。[4] 发布清理后的地图,与发布原始路线或设备配置,对应不同的数据层级。负责任的团队应判断协作者实际需要其中哪一层。
研究质量从传感器读数之后开始
两项独立研究表明,可检查性比数字表面的精确感更重要。2026 年的一项奥地利研究把带地理坐标的 OpenBikeSensor 事件与全国道路数据连接起来。作者为道路几何图形设置一米缓冲区,以容纳轻微的 GPS 偏差,并排除小于或等于 0.30 米的横向距离,理由是这些数值疑为误读或来自非标准情况。[6] 两项步骤都来自研究者的分析选择,超声波换能器只提供读数。论文记录了这些分析选择,以便其他研究人员质疑或复现。
2024 年的一项斯图加特研究采用了不同选择。一名骑行者始终使用同一套设备,遵循明确的骑行规程,完成约 790 公里的记录,标记了 4,081 次超车,覆盖 14 条路线。论文说明哪些超车情况计入、哪些排除,骑行者如何选择在道路上的骑行位置,以及如何安排观测时段。[8] 这些细节与最终的距离数据同样重要。传感器让数千起事件能够测量,规程则使比较经得起检验。
OpenBikeSensor 事件所能证明的内容也止于此处。它能够支持这样一项主张:骑行者标记了一次超车,设备在某个 GPS 位置附近记录到特定的横向回声。单凭这一事件,主张范围只到前一句为止;车辆身份、速度、完整道路横断面、驾驶者意图以及超车成因仍需另行取证。同一地点反复出现的事件可以促使人们继续调查,道路设计、交通流量和骑行者行为之间的因果区分仍要依靠更多证据。
更有帮助的理解,落在两种断言之外:一边把公民数据缩减为轶事,另一边认为地图足以结束争论。OpenBikeSensor 让一段经历进入系统性检验。良好的研究随后补上采集规程、排除标准、不确定性处理和背景信息,并让主张的范围与证据相称。
扩大设备规模前,试点应先统一参与者的操作方法
OpenBikeSensor 适合愿意共同承担实地工作与数据管理的骑行团体、交通研究人员和市政合作伙伴。个人制作者可以组装并测试一台设备;要开展可信的多人骑行试点,则需要有人维护各硬件修订版并负责校准,有人制定事件规程,也有人保护、清理并解读所得路线数据。这些职责可以由同一个小团队承担;源码公开以后,它们依然存在。
首次部署若要经得起检验,范围应当有意收窄:
- 记录每台设备的准确硬件修订版、固件版本、传感器类型、安装位置和偏移量。
- 采集前按照文档完成开放空间与墙壁检查,此后定期复查,并在设备受到撞击或重新安装后再次检查。[11]
- 用文字定义超车事件。训练骑行者同时标记普通超车与贴身超车,并明确对路况的注意始终高于数据完整性。
- 扩大范围前,先让多台设备或多名骑行者在同一条已知路线上重叠采集一次。比较缺失的确认记录、不合理数值、GPS 位置和设备之间的差异。
- 将原始文件与处理后的导出文件分开保存,并为每一条清理规则记录版本。每次删除都应依据有版本记录的清理规则;读数削弱预期说法,本身不构成删除理由。
- 配置隐私区,限制原始路线的访问权限,并从共享的配置备份中移除凭据。[4]
- 发表结果时一并公开方法:谁在骑行、骑行时间、事件定义、排除内容,以及地图无法呈现的内容。
需要碰撞预警设备的人,应当选择另一类产品。人工确认系统的职责止于记录确认动作,提醒骑行者、识别威胁和捕捉每一次超车都超出它的能力范围。市政证据服务也需要另行建设;运营门户需要地理空间数据库、身份服务、轨迹处理能力,以及管理公共数据的组织能力。[5]
OpenBikeSensor 的长处,正是把这些分界一一保留下来。回声时间经过换算才得到横向间距;间距与骑行者确认结合后才构成超车事件;事件汇集后才显出热点;热点还需结合背景分析才能形成解释。项目公开的硬件、固件、文件格式与门户,让每一步转换都有据可查。车把上的小按钮使这条链路保持诚实:机器记录街道的回声,证据中始终看得见人的存在。
来源
- OpenBikeSensor《Recording a measurement ride》——设备检查、连续测距、骑行者确认、近期事件窗口、安全关机与隐私指引(德语)。
- OpenBikeSensor 的 GitHub 组织页——固件、门户、PCB、可打印外壳、文档及相关开放组件的项目代码仓库。
- OpenBikeSensor《Format specification for the internal CSV format》——元数据、版本信息、修正后距离、确认索引、GPS 字段与原始回声时长。
- OpenBikeSensor《OpenBikeSensor configuration》——偏移量、确认窗口、隐私区域、门户凭据,以及关于备份所含机密信息的警告。
- OpenBikeSensor《Portal Architecture》——上传 API、保留的轨迹文件、后台工作进程处理、PostgreSQL/PostGIS 存储、矢量瓦片生成与前端制图。
- Tabea Fian、Georg Hauger、Aggelos Soteropoulos、Veronika Zuser 与 Maria Scheibmayr,《A Sensor-Based and GIS-Linked Analysis of Road Characteristics Influencing Lateral Passing Distance Between Motor Vehicles and Bicycles in Austria》,Sensors 26(2026)——独立使用 OpenBikeSensor 数据、GIS 匹配、过滤与不确定性处理。
- Andre Tenbeitel、Simone Arnold 与 Jens Rettkowski,《SenseBike: A New Low-Cost Mobile-Networked Sensor System for Cyclists to Monitor Air Quality and Automatically Measure Passing Distances in Urban Traffic》,Sensors 25(2025)——人工与自动事件探测的独立比较。
- Leo Casey、Lutz Gaspers 与 Harald Mandel,《Overtaking in Stuttgart—analysis of the lateral distances between motor vehicles and bicycle traffic with reference to traffic volume and cycling infrastructure》,Traffic Safety Research 7(2024)——规程、事件定义、路线设计与 4,081 次超车测量。
- Wikimedia Commons《Mounted OpenBikeSensor in Ulm, Germany》——文章缩放后的纪实照片之来源、作者、日期、原始尺寸与 CC BY-SA 4.0 许可。
- OpenBikeSensor《Parts》——OpenBikeSensor Classic 官方物料清单,包括 ESP32、超声波模块、GPS、SD 卡硬件、PCB 与打印外壳(德语)。
- OpenBikeSensor《Quickstart》——偏移量设置、开放空间与墙壁检查、安全操作,以及同时标记间距充足和贴身超车的指引(德语)。