2019年总结
Posted 杨铖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019年总结相关的知识,希望对你有一定的参考价值。
2019年总结就两个字,蓄力。
今天是1月18,还有一周就过年了,19年基本结束,20年即将开始,回顾19年立下的目标:
- 融合传感器的定位摸透,Apollo 定位/感知/规划 三大模块看透,OSRM,Valhalla的规划引擎也看透;
- 《SLAM十四讲》《state estimation for robotics》前者再看一遍,后者着重看,《Multiple View Geometry in Computer Vision》抽空大致了解,与前者查漏补缺。
- letcode 200题算法,把 c++ 搞上一个层次。
- 健身增肌到160斤,150后做有氧,体脂控制到15%~20%。
好像只有第二个目标没有达成,且细细道来。
这一年主要分为两个阶段:第一阶段是收尾,第二阶段是蓄力。
- 收尾阶段
不知不觉已经在地图行业耕种3年,地图里三个核心:定位,规划,导航 三个都基本接触过了。
其中年初4个月,一心扎到定位模块中,看了很多捷联惯导INS+GPS的书,以及很多关于传感器融合的论文和资料,同时经过了长达数月的路测和验证,终于在今年的5月份上线了地图导航定位的新一版引擎,主要是解决定位过程中常见的GPS信号弱,信号差,信号无问题,帮助提高整个导航的用户体验,当然,这个还有很大的优化空间,还只是个开始。下面是这个模块的一些实例:
后来关于规划这个模块(目前还在进行中),传统的 Astart 似乎在我们这边很多场景下遇到了瓶颈,加上数据源的一些问题,我们参考了OSRM里的MLD,用我们的用户足迹数据帮助提高整个规划的效果,尽量避免一些小路绕路,同时提供更多热门的路线给用户选择。
再到后面关于导航这个模块,前前后后其实耗费了不少时间,导航里最重要的就是语音播报,语音播报里最重要的就是路口转向,基于此我们尝试了使用规则+深度学习的方法,让一些复杂路口在语音播报的时候能更加准确,减少用户思考的时间。
以上是3个收尾的阶段的思考和总结。
- 蓄力阶段
随着对算法的深入参与,我发现想做好一个算法,除了查资料,读资料,复现资料外,还有另外一个重要点,就是工程化,服务化。
所谓的工程化,就是团队的人能协同参与到算法工程项目里,无论是代码规范,设计准则,还是模块拆解,版本控制,大家都能以一个比较高效的方式参与进来,这一切的前提就是做好前期规划和对需求的理解,这也是我这后面很长一段时间一直在努力和思考的。
1年前2年前,那个时候我们做算法更多的单兵作战,每个需求由某个人负责,后来我发现这种方式存在着一些弊端,比如项目一旦是比较大的情况下,对于个人的压力太大,又或者项目周期比较长,项目依赖于个人的情况会拖慢节奏,再或者项目比较复杂的情况下,他人难以参与。所以后面我修改了这种工作方式,当项目比较大和复杂的情况下,会先拆解需求,分模块,同时做好前期项目代码上的基本设计,中期发展关注每个队友提交的代码,做好review工作,后期部署做好unit test和服务监控。
然后是是服务化,在这家工作做算法基本上就是从硬件开始搞起了,包括前期服务器的硬件购买,组装,到后面开发,服务上线,现在手上负责的服务器有8台,差不多成为半个运维了。
那么什么是服务化,这个词大家应该都挺熟,微服务,讲究的就是微这个过程,项目模块解耦,系统基础架构保证了服务的独立部署、运行、升级,这个也是19年的一个重点,现在我们部署一个算法项目,如果不是内置app型的,基本都是:flask+gunicorn+docker+k8s
这样的一套部署,如果涉及到单机异步的,就再加上celery+rabbitmq
。其中flask
和gunicron
这些大家都很熟,主要是docker
和k8s
,docker提供一套隔离的基础环境,将算法服务单独打包,采用k8s
在多台机上部署监控,这样做的几个目的是利用k8s
的master做服务的统一入口,负责后面不同节点的负责均衡,同时监控各个docker
服务的稳定,在一定程度上保证算法服务的高效稳定可用。
以上边是蓄力阶段的一些总结和思考。
19年的几个目标,其实没有全部完成,第二点SLAM相关的,书是看了,没有应用场景,所以也不敢说自己懂,第三点letcode刷了,但是后面很多技巧性的题,感觉帮助不是很大,第三点体脂降了下去,但是能保持在比较高的体脂仍比较困难,目前也是在150浮动。
20年的几个目标:
- 做出一些改变,迈开思考了很久的步伐,完事后再补充上来。
以上是关于2019年总结的主要内容,如果未能解决你的问题,请参考以下文章