{"id":42708863,"url":"https://github.com/commonroad/miqp-contingency-planner","last_synced_at":"2026-01-29T15:04:22.930Z","repository":{"id":334889223,"uuid":"1140623830","full_name":"CommonRoad/miqp-contingency-planner","owner":"CommonRoad","description":"An MIQP-based contingency planner for autonomous driving under uncertainty. The planner maintains multiple candidate trajectories that share an initial segment and branch later to cover different possible evolutions of the driving environment.","archived":false,"fork":false,"pushed_at":"2026-01-27T10:53:47.000Z","size":287,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-27T22:42:39.686Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CommonRoad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-23T14:39:02.000Z","updated_at":"2026-01-27T10:53:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CommonRoad/miqp-contingency-planner","commit_stats":null,"previous_names":["commonroad/miqp-contingency-planner"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/CommonRoad/miqp-contingency-planner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CommonRoad%2Fmiqp-contingency-planner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CommonRoad%2Fmiqp-contingency-planner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CommonRoad%2Fmiqp-contingency-planner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CommonRoad%2Fmiqp-contingency-planner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CommonRoad","download_url":"https://codeload.github.com/CommonRoad/miqp-contingency-planner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CommonRoad%2Fmiqp-contingency-planner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28880017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T10:31:27.438Z","status":"ssl_error","status_checked_at":"2026-01-29T10:31:01.017Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-29T15:04:22.174Z","updated_at":"2026-01-29T15:04:22.926Z","avatar_url":"https://github.com/CommonRoad.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MIQP-based contingent planning\n\n\n## Overview\n\nThis repository implements an MIQP-based contingency planner for autonomous driving under uncertainty. The planner maintains multiple candidate trajectories that share an initial segment and branch later to cover different possible evolutions of the driving environment. Unlike heuristic methods, the branching time is optimized as a decision variable within a receding-horizon framework.\n\n## Installation Guide\n\nThe codebase targets Python 3.10 and has been tested on Ubuntu 20.04. We recommend using Anaconda to manage the environment so you can always return to a clean setup if something goes wrong.\n\nCreate a new Conda environment with Python 3.10:\n\n```bash\nconda create -n miqp_planner python=3.10 -y\n```\nIn this guide, the environment is named `miqp_planner`. You may choose a different name, but use it consistently in the commands below. Then activate the environment:\n\n```bash\nconda activate miqp_planner\n```\nEnsure the environment remains activated before running any project-related commands.\n\nClone the repository using SSH and enter the project directory:\n\n```bash\ngit clone git@gitlab.lrz.de:cps/commonroad/miqp-based-contingency-planner.git\ncd miqp-based-contingency-planner\n```\nThis project uses Poetry for dependency management. Install Poetry inside the activated Conda environment:\n\n```bash\npip install poetry\npoetry --version\n```\n\n\n\nInstall all required dependencies according to the locked versions in `poetry.lock`, and install the project itself:\n\n```bash\npoetry install\n```\nThis step may take several minutes depending on the system and network connection.\n\nTo verify that the project has been installed correctly, run:\n\n```bash\npython -c \"import miqp_planner; print(miqp_planner.__file__)\"\n```\nIf no error occurs and a valid path is printed, the installation was successful.\n\n## Optimization Solver License\n\nThis project relies on optimization solvers such as Gurobi. To use these solvers, a valid academic license is required.\n\nGurobi academic licenses:\nhttps://www.gurobi.com/academia/academic-program-and-licenses/\n\nAfter obtaining a license, install the Python interface:\n\n```bash\nconda install -c gurobi gurobi\n```\n\n## Folder Structure\n\n```text\nmiqp-based-contingency-planner\n|\n├─ config\n│  ├─ configuration.py                 # Dataclass-based configuration loader and updater\n│  ├─ time_invariant_constraints.py    # Time-invariant constraint definitions\n│  ├─ intersection.yaml                # Intersection scenario configuration\n│  ├─ lane_change_mona.yaml            # Lane-change (Mona) scenario configuration\n│  └─ lane_change_multi.yaml           # Multi-obstacle lane-change configuration\n|\n├─ experiments\n│  ├─ visualization.py                 # Visualization helpers for planned trajectories\n│  └─ simulator\n│     ├─ opt_simulator.py              # Optimization-based prediction simulator\n│     ├─ sim_config.yaml               # Simulator configuration\n│     └─ utils.py                      # Simulator utility functions\n|\n├─ miqp_planner\n│  ├─ miqp_planner_base.py             # Base MIQP planner class and shared logic\n│  ├─ miqp_long_planner.py             # Longitudinal MIQP sub-planner\n│  ├─ miqp_lat_planner.py              # Lateral MIQP sub-planner\n│  ├─ miqp_ks_planner.py               # Kinematic single-track (KS) MIQP planner\n│  ├─ miqp_enks_planner.py             # Enhanced nonlinear KS (ENKS) MIQP planner\n│  ├─ miqp_partial_planner.py          # Partial MIQP planner variants\n│  ├─ helper_functions.py              # Reference path and helper utilities\n│  ├─ safe_distance.py                 # Safe-distance constraint modeling\n│  ├─ trajectory.py                    # Trajectory data structures and utilities\n│  ├─ gurobi_optimizer.py              # Gurobi-backed optimization routines\n│  ├─ main.py                          # Main planner entry point\n│  ├─ main_close_loop.py               # Closed-loop experiment entry point\n│  └─ main_multi_obs.py                # Multi-obstacle experiment entry point\n|\n├─ scenarios                           # CommonRoad scenario XML files\n|\n├─ tests\n│  └─ test_MIQP_planner.py             # End-to-end MIQP planner tests\n|\n├─ pyproject.toml\n├─ poetry.lock\n├─ commonroad_style_guide.rst\n├─ LICENSE.txt\n└─ README.md\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommonroad%2Fmiqp-contingency-planner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcommonroad%2Fmiqp-contingency-planner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommonroad%2Fmiqp-contingency-planner/lists"}