Skip to content

Repository to create an accessible network and plan routes given a set of user preferences.

License

Notifications You must be signed in to change notification settings

Amsterdam-AI-Team/Accessible_Route_Planning

Repository files navigation

Accessible Route Planning

This repository contains a pipeline for accessible route planning. More specifically, it contains code to generate a accessible network and code to subsequently plan routes on this network given a set of user preferences. The following preferences that can be set by a user are included:

  • Minimum sidewalk width
  • Maximum curb height when crossing the street
  • Preference for using sidewalks or biycle lanes

Demonstration data has been included to run the pipeline.

The methods can serve as inspiration, or can be applied as-is under some specific assumptions:

  1. Usage in The Netherlands;
  2. Point clouds in LAS format and tiled following specific rules; and
  3. Corresponding AHN data.
Demo area Final demo network

Example: (left) The demo area used to generate network for. (right) The final demo network. Blue: sidewalks, green: bicycle lanes, purple: crossings, pins: public transport stops.

Demo route with walk preference Demo route with walk preference

Example: (left) Demo route with a preference for using sidewalks. (right) Demo route with a preference for using bicycle lanes. Both routes have a minimum sidewalk width of 0.8m maximum curb height of 0.04m

Goal

This repository is designed to address the challenges faced by less mobile individuals, particularly wheelchair users, in urban environments. The primary objective of this project is to enable citizens with reduced mobility to participate independently and equitably in city life. The result is a personalized route planner, contributing to enhanced accessibility for less mobile individuals as they navigate urban spaces. The repository provides a factual and technical resource for developers and contributors interested in advancing the accessibility of urban environments for diverse user needs.

Folder Structure

  • data Demo dataset to get started
  • notebooks Jupyter notebooks tutorials
  • src Python source code

Installation

This code has been tested with Python == 3.8 on Linux and MacOS.

IMPORTANT It is required to build two seperate environments. The first environment (steps 2a to 2c) is used to generate the network and the second environment (step 3) is used to plan routes on the network.

  1. Clone this repository:
git clone https://github.com/Amsterdam-AI-Team/Accessible_Route_Planning.git

2a) Create network generation environment and install dependencies:

pip install -r requirements_network_generation.txt

2b) Install the Urban Point Cloud Processing package from source:

python -m pip install git+https://github.com/Amsterdam-AI-Team/Urban_PointCloud_Processing.git#egg=upcp

2c) (Optional for demonstration purposes) install cccorelib and pycc from the CloudCompare-PythonPlugin project by following the summary instructions below; for more details and Windows instructions see their GitHub page. Please note, these two packages are not available on the Python Package Index (PyPi).

Building these packages requires Qt.

git checkout https://github.com/tmontaigu/CloudCompare-PythonPlugin.git
cd CloudCompare-PythonPlugin
pip install --upgrade pip  # Requires version >= 21.1
# For Mac OS
export CMAKE_PREFIX_PATH=/usr/local/opt/qt@5
pip install wrapper/cccorelib
pip install wrapper/pycc
  1. Create route planning environment and install dependencies:
pip install -r requirements_route_planning.txt

Usage

We provide notebooks that altogether make up the pipeline to generate the accessible network and plan routes. The notebooks should be run in a specific order, which can be found in the notebooks README.

Contributing

Feel free to help out! Open an issue, submit a PR or contact us.

Acknowledgements

This repository was created by Amsterdam Intelligence for the City of Amsterdam.

License

This project is licensed under the terms of the European Union Public License 1.2 (EUPL-1.2).