/AutonomousDrivingTrajectoryPlanning

LBADTP: Libraries and Benchmarks for Autonomous Driving Trajectory Planning

Primary LanguageC++

LBADTP: Libraries and Benchmarks for Autonomous Driving Trajectory Planning

This repository contains the implementation of the following paper. It is accepted to IEEE TIV.

Introduction

LBADTP provides various autonomous driving trajectory planning test scenarios and planners with the following features:

  • Test scenarios of varying complexity covering the full range of structured and unstructured autonomous driving applications.
  • A complete implementation of state-of-art trajectory planners in Matlab, Python, and C++.

Benchmarks

Scenarios

The test scenarios for autonomous driving trajectory planners are organized in the following structure:

scenarios/
    ├ structured scenarios/
        ├ Case1.csv
        ├ Case2.csv
        └ ...
    └ unstructured scenarios/
        ├ Case1.csv
        ├ Case2.csv
        └ ...

Each scenario contains the following information:

  • The information for planning ranges and obstacles
  • The vehicle geometrics and kinematics settings
  • The initial and terminal vehicle state constraints

Evaluation

  • Runtime
  • Score w.r.t. kinematic/dynamic feasibility, collision-free safety, trajectory smoothness, time-energy, etc.
    • For more information about the score criteria, please refer to the score criteria in TPAP Competition

Libraries

The code implementation of state-of-art trajectory planners in Matlab/Python/C++ is organized in the following structure. Here we take the Matlab language as an example.

Matlab/
    ├ Main.m
    ├ Planners/
        ├ Graphbased/
            ├ PlanAStarPath.m
            ├ PlanHybridAStarPath.m
            ├ PlanHybridAStarPath.m
            ├ PlanSimpleStateLatticePath.m
            ├ PlanControlLatticeTrajectory.m
            └ ...
        ├ Samplingbased/
            ├ PlanInformedRRTPath.m
            ├ PlanKinodynamicRRTTrajectory.m
            ├ PlanCLRRTTrajectory.m
            └ ...
        ├ Optimizationbased/
            ├ PlanOBCATrajectory.m
            ├ PlanSCPTrajectory.m
	    ├ PlanL1SCPTrajectory.m
	    ├ PlanL2SCPTrajectory.m
		├convex corridors for collision constraints/
		    ├FindCFS.m
		    ├FindBox.m
		    ├FindBubble.m
        └ ...
    ├ CheckCollision/
        ├ CheckByCircle.m
        ├ CheckByAABB.m
        ├ CheckByOBB.m
        └ CheckByArea.m
    ├ ConvertPathtToTrajectory/
        ├ PlanSpeedForStaicScenarios.m
        ├ PlanSpeedForDynamicScenarios.m
    └ ...

Dependencies

How to use

  1. Clone this repo.

git clone https://github.com/gyq18/AutonomousDrivingTrajectoryPlanning

  1. Install the required libraries.

  2. Execute main.m/main.py/main.cpp script in each directory. You can replace the planner in the main.m/main.py/main.cpp script.

  3. Add star to this repo if you like it 😃.

Citation

If you find our code or paper useful, please consider citing

@ARTICLE{10329446,
  author={Guo, Yuqing and Guo, Zelin and Wang, Yazhou and Yao, Danya and Li, Bai and Li, Li},
  journal={IEEE Transactions on Intelligent Vehicles}, 
  title={A Survey of Trajectory Planning Methods for Autonomous Driving — Part I: Unstructured Scenarios}, 
  year={2023},
  pages={1-29},
  doi={10.1109/TIV.2023.3337318}}

Contributors

Acknowledgement

Special thanks to Matthias Althoff and Kristoffer Bergman for their help.

Reference code