Awesome-Self-Driving icon indicating copy to clipboard operation
Awesome-Self-Driving copied to clipboard

an awesome list of self-driving algorithms, software, tools

The Awesome Self-Driving List Awesome

Contents

  • Contents
  • 1. Self-Driving Software
  • 2. Planning
  • 3. HD Map
    • 3.1. Lanelet2
    • 3.2. OSM
    • 3.3. OpenDrive
    • 3.4. Others
  • 4. Semantic
  • 5. Calibration
  • 6. Detection
  • 7. Control
  • 8. SLAM
    • 8.1. Lidar-based
    • 8.2. Camera-based
    • 8.3. Lidar-Camera-based
    • 8.4. Odometry
    • 8.5. Registration
    • 8.6. Optimization
    • 8.7. Loop Closing
    • 8.8. Other
  • 9. GPS, IMU
  • 10. Dataset
  • 11. Simulation
  • 12. Visualization
  • 13. Web
  • 14. Study
  • 15. Other Tool
  • 16. Other Awesome
  • 17. For Chinese

1. Self-Driving Software

  • apollo - An open autonomous driving platform.
  • Autoware.ai - Open-source software for self-driving vehicles.
  • AutowareArchitectureProposal.proj - This is the source code of the feasibility study for Autoware architecture proposal.
  • self-driving-ish_computer_vision_system - This project generates images you've probably seen in autonomous driving demo.
  • Aslan - Open source self-driving software for low speed environments.
  • AutoC2X-AW - AutoC2X is cooperative awareness driving software, extension for Autoware and OpenC2X.

2. Planning

  • gbplanner_ros - Graph-based Exploration Planner for Subterranean Environments.
  • omg-tools - Optimal Motion Generation-tools: motion planning made easy.
  • path_planner - Hybrid A* Path Planner for the KTH Research Concept Vehicle.
  • PathPlanning - Common used path planning algorithms with animations.
  • MotionPlanning - Motion planning algorithms commonly used on autonomous vehicles. (path planning + path tracking).
  • se2_navigation - Pure pursuit controller and Reeds-Shepp sampling based planner for navigation in SE(2) space.
  • mesh_navigation - The Mesh Navigation bundle provides software to perform efficient robot navigation on 2D-manifolds in 3D represented as triangular meshes.
  • path_optimizer - Real-time path planning for vehicles.
  • full_coverage_path_planner - Full coverage path planning provides a move_base_flex plugin that can plan a path that will fully cover a given area.
  • conformal_lattice_planner - conformal lattice planner C++ implementations for autonomous driving tasks. The software is build upon Carla and ROS.

3. HD Map

  • fmm - Fast map matching, an open source framework in C++.
  • Tier4 Tool - Vector Map Builder is a tool that helps to create a vector map from point cloud data.

3.1. Lanelet2

  • MapToolbox - Plugins to make Lanelet2/vector_map in Unity.
  • AssureMappingTools - Desktop based tool for viewing, editing and saving road network maps for autonomous vehicle platforms such as Autoware.
  • Lanelet2 - Map handling framework for automated driving.
  • lanelet_rviz_plugin_ros - Rviz Plugin for displaying a lanelet2 map.

3.2. OSM

  • JOSM - The Java OpenStreetMap Editor.
  • prettymaps - A small set of Python functions to draw pretty maps from OpenStreetMap data. Based on osmnx, matplotlib and shapely libraries.
  • GMapCatcher - An offline map viewer.

3.3. OpenDrive

3.4. Others

4. Semantic

  • lift-splat-shoot - Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D (ECCV 2020).
  • lidar-bonnetal - Semantic and Instance Segmentation of LiDAR point clouds for autonomous driving.
  • Kimera-Semantics - Real-Time 3D Semantic Reconstruction from 2D data.
  • semantic_suma - SuMa++: Efficient LiDAR-based Semantic SLAM (Chen et al IROS 2019).
  • mmsegmentation - OpenMMLab Semantic Segmentation Toolbox and Benchmark.

5. Calibration

  • multi_sensor_calibration - A calibration tool to calibrate a sensor setup consisting of lidars, radars and cameras.
  • camera_calibration - Accurate geometric camera calibration with generic camera models.
  • image_projection - Image_projection is a ROS package to create various projections from multiple calibrated cameras.
  • velo2cam_calibration - Automatic Extrinsic Calibration Method for LiDAR and Camera Sensor Setups. ROS Package.
  • lidar_camera_calibration - Light-weight camera LiDAR calibration package for ROS using OpenCV and PCL (PnP + LM optimization).
  • atom - Calibration tools for multi-sensor, multi-modal, robotic systems.
  • FastCertRelPose - Fast and robust certifiable relative pose estimation.
  • ACSC - Automatic Calibration for Non-repetitive Scanning Solid-State LiDAR and Camera Systems.
  • kalibr - The Kalibr visual-inertial calibration toolbox.
  • SensorCalibration - IMU-Lidar Extrinsic Calibration Package.
  • lidar_IMU_calib - Targetless Calibration of LiDAR-IMU System Based on Continuous-time Batch Estimation.
  • lidar_align - A simple method for finding the extrinsic calibration between a 3D lidar and a 6-dof pose sensor.
  • extrinsic_lidar_camera_calibration - This is a package for extrinsic calibration between a 3D LiDAR and a camera, described in paper: Improvements to Target-Based 3D LiDAR to Camera Calibration.
  • mrcal - MRCAL is a generic toolkit to solve calibration and SFM-like problems originating at NASA/JPL.

6. Detection

  • urban_road_filter - Real-time LIDAR-based Urban Road and Sidewalk detection for Autonomous Vehicles.
  • conditional-lane-detection - "CondLaneNet: a Top-to-down Lane Detection Framework Based on ConditionalConvolution".
  • LaneATT - Code for the paper entitled "Keep your Eyes on the Lane: Real-time Attention-guided Lane Detection" (CVPR 2021).
  • Pseudo-LiDAR - (CVPR 2019) Pseudo-LiDAR from Visual Depth Estimation: Bridging the Gap in 3D Object Detection for Autonomous Driving.
  • depth_clustering - Fast and robust clustering of point clouds generated with a Velodyne sensor.
  • AB3DMOT - Official Python Implementation for "3D Multi-Object Tracking: A Baseline and New Evaluation Metrics".
  • JRMOT_ROS - A Real-Time 3D Multi-Object Tracker.
  • bbox - Python library for 2D/3D bounding boxes.
  • CLOCs - CLOCs: Camera-LiDAR Object Candidates Fusion for 3D Object Detection
  • CenterFusion - CenterFusion: Center-based Radar and Camera Fusion for 3D Object Detection.
  • CenterPoint - Center-based 3D Object Detection and Tracking.
  • OpenPCDet - OpenPCDet Toolbox for LiDAR-based 3D Object Detection.
  • LaneDetection_End2End - End-to-end Lane Detection for Self-Driving Cars (ICCV 2019 Workshop).
  • VoxelNetRos - Implement the VoxelNet with ROS, using Kitti data to test.
  • PLARD - Progressive LiDAR Adaptation for Road Detection.
  • RoadMarkingExtraction - A C++ Program for automatically extraction of road markings from MLS or ALS point cloud [ISPRS-A' 19].

7. Control

  • MPCC - Model Predictive Contouring Controller (MPCC) for Autonomous Racing.
  • mpc_local_planner - It provides a generic and versatile model predictive control implementation with minimum-time and quadratic-form receding-horizon configurations.

8. SLAM

8.1. Lidar-based

  • LT-mapper - A Modular Framework for LiDAR-based Lifelong Mapping.
  • clins - CLINS: Continuous-Time Trajectory Estimation for LiDAR-Inertial System.
  • LIO-SAM - LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping.
  • LINS---LiDAR-inertial-SLAM - A Lidar-Inertial State Estimator for Robust and Efficient Navigation based on iterated error-state Kalman filter.
  • r2live - R2LIVE is a robust, real-time tightly-coupled multi-sensor fusion framework, which fuses the measurement from the LiDAR, inertial sensor, visual camera to achieve robust, accurate state estimation.
  • LaMa - A Localization and Mapping library. Low computational effort and low memory usage whenever possible.
  • LeGO-LOAM - Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain.
  • SSL_SLAM2 - Lightweight 3-D Localization and Mapping for Solid-State LiDAR (mapping and localization separated) ICRA 2021.
  • iscloam - Intensity Scan Context based full SLAM implementation for autonomous driving. ICRA 2020.
  • loam_livox - A robust LiDAR Odometry and Mapping (LOAM) package for Livox-LiDAR.
  • decentralized_loam - A decentralized framework for simultaneous calibration, localization and mapping with multiple LiDARs
  • SC-LIO-SAM - LiDAR-inertial SLAM: Scan Context + LIO-SAM.
  • MULLS - MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square.
  • lili-om - LiLi-OM is a tightly-coupled, keyframe-based LiDAR-inertial odometry and mapping system for both solid-state-LiDAR and conventional LiDARs.
  • PyICP-SLAM - Full-python LiDAR SLAM using ICP and Scan Context.
  • SC-LeGO-LOAM - LiDAR SLAM: Scan Context + LeGO-LOAM.
  • A-LOAM - Advanced implementation of LOAM.
  • floam - Fast LOAM: Fast and Optimized Lidar Odometry And Mapping for indoor/outdoor localization (Lidar SLAM).
  • hdl_graph_slam - 3D LIDAR-based Graph SLAM.
  • lio-mapping - Implementation of Tightly Coupled 3D Lidar Inertial Odometry and Mapping (LIO-mapping).
  • StaticMapping - Use LiDAR to map the static world.
  • M-LOAM - Robust Odometry and Mapping for Multi-LiDAR Systems with Online Extrinsic Calibration.
  • T-LOAM - T-LOAM: Truncated Least Squares Lidar-only Odometry and Mapping in Real-Time.

8.2. Camera-based

  • VINS-Fusion - An optimization-based multi-sensor state estimator
  • VINS-Mono - A Robust and Versatile Monocular Visual-Inertial State Estimator.
  • ov2slam - OV²SLAM is a Fully Online and Versatile Visual SLAM for Real-Time Applications.
  • ORB_SLAM3 - ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM.

8.3. Lidar-Camera-based

  • r3live - A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation and mapping package.
  • LVI-SAM - LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry via Smoothing and Mapping.
  • CamVox - A low-cost SLAM system based on camera and Livox lidar.

8.4. Odometry

  • Faster-LIO - Faster-LIO: Lightweight Tightly Coupled Lidar-inertial Odometry using Parallel Sparse Incremental Voxels.
  • FAST_LIO - A computationally efficient and robust LiDAR-inertial odometry (LIO) package.
  • ESVO - This repository maintains the implementation of "Event-based Stereo Visual Odometry".
  • LOL - LOL: Lidar-only Odometry and Localization in 3D point cloud maps.

8.5. Registration

  • Quatro - Fast and robust global registration for terrestrial robots @ ICRA2022.
  • UnsupervisedR&R - Unsupervised Pointcloud Registration via Differentiable Rendering.
  • 3d-icp-cov - Code for the paper "A New Approach to 3D ICP Covariance Estimation for Mobile Robotics".
  • TEASER-plusplus - A fast and robust point cloud registration library.
  • FS3R - A Fast Symbolic 3D Registration Solution from HKUST RAM-LAB.

8.6. Optimization

  • voxgraph - Voxblox-based Pose graph optimization.
  • Kimera-RPGO - Robust Pose Graph Optimization.
  • MOLA - A Modular Optimization framework for Localization and mapping.

8.7. Loop Closing

  • scancontext - Global LiDAR descriptor for place recognition and long-term localization.
  • OverlapNet - OverlapNet - Loop Closing for 3D LiDAR-based SLAM (chen2020rss).

8.8. Other

  • evo - Python package for the evaluation of odometry and SLAM.
  • libRSF - A robust sensor fusion library for online localization.
  • interactive_slam - Interactive Map Correction for 3D Graph SLAM.
  • slam_docker_collection - A collection of docker environments for 3D SLAM packages.
  • removert - Remove then revert (IROS 2020).

9. GPS, IMU

  • imu_tools - ROS tools for IMU devices.
  • PPPLib - Precise Point Positioning Library.
  • RTKLIB - RTKLIB is an open source program package for standard and precise positioning. with GNSS (global navigation satellite system).
  • gnss-ins-sim - Open-source GNSS + inertial navigation, sensor fusion simulator. Motion trajectory generator, sensor models, and navigation.
  • rtklib_ros_bridge - Rtklib_ros_bridge is a package that outputs the latitude and longitude, satellite reception status, altitude, ecef xyz, ecef velocity vector, and Time of Week (GPS Time) calculated by RTKLIB as ROS messages.
  • ntpd_driver - This node convert ROS TimeReference message to ntpd-shm format.
  • eagleye - Precise localization based on GNSS and IMU.
  • GPS_IMU_Kalman_Filter - Fusing GPS, IMU and Encoder sensors for accurate state estimation.
  • imu_utils - A ROS package tool to analyze the IMU performance.

10. Dataset

  • Argoverse 2 dataset - Official GitHub repository for the Argoverse 2 family of datasets.
  • kapture - Kapture is a file format as well as a set of tools for manipulating datasets, and in particular Visual Localization and Structure from Motion data.
  • UrbanLoco - UrbanLoco: A Full Sensor Suite Dataset for Mapping and Localization in Urban Scenes.
  • UrbanNavDataset - UrbanNav: an Open-Sourcing Localization Data Collected in Asian Urban Canyons, Including Tokyo and Hong Kong.
  • mapping_dataset_styria - Open mapping dataset of styria in Austria.

11. Simulation

  • LGSVL - A ROS/ROS2 Multi-robot Simulator for Autonomous Vehicles.
  • carla - Open-source simulator for autonomous driving research.
  • autocore_sim - A ROS1/ROS2 Multi-robot Simulator for Autoware.
  • highway-env - A minimalist environment for decision-making in autonomous driving.

12. Visualization

  • rosshow - Visualize ROS topics inside a terminal with Unicode/ASCII art.
  • rosbag_fancy - Fancy terminal UI for rosbag.
  • zethus - Realtime robot data visualization in the browser.
  • webviz - Web-based visualization libraries.
  • Foxglove Studio - Foxglove Studio (foxglove.dev) is an integrated visualization and diagnosis tool for robotics.
  • rviz_satellite - Display internet satellite imagery in RViz.
  • mapviz - Modular ROS visualization tool for 2D data.
  • streetscape.gl - Visualization framework for autonomy and robotics data encoded in XVIZ.
  • rviz_visual_tools - C++ API wrapper for displaying shapes and meshes in Rviz.
  • PlotJuggler - The Time Series Visualization Tool that you deserve.

13. Web

  • rosboard - ROS node that turns your robot into a web server to visualize ROS topics.
  • webrtc_ros - Streaming of ROS Image Topics using WebRTC.
  • AutomanTools - AutomanTools is an open-source software for self-driving AI.
  • Rosbag-Analyser - Interactive Post-mortem/Live Analysis of ROS Bag Files.

14. Study

  • visual-slam-roadmap - Roadmap to becoming a Visual-SLAM developer in 2021.
  • RosHowTwo - A place to find and share ROS2 learning resources!
  • Eigen-Cheatsheet - A cheatsheet of Eigen, the C++ linear algebra library.
  • slambook2 - Edition 2 of the slambook.
  • CppRobotics - Cpp implementation of robotics algorithms including localization, mapping, SLAM, path planning and control.
  • self-driving-car - The Udacity open source self-driving car project.
  • Dig-into-Apollo - Apollo notes - Apollo learning notes for beginners.
  • Autoware_tutorial - Autoware Simple Tutorial for Self-driving Car.

15. Other Tool

  • MegBA - MegBA: A Distributed High-Performance Library for Large-Scale Bundle Adjustment with GPUs.
  • ikd-Tree - This repository provides implementation of an incremental k-d tree for robotic applications.
  • ros_msft_onnx - ONNX Runtime for the Robot Operating System (ROS), works on ROS1 and ROS2.
  • catkin_virtualenv - Bundle python requirements in a catkin package via virtualenv.
  • pal_statistics - The PAL Statistics Framework provides a way of gathering, aggregating, storing and visualizing statistics from arbitrary sources in a flexible and real-time safe way in ROS.
  • CARLA Autonomous Driving Leaderboard - The main goal of the CARLA Autonomous Driving Leaderboard is to evaluate the driving proficiency of autonomous agents in realistic traffic situations.
  • PUMA - Poisson Surface Reconstruction for LiDAR Odometry and Mapping.
  • RoboStack for ROS Noetic - RoboStack, which tightly couples ROS with Conda, a cross-platform, language-agnostic package manager.
  • modelzoo - A collection of machine-learned models for use in autonomous driving applications.
  • ROSIntegration - Unreal Engine Plugin to enable ROS Support.
  • jupyter-ros - Jupyter widget helpers for ROS, the Robot Operating System.
  • jupyterlab-ros - Helper extensions for running ROS from within JupyterLab.
  • rosbag_editor - Create a rosbag from a given one, using a simple GUI.
  • laser_line_extraction - A ROS package that extracts line segments from LaserScan messages.
  • python-pcl - Python bindings to the pointcloud library (pcl).
  • ros_deep_learning - Deep learning inference nodes for ROS with support for NVIDIA Jetson TX1/TX2/Xavier and TensorRT.
  • imgui_ros - View ros images, visualize in 2D and 3D, and interact with nodes through topics and services using ocornut/imgui.
  • ROS-Mobile-Android - Visualization and controlling application for Android.
  • PPTK - The Point Processing Toolkit (pptk) is a Python package for visualizing and processing 2-d/3-d point clouds.

16. Other Awesome

17. For Chinese