
This repository includes comprehensive ethical trajectory planning software. Its core consists of a quantification of risks in the motion planning of autonomous vehicles and a subsequent fair distribution of risk. The algorithm is compatible to the simulation environment CommonRoad and can be evaluated and tested empirically. Further information can be found in the paper (see References).
The installation of this repository takes around 10 min and consists of three steps. We recommend using an isolated virtual environment for installation.
Clone this repository with:
git clone https://github.com/TUMFTM/EthicalTrajectoryPlanning.git
Navigate to the root folder of the repository ([..]/EthicalTrajectoryPlanning) and install requirements:
pip install -r requirements.txt
Download CommonRoad scenarios by cloning the scneario repository next to this repository:
git clone https://gitlab.lrz.de/tum-cps/commonroad-scenarios
so that you have the following folder structure:
├── EthicalTrajectoryPlanning (This repository)
├── commonroad-scenarios
Results were obtained with commonroad-scenarios at commit 35b9cfb5b89d33249ea0d5507b9465650ebeb289.
Instead of cloning you can download and unpack this commit directly with:
wget -c https://gitlab.lrz.de/tum-cps/commonroad-scenarios/-/archive/35b9cfb5b89d33249ea0d5507b9465650ebeb289/commonroad-scenarios-35b9cfb5b89d33249ea0d5507b9465650ebeb289.tar.gz -O - | tar -xz
To run the ethical planner on an exemplary default scenario, execute the following command from the root directory of this repository:
python planner/Frenet/frenet_planner.py
You will see a live visualization of the scenario being solved by the planner. Now you can start with your own experiments by changing the configs or selecting another scenario by adding
--scenario <path-to-scenario>to the command.
By default logs are saved and can be analyzed afterwards by running:
python planner/Frenet/analyze_tools/analyze_log.pyThe idea and basic principles of this algorithm are presented in Geisslinger et al. 20231. The following describes how the results from the paper can be reproduced. To evaluate the planning algorithm on multiple scenarios execute:
python planner/Frenet/plannertools/evaluatefrenet.pyBy default a single scenario from all available scenarios is randomly chosen. The number of evaluation scenarios can be changed with the limit_scenarios variable in the script or by adding --all to the command to evaluate on all available scenarios.
To evaluate with the according config settings of ethical, ego and standard, add an according argument, for example:
python planner/Frenet/plannertools/evaluatefrenet.py --weights ethical --allTo evaluate on all 2000 scenarios, make sure to have at least 200 GB space left on your device for saving the log files. For better runtime, we recommend using multiprocessing and a GPU for the prediction network. Evaluating all scenarios in 10 parallel threads with a GPU takes around 48 hours. Results and logfiles for each run are stored in planner/Frenet/results.
Standard evaluation metrics such as cummulated harm on all scenarios are provided within the results (e.g. results/eval/harm.json). planner/Frenet/analyze_tools/analyze_risk_dist.py helps to extract risk values out of multiple logfiles. Boxplots with risk distribtuions as in Geisslinger et al. 20231 can be generated using planner/Frenet/plot_tools/boxplots_risks.py.
$ claude mcp add EthicalTrajectoryPlanning \
-- python -m otcore.mcp_server <graph>