Skip to content

Offline OsmAnd navigation package for L6e microcars (Brommobielen) in the Netherlands, enforcing C9 and motorway bans via NDW traffic signs + OpenStreetMap for safe, legal routing.

License

Notifications You must be signed in to change notification settings

tbulligan/brombrom

Repository files navigation

BromBrom Banner

BromBrom: OsmAnd Microcar Navigation (Netherlands)

Important

BromBrom is a planning aid only. You are responsible for following traffic signs and Dutch law.

Latest Release Website

BromBrom creates a professional-grade OsmAnd navigation package specifically for L6e microcars (Brommobielen) in the Netherlands. It solves the unique routing challenges of microcars by rigorously excluding forbidden roads (C9 signs, motorways) from the map data using official NDW traffic data and OpenStreetMap.

OsmAnd is a free and open-source offline navigation app for Android and iOS: https://osmand.net.

✨ Features

  • Advanced Routing Engine: Custom .obf maps with "C9-forbidden" tags baked into the road network.
  • Intelligent Restriction Logic: Handles Dutch C9 signs using official NDW data; respects microcar exceptions (OB65).
  • Monthly Updates: Fresh navigation packages autogenerated on the 2nd of every month.
  • Premium Experience: Full support for voice guidance, lane assistance, and Android Auto (with OsmAnd Pro).
  • Zero-Touch Deployment: Latest files ready for your phone.

Support the Project: If BromBrom helps you navigate safely, consider buying me a coffee ☕.


📲 Installation & Setup

Important

Prerequisite: You must have OsmAnd installed on your device first. Download it from the Google Play Store or iOS App Store.

✅ Option A: BromBrom Manager (Recommended)

The easiest way to install and update BromBrom on Android.

  1. Download the BromBrom Manager App (BromBrom.apk) from the latest release.
  2. Install and Open the app.
    • Grant the "All Files Access" permission when prompted.
  3. Update Map: Tap the orange "UPDATE MAP" button.
  4. Update Routing: Tap "UPDATE BromBrom Routing".

🛠️ Option B: Manual Installation (Advanced / iOS)

See the Manual Install Guide for step-by-step instructions for iOS and advanced users.


🧪 Testing & QA

We ensure road safety through a combination of unit tests and post-build validation.

  • Fast Iteration: We use pytest for unit testing the core ETL logic.
  • Visual Audit: In DEBUG mode, we generate debug_snaps.gpkg for spatial verification.
  • Build Guard: Automated QA script validate_results.py checks artifact integrity.

Tip

Run Tests: pytest Learn More: See Testing & QA Architecture.


🔬 Core Algorithms

The heart of BromBrom is its directional snapping and exemption parsing logic.

  • Snapping: Uses 2D cross-products to determine the correct side of the road. See Snapping & Spatial Logic.
  • Exceptions: Handles complex Dutch signage like OB65 and OCR-prone text.

🧠 How it Works & Safety

Under the Hood

BromBrom doesn't just "prefer" certain roads; it programmatically enforces legal restrictions:

  1. Data Fusion: Combines latest OpenStreetMap data with the NDW live traffic sign database.
  2. Directional Snapping: Signs are snapped to roads using orientation logic to ensure the correct side of the road is blocked.
  3. Semantic Tagging: Injects motor_vehicle=no and microcar=no tags directly into the road network.
  4. Hard Blocking: The routing engine treats these roads as physically inaccessible for your vehicle type.

Safety & Resilience

If you mistakenly enter a forbidden road (e.g., following traffic or missing a sign):

  • GPS Snapping: The app will try to "snap" your position to the nearest legal road on the map.
  • Legal Safety: The app will never plan a route through a C9 road. If you end up on a restricted road, the app will guide you to the nearest legal exit. Always obey physical signs over the app.

🛠️ Development & Source Build

Option A: Native (Fastest)

  1. Setup Environment: micromamba env create -f environment.yml
  2. Install Tools: ./scripts/setup_tools.sh
  3. Run Build: ./run_full_build.sh

Option B: Docker (Source of Truth)

docker buildx build -t brombrom-builder .
docker run --rm -v $(pwd):/app brombrom-builder

📂 Project Structure

  • scripts/: Python ETL pipelines (Fetching, Snapping, Tagging).
  • config/: Routing profiles (.brf) and XML configurations.
  • app/: Source code for the BromBrom Manager (Flutter).
  • tests/: Unit tests for critical spatial logic.

⚖️ License & Legal

Data Attributions

Project License

© 2026 Tomaso Bulligan. All Rights Reserved. Personal, non-commercial use only.

About

Offline OsmAnd navigation package for L6e microcars (Brommobielen) in the Netherlands, enforcing C9 and motorway bans via NDW traffic signs + OpenStreetMap for safe, legal routing.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors