从小白到自动驾驶算法工程师的转型
1. 转型之路
读研究生期间偶然接触到无人物流车项目,从此开始自动驾驶研究之路。刚开始接触的是物流车底层控制这块需要自己编写驱动代码,幸好有些C语言基础便开始学习STM32嵌入式开发板,和实验室的大佬把底层驱动和相关控制模块写完之后,在师兄的建议之下入手ROS的学习。之前没学过linux系统,最先开始是安装ubuntu16.04安装出了很多问题,(一周才装好,你敢相信),又把linux的基本命令学,然后学脚本语言python,这是我第一次接触脚本语言,由于有C基础所以上手很快。然后开始学习ROS,发现要学C++(卧槽和C相差太多,各种语法搞死你),恶补C++语法,最后赶在研一学期末,学完一遍ROS官网的Tutorials,最后完成了底层驱动板和工控机的串口节点编写(不容易呀)。
研一下学期开始接触机器学习,师兄说需要打算法基础,好开始学吧!学习numpy,scipy和matplotlib,以及一个图像处理的库pillow,最后学习opencv-python。(这里要感谢ApacheCN组织提供了很多资源)期间接触了大佬吴恩达的深度学习课程,系统学习了CNN图像处理网络,期间恶补了《数字图像处理》基础的图像处理知识,我的方向差不多定了图像感知算法,期间参与了课题组几个项目都是用深度学习的方案解决的,锻炼了我的工程能力。最后开始从事师兄的语义分割网络学习,学习路线先学习tensorflow,再从基础的网络开始学习VGG16-19,FCN,UNET,ERFNET,最后接触Deeplab系列,最后还参加了Bosch的hackson获得了第二的成绩(感谢师兄和裕哥的帮助)
研二上学期开始完整的自动驾驶项目,阅读AUTOWARE(日本名古屋大学自动驾驶开源代码)和Apollo2.0的代码,之后就接触了视觉slam,高博出了一本好书《视觉slam14讲》,在开源组织泡泡机器人的帮助下入门视觉同时定位与建图,这一领域和高精度地图密不可分,我发现了之前学的C++和ros都在里面可以用到,然后开始拼命学习开源算法,ORBSALM,SVO,DSO等,然后接触VIO算法,期间又强化了C++的能力,学习了很多数学算法需要用到的C++库:Eigen;Ceres;G20;GTSAM等等。期间了解了激光slam的算法(发现激光比视觉简单好多),最后找的工作也和这个有关。
2. 求职之路
研二刚开学突然被通知要两年毕业(入学说的是三年),开始急急忙忙和学硕师兄一起找工作(真不敢相信!!!),然后前一个月没啥经验面试都不太好,算法岗位一上来就是C++数据结构和语法各一套题目,深度学习算法今年要求挺高的一开始面试都没成功,搞得我都想延期毕业了。(leetcode刷题很重要!)不过第二个月开始我就完善我的简历总结我之前做的自动驾驶工程项目经历和比赛经历,陆陆续续收到一些offer,包括:大疆和东风集团的合资公司–丰疆,嵌入式工程师;AutoBrian:视觉算法工程师;上汽集团的中海庭(中国拥有测绘资质的18家企业之一)的深度学习算法移植工程师;海康威视(全球安防第一)的汽车电子部门的算法移植工程师;小鹏汽车的算法移植工程师等等,最后去了Freetech的自动驾驶定位部。