自动驾驶算法工程师日常
写了书书不够红 - 小红书 (xiaohongshu.com)
加班比较多,所以好久没更了
我目前工作的内容是对规划部分的代码进行编写调试,最终部署到实车上
1.代码的学习编写,每个公司都有自己的代码库,可以共同进行编写和维护,在校生可以主要学习下常见的git操作,linux操作,相应的代码自学的话,可以学学apollo代码,是非常棒的自动驾驶开源代码
2.相关case的问题排查,实车的数据采集后在相应仿真平台上进行回放,代码的数据回灌,仿真平台的代码验证。现在通讯ros并不常用,取代的是cyber这种,但基本原理相似,对于学ros1还是ros2哪个好的纠结,我觉得掌握了基本的原理就行,都是相通的。
3.代码实车部署,简单的说你需要将程序烧在硬件上,这样你的车就会按照你的代码跑了,实车跑的好才是真的好。
4组内论文的学习,主要涉及到了目前很火的pomdp,现在一切为了落地,所以代码的耗时减少也是非常重要的内容。
校招入职自动驾驶赛道半年总结
背景:本科机械设计,硕士移动机器人,毕设MDP决策规划
2022年,在疫情最后一年,大环境最差的一年,我进入了一家头部大厂,具体做的是L2+的自动驾驶,负责决策规划算法的开发。当时互联网传出各种裁员的同时,我所在的部门还在以每个季度20-30个人的速度在招人,每个季度都能在部门会上见到新的面孔。记得我入职的第一天,组长就对我说,咱们这个行业,目前主要的优点就是不裁人,缺点就巴拉巴拉。
由于进的是业务部门,算法的开发主要目的就是落地量产,压力还是比较大,刚刚进部门人手不足,校招生直接当社招用,上来就被分配了一个规划算法开发落地。在导师的带领下,推翻原来极其稳定的算法,引入更高效的算法。整个过程基本上就是在赶着节点开发,我甚至觉得在安排算法部署周期的时候,领导会故意提前Deadline,然后push手底下的人朝着这个目标前进,这半年来似乎开发方案都是这么排期的,一开始我很是焦虑,总是觉得工作不及预期,担心得不到认可,但导师却一直气定神闲(虽然也忙成狗),慢慢我就发现这个规律,也就逐渐成长为“合格”的职场新人了。
ps:优秀的开源代码
自动驾驶:
- Apollo
- OMPL
- Cartographer
其他:
- Eigen
- Ceres
代码方面,我所负责的方向是做算法的实际落地,虽然整个框架已经做了很多业务和代码层面的隔离,但代码还是不可避免有很多业务相关的影子,写了半年“业务代码”,感觉代码能力并没有很大的提升。于是主动向组内大佬提问,如何提高代码能力:大佬答:照抄优秀的代码。完。于是找了相关方向的一下优秀的开源代码开始实践,感觉确实有所长进。
大厂的分工比较细致,有专门的人员去研究竞争分析对手的产品,以保持足够的竞争力,因此我们的开发基本上就是要以超越竞争对手为目标。因此一部分时间要去看论文,落地更高效的算法,另一方面就是要去提高泛化能力,在所有维度上超越友商的产品。暗暗较劲。
除了技术上的进展,也在大佬身上学到了很多工作方法论。
- 力保每天最重要的三件事完成,剩下的做不完就放掉。不论是PM给你紧急任务还是后面多少bug没有看完。每天测试有数不清的bug,还有各种需求,业务的,上下游的,如果没有最重要的三件事,每天就是在随机飘,什么成果都没拿不出来。
- 以成果为导向汇报。不论是周会,季度会,年终总结,甚至是晋升答辩,不用提你做了多少工作量,而是以成果为导向去汇报。领导知道每个人都做了很多工作量,但是领导最在乎,也是你体现个人价值的就是你做出了什么成果,你是提升了工程效率?还是提升算法稳定性?还是解决了哪些痛点,难点?这些往往也是晋升的关键。这一点需要第一点来支撑保证。
- 向上管理,并以高1-2级的思维来完成日常的任务。向上管理意味着及时update你的进度给领导,不论是你找不到工作的重点,还是你最近没有进步,都可以跟领导聊,甚至是向领导征求对你最近工作的反馈。因为领导平时也很忙,关注不到每个人的状态。当然遇到一个好的领导也很重要。以高1-2级的标准作为标的,你的成长就会加速,因为晋升就是判断你是否达到下一个级别的要求。当然这里不是鼓励去卷,而是在态度和业务上去严格要求。
作者:哎嗨人生
链接:https://zhuanlan.zhihu.com/p/676963004
如果是新的项目,恰好大家都不是很忙的时候,会进行比较正规的开发流程,如果项目很紧急,那就是直接口头共同,立马写代码了。一个完整的流程如下。
1.需求评审
需求是从上到下传达的,制定需求是产品经理的事情。这个直接决定了接下来公司产品的竞争力。作为开发人员,会参加评审会,确定哪些需求目前有能力开发。直白的说,就是产品经理给你安排活,你要确定接哪些活,不能接的活,要说服产品经理。当然了,很多需求都是大老板们定制的,作为打工人并没有太多议价权。
作为小白,就等着上级给把需求拆分以后,分配给自己就行。
2.方案设计和评审
需求确定了以后,具体需求分配到每个开发者手上,作为开发者,需要相应的出一份设计方案。这里主要是为了让大家一起评审一下,看下方案是否合理,避免方案不合理,导致开发半途而废。更重要的是,要让领导同意这个方案,这样最后方案实现了,即使效果没达到预期,那老板也不会过多责怪。
牛逼的方案设计,当然是按照方案写代码就可以了,但一般情况下,很难一次性把方案做好,都是边开发,边调整方案细节。
3.代码开发
在代码开发之前,需要根据方案确定开发周期。当然,对于那些工程师话语权比较弱的公司,就没啥好商量的了,即便是一个月的工作量,上边给排了3天,那也得三天就干完。
所以,为了避免项目延期,也避免自己压力太大,我习惯以最快的时间,先完成一个简单的版本,起码有个保底的代码可以用,然后再在这个基础上去优化。时间太紧就用保底代码,时间还有,就用优化后的代码。在工作中,你产出了一个可以运行且满足部分功能的烂代码,跟你写了很好但还差几天才能运行的代码,这是是两个完全不一样的后果。领导只在乎项目有没有延期。所以,这个思维一定要转变,先解决有无得问题,在去慢慢优化。
4.代码review
代码review就是把自己开发的代码,传到git上让同事帮忙把把关,看看有没有bug,写的符不符合规范。大家在网页上提提修改意见。不过大家忙的时候,这个流程基本就忽略了,谁也没时间给别人检查代码。
5.自测后提MR
代码开发完成后,要充分的自测,测出bug即使修改,自测越充分,等功能上线后压力就越小。
MR,即merge request,合并请求,在公司里,大家协同开发,自己开发的代码自测没问题后,就要合入一个包含其他人代码的分支。PR与MR是一个意思。
6.bug分析和修复
公司内部不断测试,对bug进行修复
7.功能上线
通过测试验收,功能上线啦
本文分享了自动驾驶算法工程师的日常工作,包括代码学习与编写、问题排查、实车部署,以及如何在实际项目中应用POMDP等技术。描述了从校招到大厂工作经历,强调了代码优化、团队协作和工作方法的重要性。
810

被折叠的 条评论
为什么被折叠?



