About

Why?

Over recent years, many North American cities have taken steps to improve their cycling infrastructure. This has included constructing or upgrading bike lanes and paths, adding bicycle parking spaces, and promoting bike-sharing services. 

An important aspect of cycling infrastructure to consider is the quality of the ride. This may be affected by the roughness of the surface and the presence of imperfections such as cracks or "potholes". While cities may have a large amount of road quality data, this may be biased towards the perspective of a vehicle. Cyclists travel at slower speeds, have different levels of suspension, and have a narrower wheelbase.  Thus, while cyclists may be able to avoid larger obstacles such as "potholes", they may experience larger discomfort due to smaller rocks and gravel that often cannot be avoided.  

Our goal is to crowdsourced data about the "bumpiness" of roadways and paths from the perspective of cyclists. This data may be used to determine which paths should be upgraded and where new paths should be constructed. As well, under the principles of open data, other organizations can use this data for their own purposes. To achieve this goal, we have constructed an Android application to collect data, and a web server to aggregate and visualize it.

How?

The BikeVibes app was developed by Kai Luedemann. It was programmed using Android Studio in Java. The app allows you to track your rides, view which parts were the bumpiest, and upload your data to a server. When you open the app, it displays information about your most recent trip. The map displays the route, coloured according to how bumpy each segment was. Green indicates a smoother ride, while red sections are the most bumpy.  Note that colouring is with respect that the ride being visualized. 

In addition, there are summary statistics such as the distance and average speed of the ride. You can activate the tracking switch to begin a new trip. When active, the app will listen to your device's accelerometer sensor and GPS unit to record data on the bumpiness of your ride. The app will continue to collect for data until the switch is deactivated, even if the app is closed. You will see a notification whenever the app is currently tracking. Once complete, the trip will be visible in the app. Use the arrows at the top-right corner of the screen to change which trip is currently shown. The upload button will send your data to the remote web server from all trips since your last upload. This feature requires an internet connection and may take a few minutes to complete --you can exit the app or lock your device while uploading, as it will finish the process on its own. You can access the settings menu from the gear icon in the top-right corner of the app.  In the settings menu, you can change your blackout radius, set an alias, or clear your data. There is also additional information, a link to the privacy policy, contact info, and acknowledgements.

A section of a trip

A zoomed-in view

Light Mode

Visualization

The BikeVibes website was also designed and coded by Kai Luedemann. It was created using Python and the Flask library. The map is displayed using the Leaflet Javascript package. The website and database are self-hosted using a server provided by Cybera

The site displays the data collected by the app, aggregated over all of the users. Similar to how it is done within the app, segments are coloured according to the bumpiness of the ride. The lines are coloured in order of increasing roughness from green to red, as indicated by the colour gradient on the page. Filters are provided to query the data according to user alias, date, and time. This allows you to view how road quality and ridership patterns vary over time. In addition, the map allows users to pan and zoom in order to view the data in greater detail. 

There will be also links back to this website and to a "request data" form.  Individuals or organizations will eventually be able use this form to download the raw and non-identifiable data for their own purposes.

Project Details and Contact Information

The website and Android application were developed by Kai Luedemann as part of an undergraduate research project at the University of Alberta in the Department of Computing Science in the Summer of 2022. The project was proposed and supervised by Professor Mario Nascimento. Funding was generously provided by the Natural Sciences and Engineering Research Council of Canada (NSERC) through an Undergraduate Student Research Award (USRA). Inquiries can be directed to Mario Nascimento.