24届就业学长纯干货总结:C++智能驾驶学习路线、学习资源分享

前言:大家好,我是今年24届的学长,现已拿到智驾感知算法工程师的offer,年薪大约40w,个人还是比较满意这份工作的。大家分享一些我在C++智驾学习过程中的资源和总结。,希望我的经验能够为大家提供一些实用的参考和启发,让正在学习智驾或者准备面试的同学少走弯路。

下面为大家推荐一些我在C++智驾学习中用过的非常好的学习入门资料,还有学长自己总结的一些学习路径和资料。

C++智能驾驶零基础到就业学习路径 

C++基础——基本语法/数据结构/小项目 

C++进阶学习——标准库/现代C++/算法规范/调试/编译 

Linux操作系统、网络通信、数据库等学习 

自动驾驶工具链Git/CMake/GDB/Python学习 

自动驾驶技术栈ROS/Apollo/路径规划算法学习 

智能驾驶进阶——深度学习/计算机视觉等学习 

就业项目准备——7个项目推荐 

➢实战项目-魔改ros-兼容 ProtoBuf和rosmsg(进阶简历项目) 

➢自动驾驶模拟器 

➢目标检测和跟踪 

➢路径规划和控制 

➢自动驾驶/机器人系统开发 

学长一对一辅导,腾讯会议教学 

C++基础——基本语法/数据结构/小项目

1、C++初上手入门:

非常不推荐大家一上来就开始读《C++ Primer》、《C++编程思想》等大部头著作,其包含的内容非常详细,上千页的长度很容易让新手产生畏惧感,容易让人想放弃

建议不是从这些出名的著作开始读起,反而是应该找入门级别的小册子、网站:

2、需要学习的基础内容

参考学习网址: 黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili

  • C++新特性——新基础类型;内联/套嵌命名;auto 占位符;decltype 说明符;

函数返回类型后置;右值引用;C++成员指针;lamba 表达式;

非静态数据成员函数默认初始化;列表初始化;

参考学习网址:你应该立即掌握的10个现代C++新特性_哔哩哔哩_bilibili

  • C++数据结构——线性表、动态数组、单项链表、企业链表、循环链表

栈的顺序存储、队列的顺序存储、树、二叉树

冒泡、选择、插入、希尔排序、快速排序、堆排序

参考学习网址:黑马程序员2017C++数据结构(C语言实现)(已完结)_哔哩哔哩_bilibili

windows计算器开发 参考学习网址:【C/C++】用Qt开发一款自己的计算器!70分钟手把手教你搞定windows计算器,学会之后QT项目经验又长进了呢_哔哩哔哩_bilibili

3、手册

C++进阶学习——标准库/现代C++/算法规范/调试/编译

基础语言版本

  • 经典C++——C++98推荐书籍:《C++ Primer 第四版》《Effective C++》

网站:http://www.cplusplus.com

  • 现代C++——C++11/17/14/20(主流是14左右的版本) 推荐书籍:《C++ Primer 第五版》《Effective Modern C++》

网站:https://en.cppreference.com/w/

基础库

开发环境

clang 网站:https://clang.llvm.org

  • Buid工具——MAKE 网站:GNU make

BAZEL 网站:https://bazel.build/

网站:GitHub - gperftools/gperftools: Main gperftools repository

  • 测试——CTEST 推荐书籍:《软件测试的艺术》

网站:GitHub - google/googletest: GoogleTest - Google Testing and Mocking Framework

命令行解析gnags 网站:http://ghags.github.io/gflags/

CITEE 网站:https://gitee.com

编程规范

网站:https://www,perforce.com/resources/qac/misra-c-cpp#cpp-rules

数据结构和基础算法

设计模式

《HeadFirst 设计模式》

建模语言

  • UML——《大象--Thinking in UML》
  • SysML(系统建模)——《SySML精粹》

Linux操作系统、网络通信、数据库等学习

  • Linux基本知识——Linux 操作系统基础;Linux 应用开发基础知识;嵌入式 Linux 开发环境搭建

操作系统原理基础——参考学习网址:Linux操作系统原理与应用_哔哩哔哩_bilibili

计算机基础——参考学习网址:王道计算机考研 操作系统_哔哩哔哩_bilibili

推荐书籍:《鸟哥的Linux私房菜 基础学习篇 第四版》

  • Linux应用开发

Linux 网络编程——TCP/IP 协议;Socket 的使用;tcp、udp;C/S 架构

推荐书籍:《TCP/IP网络编程》

参考学习网址:黑马程序员-Linux网络编程_哔哩哔哩_bilibili

Linux系统编程——进程与线程;常用函数等 api;进程创建、回收;常用进程相关命令;信 号量、消息队列、共享内存、管道、信号;守护进程;线程创建、同步互斥、互斥锁;动态库和静态库

推荐书籍:《Linux系统编程(第2版)(影印版)》

参考学习网址:黑马程序员-Linux系统编程_哔哩哔哩_bilibili

  • C++高级应用开发基础——进程控制 fork、exec 函数族、进程回收;进程间通信 pipe、fifo、mmap;信号集操作函数、信号捕捉、守护进程;线程基本操作、线程回收、线程分离;线程同步,互斥量、读写锁、信号量;

linux基础知识和数据库的搭建_哔哩哔哩_bilibili《linux基础知识和数据库的搭建》

《Linux下Mysql数据库入门及精通》Linux下Mysql数据库入门及精通_哔哩哔哩_bilibili

自动驾驶工具链Git/CMake/GDB/Python学习

自动驾驶技术栈ROS/Apollo/路径规划算法学习

实际工作大多离不开ROS。古月居的ROS教程是最经典的,推荐。【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程_哔哩哔哩_bilibili

  • ROS1基本知识学习​——Nodes、Topics、Services、Parameter Server、Messages

网站:https://www.ros.org

参考学习网址:01.001_CyberRT简介_哔哩哔哩_bilibili

  • 路径规划/控制算法——常用路径规划算法:A*、D*、dijkstra、RRT、RRT*;EM planner

算法思想:多车道策略、路径快速迭代、EM 算法、决策与交通规则;

控制算法:增量式 PID、位置式 PID、LQR、MPC 等、轨迹预测等

规划决策控制面试知识点整理;规划控制决策算法原理、流程、应用场景;

参考学习网址:路径规划与轨迹跟踪系列算法学习_第1讲_Dijkstra算法_哔哩哔哩_bilibili

智能驾驶进阶——深度学习/计算机视觉等学习

数学运算库

Eigen 网站:https://eigen.tuxfamily.org

视觉库

OpenCv 网站:https://opencv.org

点云库

PCL 网站:https://pointclouds.org

开源库

深度学习框架

仿真环境

基础知识

  • 概率论——《程序员的数学-概率统计》
  • 线性代数——《程序员的数学-线性代数》
  • 数值优化——《数值优化方法》
  • AI原理——《人工智能数学基础》
  • 空间几何——坐标转换等基础知识

芯片

操作系统

QNX 网站http://www.qnx.com

就业项目准备——7个项目推荐

准备智能驾驶C++方向工作前,如果想让自己的简历更加丰富一些,可以考虑做以下项目准备:

  • 实战项目-魔改ros-兼容 ProtoBuf和rosmsg(进阶简历项目)

项目简介:ros-ProtoBuf-bridge 是一个基于 ROS 和 ProtoBuf 的桥接项目,旨在实现

ROS 消息和 ProtoBuf 消息之间的兼容和互操作性。

  • 技术栈:C++模板、元编程技术、ProtoBuf、CMake,ROS、Docker\Linux、Shell
  • 通过 ros-potobuf 项目,去自主的学习 ros 源码,不是无用的学习源码,把源码魔

改;

  • 算法和车端,开发的同学都适用这个项目,该项目兼容 rosmsg 和 proto,即插即用,

可以结合大家自己的 ros 项目,并且可以混用 rosmsg 和 proto 这两种数据序列化协议

ProtoBuf,低时延,易于兼容,可扩展,并且百度 apollo 和目前主流的自动驾驶厂家

  • 都是使用 proto,可见其序列化协议的优势

主要特点:

  • 构建环境自动化: 使用 Docker 构建整个项目环境,通过 Dockerfile 安装 ROS-Noetic 组

件、ProtoBuf、CMake 等依赖项,同时使用 Shell 脚本编写第三方库源码安装和容器

操作脚本,以实现项目构建流程的自动化和部要的便利性。

  • 兼容性和可扩展性:基于 C++模板编程中的 SFINAE 机制,修改了 ROS 的核心库

roscpp_serialization 和 roscpp_traits 的底层代码。这样,ros-ProtoBuf-bridge 可以同时

兼容 ROS 原生 msg 和 ProtoBuf 消息。

  • 项目管理和构建:使用 CMake 作为项目的构建系统,编写 proto 测试文件生成相应

的静态库,供 ROS 自定义功能模块调用。简化了项目的管理和构建过程,并提供灵

活的扩展机制,便于后续添加复杂数据类型。

  • 插件化设计 ROS-ProtoBuf-bridge 可以作为一个插件嵌入到各种复杂的 ROS 功能项目

中。通过将该项目中的 CMake 指令集成到目标项目中,可以轻松地实现基于 proto

数据的发布和订阅,

参考学习网站:自动驾驶机器人C++软件开发项目:魔改ros-兼容protobuf和rosmsg ,docker,cmake,c++元模板,项目简历,项目演示_哔哩哔哩_bilibili

  • 自动驾驶模拟器

一个自动驾驶模拟器是开发人员用来模拟和测试自动驾驶算法和系统的重要工具。它可以模拟车辆的行驶和周围环境,以及处理来自各种传感器的数据。开发一个简单的自动驾驶模拟器,模拟车辆的运行、障碍物检测和避让等场景。这可以展示你对控制算法、传感器模拟和环境感知的理解。通过开发和使用自动驾驶模拟器,工程师可以在真实道路测试之前,有效地验证和优化自动驾驶系统的各个方面,从而提高其可靠性和安全性。

链接:以特斯拉为案例:自动驾驶仿真框架分析(上,数据搭建/场景建模)_哔哩哔哩_bilibili

链接:自动驾驶落地离不开的C++!快来实现第一个自动驾驶模块吧_哔哩哔哩_bilibili

链接:

介绍一款非常好用的自动驾驶模拟器--Carla_哔哩哔哩_bilibili

  • 目标检测和跟踪

目标检测和跟踪在自动驾驶中至关重要,确保车辆能够识别和跟踪道路上的各种物体(如行人、车辆、障碍物等),从而做出安全的驾驶决策。通过配置,可以构建一个高效的目标检测和跟踪系统,为自动驾驶车辆提供可靠的环境感知能力。以下是一些项目的视频:

链接:

实时车辆行人多目标检测跟踪系统介绍与环境配置_哔哩哔哩_bilibili

链接:YOLO目标检测是怎么实现的?YOLO行人检测和车辆检测项目讲解,附课件源码!计算机视觉项目_哔哩哔哩_bilibili

链接:

深度学习7:自动驾驶 — 目标检测(yolo模型)_哔哩哔哩_bilibili

  • 路径规划和控制

开发一个路径规划和控制系统,使车辆能够在规定的环境中导航,考虑到障碍物和动态环境的变化。路径规划和控制在智能驾驶系统中是确保车辆安全、高效地导航至目标的关键组成部分。路径规划和控制系统可以有效地支持自动驾驶车辆在复杂的交通和道路环境中安全、高效地行驶。

链接:

自动驾驶路径规划-控制决策入门学习_哔哩哔哩_bilibili

链接:规控学习小组分享:自动驾驶常见规控算法分享-路径规划_哔哩哔哩_bilibili

链接:路径规划与轨迹跟踪系列算法学习_第1讲_Dijkstra算法_哔哩哔哩_bilibili

通过以上这些项目准备,包括其他的一些项目,例如:传感器融合、仿真环境集成、代码优化和性能调优、实时系统开发经验等,你可以展示你在自动驾驶领域的技术能力和理解,以及你在C++开发和算法实现方面的实际经验。

  • 自动驾驶/机器人系统开发

对开源项目和框架的二次开发是另外常见的开发工作内容。

自动驾驶机器人项目C++软件开发项目:魔改ros-兼容protobuf和rosmsg
Autoware:自动驾驶开源软件项目

Autoware 是一个用于自动驾驶车辆的开源软件栈,建立在机器人操作系统 (ROS) 之上。 它包括驾驶自动驾驶汽车的所有必要功能,从定位和物体检测到路线规划和控制,旨在让尽可能多的个人和组织为自动驾驶技术的开放式创新做出贡献。

Autoware——世界领先的自动驾驶开源软件项目

GitHub:https://github.com/autowarefoundation/autoware

Autoware官网:https://www.autoware.org/

学长一对一辅导,腾讯会议教学

领绿教育“录播课的价格,企业导师一对一辅导,腾讯会议教学”,想获取整份文档或者咨询课程欢迎添加微信:linglv06(添加微信即可领取学习大纲一份)

教学优势:

1、根据个人情况和目标制定专属学习计划

  1. 每周制定学习计划,老师监督学习
  2. 辅导后老师反馈学习效果,不断改进教学优势
  3. 辅导老师为大厂工程师,了解企业需求
  4. 学习内容更有简历优化、面试辅导等就业服务,为学员就业保驾护航
  5. 报名后可签合同,同时第三平台下单,可分次付款,保障学员权益