Skip to main content

Frenetix Motion Planner: Sampling-based Frenet Planner & Multi-agent CommonRoad Scenario Handler

Project description

DOI

Linux Python 3.10 Python 3.9

Frenetix Motion Planner & Multi-agent Scenario Handler

This repository includes a Frenet trajectory planning algorithm and a Multi-agent Simulation Framework in the CommonRoad scenario format. The trajectories are generated according to the sampling-based approach in [1-5] including two different implementations. The Repo provides a python-based and a C++-accelerated Motion Planner Frenetix implementation. The multi-agent simulation can be used to integrate and test different planning algorithms.

🔧 Requirements & Pre-installation Steps

Requirements

The software is developed and tested on recent versions of Linux. We strongly recommend to use Ubuntu 22.04 or higher. For the python installation, we suggest the usage of Virtual Environment with Python 3.10 or Python 3.9 For the development IDE we suggest PyCharm

Pre-installation Steps

  1. Make sure that the following dependencies are installed on your system for the C++ implementation:

    • Eigen3
      • On Ubuntu: sudo apt-get install libeigen3-dev
    • Boost
      • On Ubuntu: sudo apt-get install libboost-all-dev
    • OpenMP
      • On Ubuntu: sudo apt-get install libomp-dev
    • python3.10-full
      • On Ubuntu: sudo apt-get install python3.10-full and sudo apt-get install python3.10-dev
  2. Clone this repository & create a new virtual environment python3.10 -m venv venv

  3. Install the package:

    • Source & Install the package via pip: source venv/bin/activate & pip install . or poetry install
    • Frenetix should be installed automatically. If not please write rainer.trauth@tum.de.
  4. Optional: Download additional Scenarios here

🚀🚀🚀 Frenetix-Motion-Planner Step-by-Step Manual

  1. Do the Requirements & Pre-installation Steps

  2. Change Configurations in configurations/ if needed.

  3. Change Settings in main.py if needed. Note that not all configuration combinations may work. The following options are available:

    1. use_cpp: If True: The C++ Frenet Implementations will be used.
    2. Set the scenario name you want to use.
  4. Run the planner with python3 main.py

  5. Logs and Plots can be found in /logs/<scenario_name>

🚗🛣️🚙 Multi-agent Simulation Framework

Run Multi-agent Simulation

  1. Do the Requirements & Pre-installation Steps
  2. Change Configurations in configurations/ if needed.
    By default, a multi-agent simulation is started with all agents.
    The multi-agent simulation settings can be adjusted in configurations/simulation/simulation.
  3. Change Settings in main_multiagent.py if needed
    1. Set the scenario name you want to use.
    2. evaluation_pipeline: If True: Start an evaluation pipeline with all scenarios
  4. Run the simulation with python3 main_multiagent.py
  5. Logs and Plots can be found in /logs/<scenario_name>

Integration of external Trajectory Planner

  1. A base class with all attributes necessary for the simulation is provided in cr_scenario_handler/planner_interface
  2. Create a new file with an interface to fit your planner and save it in cr_scenario_handler/planner_interface
    The new interface must be a subclass of PlannerInterface.
  3. In configurations/simulation/simulation adjust used_planner_interface with the class-name of your interface

🚸 Occlusion-aware Module

reactive-planner

Also checkout the external Occlusion-aware Module here.

🤖 Reinforcement Learning Framework

Also checkout the external Reinforcement Learning Agent Framework here.

📈 Test Data

Additional scenarios can be found here.

🔧 Modules

Detailed documentation of the functionality behind the single modules can be found below.

  1. General Planning Algorithm

  2. Frenetix C++ Trajectory Handler

  3. Commonroad Scenario Handler

  4. Behavior Planner

  5. Occlusion-aware Module

  6. Wale-Net

  7. Risk-Assessment

  8. Reinforcement Learning Module Extension

📇 Contact Info

Rainer Trauth, Institute of Automotive Technology, School of Engineering and Design, Technical University of Munich, 85748 Garching, Germany

Marc Kaufeld, Professorship Autonomous Vehicle Systems, School of Engineering and Design, Technical University of Munich, 85748 Garching, Germany

Johannes Betz, Professorship Autonomous Vehicle Systems, School of Engineering and Design, Technical University of Munich, 85748 Garching, Germany

📃 Citation

If you use this repository for any academic work, please cite our code:

@misc{frenetix2024,
      title={Frenetix Motion Planner: High-Performance and Modular Trajectory Planning Algorithm for Complex Autonomous Driving Scenarios}, 
      author={Korbinian Moller and Rainer Trauth and Gerald Wuersching and Johannes Betz},
      year={2024},
      eprint={2402.01443},
      archivePrefix={arXiv},
      primaryClass={cs.RO}
}
@misc{multiagent2024,
      title={Investigating Driving Interactions: A Robust Multi-Agent Simulation Framework for Autonomous Vehicles}, 
      author={Marc Kaufeld and Rainer Trauth and Johannes Betz},
      year={2024},
      eprint={2402.04720},
      archivePrefix={arXiv},
      primaryClass={cs.RO}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frenetix_motion_planner-2024.1.1.tar.gz (737.9 kB view details)

Uploaded Source

Built Distribution

frenetix_motion_planner-2024.1.1-py3-none-any.whl (774.4 kB view details)

Uploaded Python 3

File details

Details for the file frenetix_motion_planner-2024.1.1.tar.gz.

File metadata

File hashes

Hashes for frenetix_motion_planner-2024.1.1.tar.gz
Algorithm Hash digest
SHA256 66faa1ea07981856c240919e2ba26c2691a6c9cf37f2a119fd809f0950a34fe4
MD5 2cca8e061356264639ba0f79d75132ab
BLAKE2b-256 06b12f202d5fe62267637debc4a2473c91b0e7a2dc0e72f82cfded3e58325ca9

See more details on using hashes here.

File details

Details for the file frenetix_motion_planner-2024.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for frenetix_motion_planner-2024.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8a6409fe354eb2856073d5fe8a9063a1415f68f6929d3e2812d1811c4908f5dc
MD5 ee6b6a0bd2f91e069a9866a001d2bac2
BLAKE2b-256 b6103848260b68d3c1bcf8d3fd93d9af577d683c74c6cbb444e23667d239f5b1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page