/meta-project-self_driving_cars_resources

This project for self-driving cars learning

Primary LanguageHTMLMIT LicenseMIT

The Era of Autonomous Driving (自动驾驶时代)

  • This repository is using mainly for self-driving cars learning.
  • 本项目主要用于自我学习和研究自动驾驶技术,通过收集和整理各种学习资源和内容,方便查阅, 不用于商业用途。其中部分资源来源相关的个人,也会注明出处。

The Roadmap of Becoming a Self-Driving Cars Engineer

自动驾驶工程师学习路线

自动驾驶 The image[1] shows the roadmap of becoming a self-driving cars engineer.

Table of Content(资源目录)

The Required Technical Skills

自动驾驶工程师技能栈:

  • 自动驾驶感知算法工程师
  • 自动驾驶激光雷达算法工程师
  • 自动驾驶感知融合算法工程师
  • 自动驾驶毫米波算法工程师
  • 自动驾驶规划决策算法工程师
  • 自动驾驶融合定位算法工程师

计算机基础

  • 数据结构与算法
  • 计算机组成原理
  • 操作系统原理
  • 计算机网络
  • 通信原理
  • 信息论
  • 控制理论

数学基础设计

  • 高等数学
  • 概率论,贝叶斯思维
  • 线性代数
  • 离散数学
  • 矩阵论等
  • 科学计算:优化理论,数值优化,非线性优化,凸优化问题

编程开发

  • C/C++:C++基础,C++面向对象编程,内存管理,性能优化,多线程/并发
  • C++的Bazel、Cmake、Protobuf等编译工具
  • Python编程
  • AI -> Deep Learning, Python, Pytorch, Tensorflow
  • ROS,
  • Python库:Pandas, Numpy, Matplotlib等常见库
  • OPenCV, PCL, Open3D, G2O, Gtsam, Eigen, Sofus
  • Matlab & Simulink
  • JavaScript(Node.js, React)
  • 操作系统:QNX,Linux, Shell, Vim
  • 高性能编程,
  • CUDA编程, JETSON AGX Orin GPU computing

开发工具

  • VsCode, Pycharm, Clion,
  • CPU
  • GPU(CUDA)
  • FPGA
  • Simulation: Matlab/Simulink, GameEngine(UE4)
  • 云计算平台:HD map, OpenDrive, Data Platform(虚拟化, 异构计算,分布式计算,分布式存储),Security, OTA, DuerOS
  • ROS, Cyber RT
  • Rviz(数据可视化), Gazebo(物理仿真模型)
  • Docker, K8s

优化库

  • 各种库的安装
  • ceres-solver 线性优化,常用优化算法
  • g2o 图优化
  • gtsam
  • eigen 矩阵操作
    • 旋转矩阵 Eigen::Matirix3d
    • 旋转向量 Eigen::AngleAxisd
    • 欧拉角 Eigen::Vector3d
    • 四元数 Eigen::Quaterniond
    • 欧式变换矩阵 Eigen::Isometry3d
    • 仿射变换 Eigen::Affine3d
    • 射影变幻 Eigen::Projective3d
  • Sophus,李群, 李代数
  • OpenCV 对图像的处理和操作
  • PCL 对点云的处理库

车辆工程

  • 电子电气
  • 运动模型
  • 动力模型

车辆系统

  • Drive-by-wire Vehicle
  • 车辆电子控制系统(Protocol(Can, Lin, FlexRay)), 动力系统控制,制动系统控制,转向系统控制
  • 车载语音交互系统
  • 组件架构设计:AUTOSAR
  • 车辆底盘, 1转向系统, 油门控制, 2制动系统, 3动力系统, 4控制系统
  • 电子电气架构(环境感知, 定位导航, 通信系统,计算平台,供电系统)
  • 线控油门,线控转向,线控制动

人工智能

  • 机器学习:经典机器学习
  • 深度学习:DNN, CNN, 迁移学习,RNN, NLP, 文本挖掘
  • 强化学习:Reinforcement Learning
  • 图神经网络,图优化
  • 深度框架:Pytorch, Tensorflow, Caffe, Keras, PaddlePaddle
  • 计算机视觉: 传统计算机视觉知识
  • 图形学:Low-Level Vision, 图形学与视觉几何
  • 模型部署:CUDA, TensorRT

芯片技术

  • CPU,GPU

基础架构

  • 自动驾驶基础架构
  • 感知层,决策层(车联网,高精地图),执行层
  • 云计算
  • 车联网
  • 地图
  • 系统安全(硬件稳定性,系统稳定性,人机切换)
  • 处理芯片(处理能力,实时性,成本)
  • 人工智能(大数据,深度学习,图像处理)
  • 感知系统(激光雷达,毫米波雷达,摄像头)

硬件知识

  • Computing Unit(IPC,Intel, Nvidia, 专用自动驾驶计算单元(PX2 TX2...))
  • 感知传感器:Camera(单目/双目,多目), Lidar, Radar, Ultrasonic Radar
  • 定位:GPS, GNSS, IMU, INS,Other Perception Sensors
  • 摄像机, 惯性导航仪,GPS卫星定位系统
  • 网络差分
  • CAN card
  • HMI Device
  • V2X Device(V2Vehicle, V2Infrastructure, V2Pedestrian, V2Road, V2Network, V2Cloud)
  • 车联网
  • 智能网联
  • 智慧交通
  • 智慧城市
  • 道路协同
  • Safety, Black Box
  • 传感器知识和技能:搭建方式,配置流程,数据形式,能够通过数据判断传感器是否正常工作
  • 无人车知识和技能:
    • 基本的硬件组成
    • 各Sensors流程
    • 通讯信息接口
    • 个人传感器优点,能力与局限
    • 知道本模块对于硬件的需求
    • 算法对于硬件的依赖,瓶颈
    • 硬件的基本参数性能,调参方法
    • 熟悉上车开发调试环境

传感器标定

  • 内参外参标定
  • 摄像头标定
  • 激光雷达标定
  • 联合标定

环境感知

  • 传感器融合
  • 激光 & 视觉
  • 2D&3D 目标检测
  • 2D&3D 语义分割
  • 2D&3D 场景分割
  • 状态估计与滤波(KF, EKF,IEKF,UKF, PF)

定位建图

  • 车辆定位
  • 路径规划
  • 视觉SLAM
  • 激光SLAM
  • Smoothing Curves
  • Vehicle Kinematics
  • Station-time 2D Model
  • Optimization Algorithms: Dynamic Programming
  • Quadratic Programming
  • Smoothing Spline
  • *A
  • Probability Math Models: Bayesian
  • Markov Process
  • MDP
  • Basic Motion Planning Technique
  • Sampling Based Motion Planning
  • Computer Science: Parallel Programming
  • Dynamic Programming
  • Computation Geometry

决策规划

  • 强化学习
  • A*算法

运动控制

  • Basic Control Theory
  • Linear-Quadratic Regulator(LQR)
  • Model Predictive Control(MPC)
  • PID Basic Control Theory

智能网联

  • 车路协同
  • V2X

仿真测试

  • 仿真器
  • 道路测试
  • 城市测试

应用场景

  • 矿区
  • 园区
  • 公园
  • 固定道路
  • RoboTaxi, RoboBus, RoboTruck
  • 末端物流配送
  • 室内清扫机器人,室内搬运机器人,室外作业机器人

自动驾驶算法与芯片设计

  • 3D物体检测
  • 车道检测,交通灯检测
  • 运动规划与控制
  • 定位与建图
  • 自动驾驶仿真器
  • 自动驾驶芯片
  • 深度学习模型优化
  • 自动驾驶Soc设计
  • 自动驾驶操作系统
  • 自动驾驶软件架构
  • 5G C-V2X 车联网

具体技术

1. 激光SLAM
  • LOAM,Categrahper-3D, A-LOAM,V-LOAM, LeGo-LOAM, LIO-SAM, LVI-SAM, LINS
  • IMU内参,零偏;IMU外参,相对于车体坐标系的位置,位姿态等
  • 激光内参,外参标定
  • IMU和激光的联合标定,平移和旋转参数
  • 室内2D激光SLAM
    • hector_slam
    • karto_slam
    • gmapping
    • cartographer2D
  • 室外3D激光SLAM
    • LOAM,Categrahper-3D, A-LOAM,V-LOAM, LeGo-LOAM, LIO-SAM, LVI-SAM, LINS
    • fast-LIO 紧耦合

Companies (自动驾驶公司)

国外公司

  • Waymo, Tesla, Zoox, Voyage, Cruise, Intel-Mobieye, Aptiv-Hyundai
  • Yandex, Bosch, May MObility, Ford Auto, Toytota, Voyage Auto, BMW, Volvo

**公司

  • 百度,理想,蔚来汽车,小鹏,小马智行,吉利汽车,长安汽车,上汽集团。

L4 自动驾驶公司盘点

Websites (学习网站)

The School of Autonomous Systems

The field of autonomous vehicles is set to grow by 42% within the next four years, with salaries for top engineers averaging between $300-$500k. Advance your career in this rewarding field by studying 15 hours/week. 课程 Courses

  • 自动驾驶入门 Introduction to Self-Driving Cars
  • 机器人软件工程师 Robotics Software Engineer
  • 无人飞行车工程师 Flying Car and Autonomous Flight Engineer
  • 自动驾驶工程师 Self-Driving Car Engineer
  • 感知融合工程师 Sensor Fusion Engineer
  • 数字的自由职业者 Digital Freelancer
  • C++编程
  • 数据结构与算法 Data Structures and Algorithms
  • 计算机视觉 Computer Vision
  • AI编程(Python)AI Programming with Python
  • 机器学习入门(PyTorch)Intro to Machine Learning with PyTorch
  • 机器学习入门(TensorFlow)Intro to Machine Learning with TensorFlow
  • 深度强化学习 Deep Reinforcement Learning
  • 人工智能 Artificial Intelligence
  • 深度学习 Deep Learning

Self-Driving Cars Specialization Offered by University of TORONTO

Launch Your Career in Self-Driving Cars. Be at the forefront of the autonomous driving industry.

课程 Courses

  • 自动驾驶入门 Introduction to Self-Driving Cars
  • 自动驾驶状态估计和定位 State Estimation and Localization for Self-Driving Cars
  • 自动驾驶视觉感知 Visual Perception for Self-Driving Cars
  • 自动驾驶运动规划 Motion Planning for Self-Driving Cars
  • 深度学习专项认证 Deep Learning Specialization
  • 机器学习 Machine Learning

这是一门面向初学者的无人驾驶车辆慕课,由北京理工大学智能车辆团队倾情打造。理论联系实际,用丰富的案例进行讲解。课程也许不会告诉你无人驾驶全部的“秘密”,但从这门课学到的知识,可以帮助你去探寻无人驾驶的“秘密”。 来吧,这里有你想要的 ^_^

课程 Courses

当下学术界和企业界应用最广泛的机器人操作系统。 基于摄像头或激光雷达的机器人定位与建图技术,解决“我在哪,我周围是什么”两个问题。 移动机器人导航的核心技术,无人车/无人机等企业的重要技术支撑。 以多种传感器的数据作为输入,经过计算及处理,对机器人的周围环境精确感知的系统。 旋翼无人机被广泛应用于救灾、土地测量、旅游等,自主旋翼无人机作为一项复杂的工程,涉及到感知定位、规划控制等多项核心技术。

  • 基础课程
    • 线性代数几何意义
    • 机器学习数学基础
  • 算法与数据结构
  • 编程与开发
    • C++基础与深度解析
  • 机器学习
    • 深度学习理论与实践(视觉方向)
    • 机器学习数学基础
    • 图深度学习:理论与实践(全新版)
    • CUDA入门与深度神经网络加速
  • 计算机视觉
    • 深度学习理论与实践(视觉方向)
    • 数字图像处理
    • 计算机视觉应用基础
    • 基于深度学习的物体检测
    • 基于深度学习的人脸识别
  • 三维视觉
    • 数字图像处理
    • 三维点云处理
    • 基于图像的三维重建
  • 系统与架构
    • ROS理论与实践
  • 定位与建图
    • SLAM技术入门,进阶与发展趋势
    • ROS理论与实践
    • 视觉SLAM理论与实践
    • 激光SLAM理论与实践
    • 视觉SLAM基础与VIO进阶
    • 语义SLAM概述
    • VINS-Mono 代码解析
    • 机器人学中的状态估计
    • 视觉SLAM/VIO开源代码解析
    • 视觉SLAM进阶:从零开始手写VIO
    • 多传感器融合定位
  • 运动规划
    • ROS理论与实践
    • 自动驾驶控制与规划
    • 移动机器人运动规划
  • 环境感知
    • 深度学习理论与实践(视觉方向)
    • 计算机视觉应用基础
    • 自动驾驶环境感知
    • 基于深度学习的物体检测
    • 三维点云处理
    • 多传感器融合感知
  • 工业机器人
    • 工业机器人控制
    • ROS机械臂开发:从入门到实战
  • 旋翼无人机
    • 自主旋翼无人机导论
    • 从0制作自主空中机器人
    • 智能无人机:从硬件到技术实战

5, 其他平台

Blogs, News,Platforms and Articles (博客公号)

Technical Skills (技术学习)

Books(书籍)

自动驾驶入门

  • 《自动驾驶技术系列丛书》
  • 《第一本无人驾驶书》

自动驾驶必备技术

  • 《ROS技术理论与实践》
  • 《C++ Prime Plus》
  • 《C Prime Plus》
  • 《cmake实践》
  • 《Effective C++》
  • 《More Effective C++》

SLAM 系列

  • 《视觉SLAM十四讲》
  • 《概率机器人》
  • 《计算机视觉中的多视图几何》
  • 《机器人学中的状态估计》

深度学习

  • 《Deep Learning》

Papers(学术论文)

Reports(行业报告)

Notes 学习笔记

  • 无人驾驶入门
  • 从零开始一起学习SLAM

Courses and Videos, 课程和视频

Projects and Codes 实践项目

Jobs 工作机会

Questions and Challenges 行业问题&挑战

  • 如何在基于视觉下的交通灯的识别问题,如何判断哪一个红绿灯才是需要作出决策的?
  • 如何实现在行驶过程中识别静止车辆突然开门?
  • 如何识别大型的拖车(因为形状前小后大)?
  • 如何识别公交车(因为中间是个链接体,材质不同导致雷达识别两个同的物体。)
  • IMU定位设备的标定问题

Future 前沿技术

设备厂商

  • 激光雷达 Lidar
    • 国产,Robosense
    • 国外, Velodyne

技术问题

  • 传感器授时,使用GPS
  • 多传感器融合定位和建图,紧耦合还是松耦合? 紧耦合效果会好,紧耦合可能计算量会大一些,所以看应用场景。
  • Lidar 与IMU 外参标定,在线标定
  • evo 轨迹对比, gps 对比 如果是整形解的rtk,可以作为真值。 ground truth
  • 相机,Lidar, GNSS(GPS+RTK), IMU, 轮速历程计Odometry
  • 多传感器融合,以视觉为主还是激光雷达为主

    视觉slam方向:常见的方式是一个视觉特征点前端(当然还有基于直接法的前端,如DSO),通过光流 或者描述子建立不同帧特征点之间的关联,后端根据前端特征关联的结果和其他传感器数据进行融合, 根据融合的方式分为基于优化的后端(ORBSLAM2、3, VINS-MONO,VINS-FUSION)以及基于滤波的 后端(MSCKF),视觉通常会提供一个重投影误差作为约束或者更新量 激光slam方向:目前性能最好使用最广的激光slam方案是基于LOAM的系列方案,LOAM主要是为多线 激光雷达设计的lidar定位和建图的方案,当然,由于现在其他一些lidar硬件的推出,一些LOAM的改进 版本也是适当推出,如(Livox LOAM)。 基于LOAM方案通常前端是对当前帧激光雷达提取特征(通常是面特征和线特征),通常后端结合其他 传感器信息给当前帧到地图中的匹配提供一个良好的初值(激光slam中最重要的事情就是给scan matching提供一个更准确的init guess)

  • 传感器融合方案介绍(LOAM, A-LOAM, LeGO-LOAM, LIO-SAM, LIVOX-LOAM)
  • 多传感器融合定位
  • 工控机,CANbus, CanNet, Cube
  • IMU预积分,IMU不能过长时间作位姿,IMU
  • 组合导航(Novatel, 诺瓦泰17-19W),国产组合导航(3-5W),IMU自己融合
  • 激光雷达,机械的有禾赛、速腾、镭神等,固态的大疆 livox 应用较广

2022技术趋势

2022技术趋势

References 参考文献

  • [1] Udacity https://www.udacity.com/
  • [2] Felix, 2018, So you want to be a self-driving car engineer?
  • [3] Adrian Rosebrock, 2016, Intersection over Union (IoU) for object detection