Py学习  »  Python

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

计算机视觉life • 1 年前 • 192 次点击  

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

快速获得最新干货

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

2022年四月编程语言排行榜:

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

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

这里再补充几点:

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

C++的应用方向及招聘岗位?

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

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

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

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

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

#include 
using namespace std;
int main()
{
    cout     return 0;
}

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

g2o::SparseOptimizer optimizer;
g2o::BlockSolver_6_3::LinearSolverType * linearSolver;
linearSolver = new g2o::LinearSolverEigen<:blocksolver_6_3::posematrixtype>();
g2o::BlockSolver_6_3 * solver_ptr = new g2o::BlockSolver_6_3(linearSolver);
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(solver_ptr);
optimizer.setAlgorithm(solver);
optimizer.setVerbose(false);

for(mapint,int>>::const_iterator mit=observations.begin(); mit!=observations.end(); mit++)
{
    KeyFrame* pKF = mit->first;
    if(optimizer.vertex(id) == NULL  || optimizer.vertex(pKF->mnId) == NULL)
        continue;
    const int leftIndex = get<0>(mit->second);
    
    ORB_SLAM3::EdgeSE3ProjectXYZ* e = new ORB_SLAM3::EdgeSE3ProjectXYZ();
    e->setVertex(0dynamic_cast<:optimizablegraph::vertex>(optimizer.vertex(id)));
    e->setVertex(1dynamic_cast<:optimizablegraph::vertex>(optimizer.vertex(pKF->mnId)));
    e->setMeasurement(obs);
}

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

基于此,我们邀请了业内多年工作经验的C++资深算法工程师肖老师,中科大硕士,他也是计算机视觉与OpenCV公众号博主。经过周密准备开设了课程《C++编程实战:入门与提升》,不管你是C++初学者,还是具备一些编程基础都可以学习,帮助你快速入门、夯实基础,提高项目实战经验

带你学C++,长按或扫描学习

购买课程后添加此微信进答疑群,如果对课程有疑问,也可加下面微信咨询↓

课程大纲

开课日期:2022/6/10

总共14周!每2周都有精心设计的对应章节的作业考试!优秀学员全额退款

学完课程可以收获什么?

1、本课程坚持学以致用,带领学员从零开始搭建环境,创建项目并编译运行,对于没有编程基础,或者没有C++这种编译性语言开发基础的学员很友好,无需担心跟不上学习进度;

2、课程知识点明确清晰,课程讲解中现场编写代码调试运行,所以学员可以通过学习本课程掌握C++的编程与调试技巧,学完本门课程,学员可以达到工作1年的C++开发工程师水平

3、课程讲解的很多编程技巧是需要2到3年编程经验才能掌握的,编程规范与代码优化是需要在大型互联网公司工作才能接触到的,学完本课程学员可以掌握很多这种经验;

4、本课程对开发和面试中的重要知识点都会着重讲解,最后会进行梳理,学完本课程,学员在面对C++方向知识点有要求的岗位面试时能够更有目的性的准备,求职更加得心应手。

为什么需要学习本课程?

在编程语言领域,还没有哪一个语言能如C++一般三十多年屹立不倒,始终处于编程榜前几位的,受众满天下。

在AI和无人驾驶炙手可热的当下,C++和Python两种语言傍身简直就是绝配,Python是一种解释性语言(脚本语言),在写深度学习算法的时候比较常用,而C++是一种编译性语言,所以很多的框架(如ORB-SLAM)都是使用C++编写的,要想称为一个优秀的算法工程师,不阅读一下这些优秀框架的源码,如何能够脱颖而出?

而学会C++,首先需要掌握C++的基础,在具备基础的情况下,就具备看懂C++框架代码的条件了。本课程会重点关注这些框架中的常用知识点,结合框架中的内容讲解C++,让学员真正的学即可用。

课程适合人群及基础要求

  • 适合人群:想要快速入门的高年级本科生、硕士、博士研究生等,有项目需求需要快速拥有实战经验的工程师。希望能够快速上手并学以致用的从业者。自学能力差、需要有人督促带动一起学习的朋友。
  • 应用领域:自动驾驶、增强/混合现实、机器人、无人机、AI部署、后台开发、客户端开发等。
  • 要求基础:理工科专业,对于没有编程基础的需要有知识搜索能力,有一些C/Python/Java等编程语言编程基础更好。
  • 运行环境:Win7系统以上均可,推荐Win10;Ubuntu 16.04/18.04/20.04 均可,推荐Ubuntu 18.04;
  • 硬件要求:普通台式机/笔记本电脑即可。

带你学C++,长按或扫描学习

购买课程后添加此微信进答疑群,如果对课程有疑问,也可加下面微信咨询↓

课程亮点

1、本课程重在实践,通过代码讲解知识点的语法与使用方法,更有利于提高学员的编程兴趣,而不是对着理论进行不直观的讲解,让学员一头雾水不知所踪;

2、课程讲解中对于在项目开发中常见的错误或者开发经验会做讲解,这些错误或者开发经验是需要数年的开发积累的,学员自学过程中很难将意识到这些问题,因而开发水平很难得到质的提高;

3、C++知识体系磅礴,不仅包括编码、编译、计算机的原理、操作系统,还有在项目开发中代码优化和代码规范,如果想要提高,就必须不断的重构自己的代码,并且需要看很多经典的书籍,这个过程是漫长而且痛苦的,但是优质代码的编写规范和代码优化会在课程讲解中被讲解,培养了学员从入门时就养成良好的编码规范,可以加速学员的成长;

4、本课程讲解C++中的重要知识点,而对于冷门知识点,会向学员初步讲解并告知,这些冷门知识点在良好的编程中是不被提倡的,如goto语句的无条件跳转,这样可以避免学员在实际开发项目中犯错;

5、对于求职面试中的重要知识点,在讲课过程中均会重点讲解,并且最后还会对这些重要的知识点做梳理,让学员更加学以致用,“钱”途光明。

作业、全额返现、学习基金

视频学习+作业强化提升

  • 每2章节增加针对本章学习内容的作业和考,需要在规定时间内完成作业。学习视频+作业考试巩固强化~学习效果双倍提高!

  • 全程陪伴式学习,内部交流答疑一起进步,定期公示学习情况排行榜~再也不怕学习掉队!

  • 不定期内部直播,分享学习经验和作业思路~学习收获UP UP UP!

学习基金 & 优秀学员全额返现!

  • 每个学员有3次拿奖机会:包括2次月度优秀学员(退款100),1次最终课程优秀学员(全额退款)

  • 每月公布当前累积排行榜单,排行榜前5%学员退款100元作学习基金奖励!

  • 课程结课后根据周作业、大作业、课程完成度等数据,评选最终的课程优秀学员,全额退还课程费用+发放优秀学员证书+至少1次内推机会!100%有效,等你来战!

常见问题解答

  1. 课程有实践和练习、答疑吗?
那必须的!本课程重在实践,通过代码讲解知识点的语法与使用方法,更有利于提高学员的编程兴趣,而不是对着理论进行不直观的讲解,让学员一头雾水不知所踪;
我们也设计了专门针对不同章节内容的考试练习,帮助大家巩固所学知识。并根据作业学习结果评选优秀学员,可全额返现。在课程答疑交流群里助教和讲师也会积极答疑解惑。
  1. 课程观看、答疑有效期是?
    答疑主要在开课期间,所以购买课程后务必加客服进入答疑群。后续所有的直播、答疑、讲评作业、排行榜都在课程群里进行。课程观看有效期长久有效,购买后请及时学习。
  2. 课程直播是否有提供录播?
    课程相关的内部直播提供录播。但注意学员加油站直播仅限学员观看,且不提供录播,涉及内容包括:求职经验、行业趋势、论文讲解、SLAM学习经验等。请留意课程内通知并及时参加。
  1. 课程是否可以开发票?
    可以开具增值税电子普通发票。购买课程后找课程助手开具发票即可。

带你学C++,长按或扫描学习

购买课程后添加此微信进答疑群,如果对课程有疑问,也可加下面微信咨询↓


独家重磅课程官网:cvlife.net

1、一个人啃SLAM,难受到自闭,硬顶还是放弃?

2、多传感器融合SLAM 激光雷达-视觉-IMU多传感器融合方案!

3、VIO灭霸:VIO天花板ORB-SLAM3第2期上线!(单/双目/RGBD+鱼眼+IMU+多地图+闭环)

4、视觉SLAM基础:刚看完《视觉SLAM十四讲》,下一步该硬扛哪个SLAM框架 ?

5、机器人导航运动规划: 机器人核心技术运动规划:让机器人想去哪就去哪!

6、详解Cartographer:谷歌开源的激光SLAM算法Cartographer为什么这么牛X?

7、深度学习三维重建 总共60讲全部上线!详解深度学习三维重建网络

8、三维视觉基础 详解视觉深度估计算法(单/双目/RGB-D+特征匹配+极线矫正+代码实战)

9、 VINS:Mono+Fusion SLAM面试官:看你简历上写精通VINS,麻烦现场手推一下预积分!

10、图像三维重建课程:视觉几何三维重建教程(第2期):稠密重建,曲面重建,点云融合,纹理贴图

11、系统全面的相机标定课程:单目/鱼眼/双目/阵列 相机标定:原理与实战


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/137037
 
192 次点击