今日开讲为啥SLAM代码都用C不用

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货

为啥SLAM代码都用C++不用Python?

C++编程从入门到进阶,立减优惠↓,即将截止

年四月编程语言排行榜:

很多初学SLAM的小伙伴都有个疑问:号称宇宙第一语言的Python,简单好用,包又多,功能又强大,为啥SLAM算法里很少使用呢?

SLAM知识星球嘉宾刘国庆在知乎做了回答

这里再补充几点:

C++具有极高的性能和运行效率,很多语言都是在C/C++基础上封装的,比如Python。就这一点足以秒杀众多的高级语言。C++发展了三十多年一直是编程常青树,一直使用,一直在发展,C++岗位需求会越来越旺盛,只增不减。C++能够操控底层,非常适合和硬件打交道。C++的应用方向及招聘岗位?

C++应用方向非常广泛,包括但不限于

服务器后台、应用开发逆向开发、高性能优化游戏开发、虚拟引擎嵌入式开发软件驱动、网络协议音视频编解码图形图像处理推荐系统、量化交易系统

下面是从照片网站随意截取的C++招聘岗位

我们平台有大量从事SLAM和三维视觉方向的读者,在这些岗位的招聘要求中掌握C++也是必备技能。

很多小伙伴都是机械、自动化、通信等非计算机专业,也没有经历过系统的C++训练,而在具体的项目中,比如SLAM算法框架中,通常的代码并不是我们在书上看到的那样简单直白,你以为的是

#includeiostreamusingnamespacestd;intmain(){cout"HelloWorld!"endl;return0;}

实际可能结合了大量的嵌套类模板,C++11的新功能,可能是这样的

g2o::SparseOptimizeroptimizer;g2o::BlockSolver_6_3::LinearSolverType*linearSolver;linearSolver=newg2o::LinearSolverEigeng2o::BlockSolver_6_3::PoseMatrixType();g2o::BlockSolver_6_3*solver_ptr=newg2o::BlockSolver_6_3(linearSolver);g2o::OptimizationAlgorithmLevenberg*solver=newg2o::OptimizationAlgorithmLevenberg(solver_ptr);optimizer.setAlgorithm(solver);optimizer.setVerbose(false);for(mapKeyFrame*,tupleint,int::const_iteratormit=observations.begin();mit!=observations.end();mit++){KeyFrame*pKF=mit-first;if(optimizer.vertex(id)==NULL

optimizer.vertex(pKF-mnId)==NULL)continue;constintleftIndex=get0(mit-second);ORB_SLAM3::EdgeSE3ProjectXYZ*e=newORB_SLAM3::EdgeSE3ProjectXYZ();e-setVertex(0,dynamic_castg2o::OptimizableGraph::Vertex*(optimizer.vertex(id)));e-setVertex(1,dynamic_castg2o::OptimizableGraph::Vertex*(optimizer.vertex(pKF-mnId)));e-setMeasurement(obs);}

很多同学在学习SLAM的过程中感觉C++是一座难以跨越的大山,学习过程漫长而痛苦,项目开发遇到bug也不会调试,书看完了代码还是不会写,代码一改就错,一错就懵。

基于此,我们邀请了业内多年工作经验的C++资深算法工程师肖老师,中科大硕士,他也是计算机视觉与OpenCV


转载请注明:http://www.aierlanlan.com/grrz/653.html