Code Monkey home page Code Monkey logo

p-dmpc's Introduction

Priority-Based Trajectory Planning for Networked Vehicles Using Motion Primitives

Setup

MATLAB R2023a

Install MATLAB R2023a with the following toolboxes:

  • Statistics and Machine Learning Toolbox
  • ROS Toolbox
  • Parallel Computing Toolbox

System Requirements for MATLAB ROS 2 Toolbox

In our priority-based trajectory planning, vehicles communicate using the MATLAB ROS 2 toolbox. Their custom messages are compiled with the MATLAB built-in function ros2genmsg(), for which you must have Python software, CMake software, and a C++ compiler for your platform (ROS Toolbox Requirements). For MATLAB R2023a

  1. Python 3.9
    1. Install Python 3.9 and add it to your system path variable.
    2. Go to the MATLAB command window and execute pyenv('Version','version') to set up Python with MATLAB. For example, pyenv('Version','3.9') will let MATLAB use Python 3.9. If MATLAB cannot find the version, provide its path with pyenv('Version','fullPathOfYourPythonInstallFolder\YourPythonExecutable').
  2. CMake 3.16.3+
    1. Install from https://cmake.org/download/
  3. C++ compiler
    1. Installation
    2. Configure your C++ compiler using mex -setup in the MATLAB command window.

System Requirements for using Lanelet2

As one map representation we use lanelet2, because it offers libraries with lots of useful functionality. Since the libraries only exist in Python and C++, mex functions are used to benefit from that. In order to compile these mex functions the following dependencies need to be met.

  1. Lanelet2
    1. Install according to https://github.com/fzi-forschungszentrum-informatik/Lanelet2#installation . Under Ubuntu22 you probably want to use it as part of the ROS2 humble version, i.e., sudo apt install ros-humble-lanelet2
  2. Eigen3
    1. Install Eigen3 as dependency of Lanelet2. In Ubuntu, the following command should be sufficient: sudo apt install libeigen3-dev
  3. Git Submodules
    1. Since some of our functionality is added by using git submodules, use git submodule init after cloning to retrieve the content of these repos.

Run Exeriments

See here

References

Please refer to the respective publication if you are using it for your work. Thank you very much!

P. Scheffe, J. Xu and B. Alrifaee, "Limiting Computation Levels in Prioritized Trajectory Planning with Safety Guarantees", ResearchGate, Preprint, 2023, doi: 10.13140/RG.2.2.32731.03368

Paper Repository Video

Checkout the the software version 5.0. The results of the publication can be reproduced by running

open graph_based_planning.prj
eval_parallel_computation_prediction_inconsistency()
eval_parallel_computation_CLs()

The results are saved in the folder "results".

P. Scheffe, J. Kahle and B. Alrifaee, "Reducing Computation Time with Priority Assignment in Distributed MPC," TechRxiv, Preprint, 2023, doi: 10.36227/techrxiv.20304015.v2

Paper Repository

Checkout the the software version 4.0. The results of the publication can be reproduced by running

eval_coloring_paper()

This evaluation comprises 720 simulations, so it will take days until completion. The results are saved in the folder "results".

P. Scheffe and B. Alrifaee, "A Scaled Experiment Platform to Study Interactions Between Humans and CAVs," 2023 IEEE Intelligent Vehicles Symposium (IV), Anchorage, AK, USA, 2023, doi: 10.1109/IV55152.2023.10186623.

Paper Repository Video

Checkout the the software version 2.0. The results of the publication can be reproduced by running

hdv_reachable_set_experiment()

The results are saved in the folder "results".

P. Scheffe, M. V. A. Pedrosa, K. Flaßkamp and B. Alrifaee, "Receding Horizon Control Using Graph Search for Multi-Agent Trajectory Planning", in IEEE Transactions on Control Systems Technology, 2022, doi: 10.1109/TCST.2022.3214718.

Paper Repository Video Code Ocean

Checkout the the software version 1.0. The results of the publication can be reproduced by running

eval_rhgs()

The results are saved in the folder "results".

P. Scheffe, G. Dorndorf, and B. Alrifaee, “Increasing Feasibility with Dynamic Priority Assignment in Distributed Trajectory Planning for Road Vehicles,” in IEEE International Conference on Intelligent Transportation Systems (ITSC), 2022, pp. 3873–3879. doi: 10.1109/ITSC55140.2022.9922028.

Paper Repository Video

The code is implemented in the CPM Lab software repository. The High Level Controller is implemented in C++ and is named "dynamic_priorities".

References in Bibtex format

@article{scheffe2023limiting,
    author  = {Patrick Scheffe and Jianye Xu and Bassam Alrifaee},
    title   = {Limiting Computation Levels in Prioritized Trajectory Planning with Safety Guarantees},
    year    = {2023},
    doi     = {10.13140/RG.2.2.32731.03368}}
}

@article{scheffe2023reducing,
    author = {Patrick Scheffe and Julius Kahle and Bassam Alrifaee},
    title  = {Reducing Computation Time with Priority Assignment in Distributed MPC},
    year   = {2023},
    month  = {2},
    doi    = {10.36227/techrxiv.20304015.v2}
}

@article{scheffe2023scaled,
    author = {Patrick Scheffe and Bassam Alrifaee},
    title  = {A Scaled Experiment Platform to Study Interactions Between Humans and CAVs},
    year   = {2023},
    month  = {2},
    doi    = {10.13140/RG.2.2.24697.13923}
}

@article{scheffe2022receding,
    author  = {Patrick Scheffe and Matheus Vitor de Andrade Pedrosa and Kathrin Flaßkamp and Bassam Alrifaee},
    journal = {IEEE Transactions on Control Systems Technology},
    title   = {Receding Horizon Control Using Graph Search for Multi-Agent Trajectory Planning},
    year    = {2022},
    volume  = {},
    number  = {},
    pages   = {1-14},
    doi     = {10.1109/TCST.2022.3214718}
}

@inproceedings{scheffe2022increasing,
  title = {Increasing {{Feasibility}} with {{Dynamic Priority Assignment}} in {{Distributed Trajectory Planning}} for {{Road Vehicles}}},
  booktitle = {{{IEEE International Conference}} on {{Intelligent Transportation Systems}} ({{ITSC}})},
  author = {Scheffe, Patrick and Dorndorf, Georg and Alrifaee, Bassam},
  year = {2022},
  pages = {3873--3879},
  doi = {10.1109/ITSC55140.2022.9922028}
}

Acknowledgements

This research is supported by the Deutsche Forschungsgemeinschaft (German Research Foundation) within the Priority Program SPP 1835 "Cooperative Interacting Automobiles" (grant number: KO 1430/17-1).

p-dmpc's People

Contributors

jianye-xu avatar bingyisu avatar julkah avatar jgdizui avatar pscheffe avatar cm314 avatar mjjojo97 avatar david-j-b avatar aldafux avatar sneakyhulk avatar

Stargazers

 avatar  avatar XHY avatar  avatar JUNGEE HONG avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar Zheyu avatar Manasvi Saxena avatar  avatar

Watchers

Marcus Völker avatar Michael Lamberti avatar  avatar Kostas Georgiou avatar

p-dmpc's Issues

Instructions for Running Experiments

Hello, Thanks for open sourcing your interesting work. I gave an attempt to get started with your repo, however I am unable to get things running. Request your kind help for the same.

  1. I am on Ubuntu 20.04 LTS with MATLAB 2023a installed with the mentioned toolbxes.
  2. MATLAB is using Python 3.9
    image
  3. I simply install CMake with sudo apt install cmake and using the default g++ as C++ compiler
    image
  4. I installed Lanelet 2 using sudo apt install ros-noetic-lanelet2 and installed Eigen3 as mentioned. I have also initialised the git submodules as mentioned.

Issues:

  1. When I run graph_based_planning.prj file, I get the following error:
    image
  2. When I run the main.m file with Circle scenario/Commonroad with 1 vehicle (other settings as default) in Simulation environement, I get the below error:
    image
    When I run main_distributed(1), I get the following error:
    image
  3. It is clear that Lanelet2 is still not installed properly as I get errors even with the main.m file when I choose Lanelet2 instead of Circle scenario/commonroad.
    image
  4. I basically also have doubts on how to properly run and visualise scenarios in action. Request your instructions here.
    Many Thanks in advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.