# vehicle-interaction-decision-making
**Repository Path**: wenb11/vehicle-interaction-decision-making
## Basic Information
- **Project Name**: vehicle-interaction-decision-making
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-03-19
- **Last Updated**: 2025-03-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Vehicle Interaction Decision Making
The repository implements the decision-making of multiple vehicles at intersections based on level-k game, and uses MCTS to accelerate search. The code is fully implemented in C++ and Python respectively.
## How to run🏃♂️
Clone the repository to local path:
```shell
git clone git@github.com:PuYuuu/vehicle-interaction-decision-making.git
```
The following is the development and testing environment of this repository , for your information:
- **System:** Ubuntu 20.04 ( WSL2 )
- **Python 3.8.10:** numpy == 1.24.4 matplotlib == 3.7.4
- **C++ Toolchain:** GCC 9.4.0 CMake 3.23.0
### 🐍Run using Python
#### 1.1.1 Requirement
Make sure your python version is 3.6.12 or above. Then use the following instructions to install the required third-party libraries, or install them manually.
```shell
pip install -r scripts/requirements.txt
```
#### 1.1.2 Run it
Firstly, you can run it directly using the default parameters.
```shell
python scripts/run.py
```
Or specify parameters for example:
```shell
python scripts/run.py -r 5 --log_level debug --config ./config/triple_interact.yaml
```
For detailed usage help, use `python scripts/run.py -h` to view.
### 🦈Run using C++
Running C++ requires python dependencies, refer to **1.1.1**. By the way, **the C++ implement of this repository is more than 10 times faster🚀 than the Python**. Therefore, strongly recommend you do further development on the basis of C++.
#### 1.2.1 Requirement
1. Install `eigen3` for matrix calculation, `fmt` for string format , and `spdlog` for log print :
```shell
sudo apt update
sudo apt install libeigen3-dev libspdlog-dev libfmt-dev
```
2. Install `yaml-cpp` for parsing yaml file :
```shell
git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
mkdir build && cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make -j6
sudo make install
```
#### 1.2.2 Build and run
```shell
cd ${path_to_project}
mkdir build && cd build
cmake .. && make -j6
./decision_making
```
More usage information can be found through `./decision_making -h` or code.
### 🛠Configure parameters
The configuration file of program running parameters is in `${Project}/config`. The default parameters can be used directly, and you can also change them according to your needs, such as changing the vehicle drawing style:
```yaml
# vehicle_display_style: "linestyle"
vehicle_display_style: "realistic"
```
## Reference📝
1. *Game Theoretic Modeling of Vehicle Interactions at Unsignalized Intersections and Application to Autonomous Vehicle Control* [[link]](https://ieeexplore.ieee.org/abstract/document/8430842)
2. *Receding Horizon Motion Planning for Automated Lane Change and Merge Using Monte Carlo Tree Search and Level-K Game Theory* [[link]](https://ieeexplore.ieee.org/document/9147369)