[Proposal] Add cyclist position availability fields to VehiclePosition and CarriageDetails

0 views
Skip to first unread message

omniiq

unread,
9:14 AM (2 hours ago) 9:14 AM
to GTFS-realtime
Hello,

I'd like to propose adding two new experimental fields to the GTFS Realtime specification to enable real-time reporting of bicycle rack and storage availability on transit vehicles.

Pull Request: https://github.com/google/transit/pull/611
Issue: https://github.com/google/transit/issues/610

### The Problem

Transit passengers traveling with bicycles currently have no way to know whether a bike rack or storage area will be available on an approaching vehicle. Typical transit buses have only 2-3 external bike rack positions. When full, cyclists are denied boarding -- they must wait for the next vehicle or complete their trip by other means.

The Santa Clara Valley Transportation Authority (VTA) recently completed a USDOT SMART Grant pilot (FAIN: 69A3552341049) that quantified this problem and tested sensor-based solutions. Their August 2025 implementation report confirmed that real-time bike rack availability data is valued by riders and useful for service planning, and that no transit agency in North America currently provides this information through standard data feeds.

### Proposed Fields

Four new uint32 fields, added to two existing messages:

VehiclePosition (for buses and single-unit vehicles):
- cyclist_positions_available (field 12) -- positions currently open
- total_cyclist_positions (field 13) -- total capacity

CarriageDetails (for trains and multi-car vehicles):
- cyclist_positions_available (field 6) -- positions currently open on this carriage
- total_cyclist_positions (field 7) -- total capacity on this carriage

### Working Implementation

Producer: Sportworks Global LLC -- Velolink (https://www.sportworks.com/velolink) -- a commercially available bike rack monitoring system using magnetic reed switch sensors in Sportworks Apex racks. Public GTFS-RT feed: https://cascadia-metro-gtfs-rt.sportworks.com/gtfs-rt/vehicle-positions

The feed has been validated against protoc, Python gtfs-realtime-bindings, and Node.js gtfs-realtime-bindings -- all tests pass. Full validation results are in the pull request.

Consumer: [TO BE CONFIRMED]

### Design Notes

- Follows existing GTFS-RT patterns (experimental status, absence semantics, vehicle-level + carriage-level)
- Uses exact integer counts rather than qualitative enums -- appropriate for low-count, discrete positions
- Privacy: No PII transmitted; vehicle-level anonymous counts only
- Naming: "cyclist positions" is human-centric and mode-agnostic (covers exterior racks, interior storage, hooks)

The full proposal, including motivation, design decisions, privacy considerations, and proto changes, is in the pull request linked above.

I look forward to the community's feedback.

Best regards,
Oliver Sturrock
CTO, Sportworks Global LLC / Silver Falls Capital
olst...@silverfallscapital.com
Reply all
Reply to author
Forward
0 new messages