An environment-agnostic framework for implementing and comparing intersection control algorithms
Project description
IntersectionControl
An environment-agnostic framework for comparing intersection control algorithms
Getting Started
Installation
Clone the repository:
git clone git@github.com:julesdehon/IntersectionControl.git
cd IntersectionControl
It is recommended to create a new Anaconda environment to work in this project. This project was written using python 3.8. Other versions have not been tested:
conda create --name <environment-name> python=3.8
conda activate <environment-name>
Then install the dependencies:
pip install -r requirements.txt
Sumo
In order to be able to use the Sumo simulation environment, you must have Sumo installed. The installation instructions for Sumo can be found here.
Checking everything works
You can make sure everything was installed correctly by running ./main.py
or python main.py
which start up an
experiment using the Sumo environment, and the QBIM intersection control algorithm.
Note that in its current state, the QBIM implementation has some bugs so the simulation may crash after some time.
Exploring the code
A more detailed and high-level explanation of the various components is being written and will be referred to here.
The directory structure is as follows:
IntersectionControl
├── docs # Documentation images and files
├── intersection_control # The main source code package
│ ├── core # Defines all interfaces and defines the component structure
│ │ ├── environment # Provides an interface for any environment to implement
│ │ │ ├── environment.py # Defines the base Environment class
│ │ │ ├── intersectiont_handler.py # Defines the base IntersectionHandler class
│ │ │ └── vehicle_handler.py # Defines the base VehicleHandler class
│ │ ├── communication.py # Provides an interface for communication - V2V or V2I is possible. Specifically, defines the base MessagingUnit class
│ │ ├── intersection_manager.py # Defines the base IntersectionManager class
│ │ ├── performance_indicator.py # Defines the base PerformanceIndicator class (Not yet implemented)
│ │ └── vehicle.py # Defines the base Vehicle class
│ ├── algorithms # A collection of intersection control algorithm implementations (for now only QBIM). These are implementations of core.Vehicle and core.IntersectionManager
│ ├── environments # A collection of environment implementations (for now only SUMO). These are implementations of core.Environment
│ ├── communication # A collection of communication implementations (for now only DistanceBasedUnit). These are implementations of core.MessagingUnit
│ └── test # unit tests for various components
└── main.py # Main script to run an experiment - for now simply runs the QBIM algorithm in the SUMO environment
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file intersection_control-0.1.tar.gz
.
File metadata
- Download URL: intersection_control-0.1.tar.gz
- Upload date:
- Size: 25.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ad380783f4cfa6a4489da768f52671ac793757f96b190c7e5cc27eb15d68b7f |
|
MD5 | b34818202499b947b46ad52cabdf5423 |
|
BLAKE2b-256 | 5fcdfe25837b61ad11f61cd40606d99377fb1e8228057ca0849a7b82ac789f2c |
File details
Details for the file intersection_control-0.1-py3-none-any.whl
.
File metadata
- Download URL: intersection_control-0.1-py3-none-any.whl
- Upload date:
- Size: 31.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69226673be5051d7fb7324f1120b5598a9fec86d116a2c5a5a5e8b0583c1d1a2 |
|
MD5 | 7d2ec79e55aedbea1d75562840d9a1d8 |
|
BLAKE2b-256 | 148a33765caa065fc1eb3ac6697af7b1072657c8ec1fc26dfd3d8aa2859bb217 |