推广 热搜: 广场  Java  app  Word  营业  微信公众号  北京代理记账  商城  代理记账  商标交易 

matlab怎么画地图底图详细步骤 研究SLAM,对编程的要求有多高?

   2023-04-28 企业服务招财猫120
核心提示:研究SLAM,对编程的要求有多高?说到SLAM,很多人会提到MATLAB。主要是因为大部分人都是在本科阶段接触MATLAB,所以希望在以后的SLAM学习中用到。MATLAB确实有很多优点:语法简单,开

研究SLAM,对编程的要求有多高?

说到SLAM,很多人会提到MATLAB。主要是因为大部分人都是在本科阶段接触MATLAB,所以希望在以后的SLAM学习中用到。

MATLAB确实有很多优点:语法简单,开发速度快,调试方便,功能丰富。但是在SLAM领域,MATLAB的缺点也很明显,主要是这三个:

1.你需要正版软件(你可以t在真机上安装一个盗版的MATLAB

2.操作效率不高;

3.需要一个巨大的安装包。

另一方面,C的优势在于直接使用,运行效率高,但开发速度和调试比MATLAB慢。

但是光是运行效率就足以让很多SLAM方案选择C作为开发语言,因为运行效率真的很重要。

同样的算法,如果它能MATLAB写的不能实时,但是C写的可以实时,你说哪个?

当然,MATLAB也有一些用处。我看过一些SLAM相关的公开课,让学生用MATLAB做仿真,交作业。这个没问题,比如SLAM工具箱。

同样,类似于MATLAB的Python(和octave)也经常这样使用。它们的快速发展带来了很多便利。当你想验证一些数学理论和想法的时候,这些都是很好的工具。It掌握MATLAB和Python是很棒的。

但是说到实用性,你会发现几乎所有的方案都在用c.因为运行效率是如此的重要。

好吧,既然有心学MATLAB,为什么不学好C呢?

让让我们谈谈C将学到多少。

在程序员s的话,C语言比较特殊。你可以说你精通Java,但千万不要说你精通C,C非常博大精深,有数不清的特点,而且会随着时间不断变化更新。然而,大多数人不。;不需要学习所有的C特性,因为很多东西永远不会用到。

作为SLAM的研究人员,我们主要面对的是算法的开发,所以我们更关心的是如何有效的实现各种相关算法。另一方面,那些复杂的软件架构和设计模式,我个人认为在SLAM中起次要作用。毕竟使用SLAM的目的是计算位置,构建地图,而不是编写一个可以自动更新,具有多人在线对战功能的机器人战争平台。

你的主要精力可能花在矩阵运算、分块、实现非线性优化和图像处理上;你可能对并发、指令集加速、GPU加速等主题感兴趣。,或者可以花点时间学习;你也可以使用模板来扩展你的算法,或者你也可以试一试。

相应的,很多功能性的东西,比如UI,网络通讯等。,用的时候不妨摸一下。但是当你专注于SLAM的时候,你不会我不需要专门学习。

说了这么多,SLAM要求的C级一般比你在书上看到的那些样例代码要高。因为那些代码是作者用来给初学者介绍语法的,所以会尽量简单。实际的代码往往结合了各种奇怪的技能,乍一看会显得深不可测。

地理对话

学习SLAM对编程的要求有多高?半闲散俗人2016-11-2219:16

说到SLAM,很多人会提到MATLAB。主要是因为大部分人都是在本科阶段接触MATLAB,所以希望在以后的SLAM学习中用到。

MATLAB确实有很多优点:语法简单,开发速度快,调试方便,功能丰富。但是在SLAM领域,MATLAB的缺点也很明显,主要是这三个:

1.你需要正版软件(你可以t在真机上安装一个盗版的MATLAB

2.操作效率不高;

3.需要一个巨大的安装包。

另一方面,C的优势在于直接使用,运行效率高,但开发速度和调试比MATLAB慢。

但是光是运行效率就足以让很多SLAM方案选择C作为开发语言,因为运行效率真的很重要。

同样的算法,如果它能MATLAB写的不能实时,但是C写的可以实时,你说哪个?

当然,MATLAB也有一些用处。我看过一些SLAM相关的公开课,让学生用MATLAB做仿真,交作业。这个没问题,比如SLAM工具箱。

同样,类似于MATLAB的Python(和octave)也经常这样使用。它们的快速发展带来了很多便利。当你想验证一些数学理论和想法的时候,这些都是很好的工具。It掌握MATLAB和Python是很棒的。

但是说到实用性,你会发现几乎所有的方案都在用c.因为运行效率是如此的重要。

好吧,既然有心学MATLAB,为什么不学好C呢?

让让我们谈谈C将学到多少。

在程序员s的话,C语言比较特殊。你可以说你精通Java,但千万不要说你精通C,C非常博大精深,有数不清的特点,而且会随着时间不断变化更新。然而,大多数人不。;不需要学习所有的C特性,因为很多东西永远不会用到。

作为SLAM的研究人员,我们主要面对的是算法的开发,所以我们更关心的是如何有效的实现各种相关算法。另一方面,那些复杂的软件架构和设计模式,我个人认为在SLAM中起次要作用。毕竟SLAM的目的是计算一个位置,然后建造它。这个地图不是要写一个可以自动更新,具有多人在线对战功能的机器人战争平台。

你的主要精力可能花在矩阵运算、分块、实现非线性优化和图像处理上;你可能对并发、指令集加速、GPU加速等主题感兴趣。,或者可以花点时间学习;你也可以使用模板来扩展你的算法,或者你也可以试一试。

相应的,很多功能性的东西,比如UI,网络通讯等。,当你使用它们时可能会被触动,但你不会。;当你专注于SLAM时,你不必特别研究它们。

说了这么多,SLAM要求的C级一般比你在书上看到的那些样例代码要高。因为那些代码是作者用来给初学者介绍语法的,所以会尽量简单。实际的代码往往结合了各种奇怪的技能,乍一看会显得深不可测。比如你在课本上读到的是这样的:

intmain(intargc,char**argv)

{

vectorltstringgtvec

vec.push_back(abc)

for(inti0()i)

{

//...

}

返回0

}

你看《CPrimerPlus》的时候,觉得C也不过如此,没有什么特别难懂的地方。然而,实际的代码是这样的:

嵌套模板类(g2o中的块求解器):

g2o::blocksolv::blocksolv:lin::lin::blocksolvertltg2oecho-@.com:blocksolverltg2oech23-@.com:blocksolvertraitslt3,1gtgt(linearsolver)g2oech25-@.com:optimizationalgorithmlevenberg*solvernewg2oech27-@.com:optimizationalgorithmlevenberg(solver_ptr)g2oech29-@com

模板元素(从ceres自动派生):

虚拟boolevaluate(双常量*常量*参数,

双*残差,

double**Jacobian)const{

如果(!雅各宾派){

r::variadicevaluatelt

CostFunctor,doubl::call(*functor_,参数,残差)

}

r::autodiffltcostfunctor,doubl::differential(

*函子_,

参数,

SizedCostFunctionltkNumR::num_residuals(),

残差,

雅各布)}

C11项新功能(来自SVO功能提取部分)

voidfram::s::for_each(FTS_。b::updateseed(constfloatx,constfloattau2,Seed*seed){

floatnorm_scal::isnan(norm_scal::math::normal_distributionltfloatgtnd(seed-gtmu,norm_scale)

浮动s21。/(1./seed-gtsigma21。/tau2)

浮点ms2*(种子-gtmu/种子-gtsigma2x/tau2)

浮动C1s::math::pdf(nd,x)

浮动C2种子-gtb/(种子-gta种子-gtb)*1。/seed-gtz_range

浮点归一化_常数C1C2

C1/归一化_常数

C2/正常化_公司nstant

浮动fC1*(种子-gta1。)/(种子-gta种子-gtb1。)C2*seed-gta/(seed-gtaseed-gtb1。)

浮动eC1*(种子-gta1。)*(种子-gta2。)/((种子-gta种子-gtb1)。)*(种子-gta种子-gtb2。))

C2*seed-GTA*(seed-GTA1.0f)/((seed-GTAseed-gtb1.0f)*(seed-GTAseed-gtb2.0f))

//更新参数

浮动管理部门_新C1*C2*seed-gtmu

种子-gtsigma2C1*(s2m*m)C2*(种子-gtsigma2种子-gtmu*种子-gtmu)-mu_new*mu_new

seed-gtmumu_new

seed-gta(英-法)/(法-英/法)

seed-gtbseed-gta*(1.0f-f)/f}

我不我不知道你看到这些代码的感受,但我当时的内心感受是:这怎么和课本上的完全不一样?而且研究了很久,发现人其实是对的!

[我我不太会发表情。无论如何,它it'下定决心对你有好处

总之,C的水平要求应该在课本之上。而且,这种水平的提高,大多是建立在不断看别人的过程s代码和编写您自己的代码。是反复练习的,不仅仅是看书。特别是对于视觉SLAM问题,很多时候你可以不要根据论文实现一套方案,这很大程度上取决于你的理论和代码技能。

所以,请尽快开始学习C,使用C,这才是学习SLAM的正确方法。

唐不要在你的舒适区里犹豫太久,所以没有进步。(同样适用于想学SLAM但是不我不想学Linux。)

关于闭环检测的库,稍微列举几个。

1.DBoW系列

TRO12的一篇文章,其中使用了k-means训练的字典树。它与OpenCV结合紧密,原理相对简单。

GitHub-dorian3d/DBoW2:增强的C语言层次词库()

GitHub-rmsalinas/DBow3:dbow2的改进版本

()

2.FABMAP系列

周柳树,康明斯系列论文。作者自己提供了一个开源版本,有人在OpenCV中实现了一个,所以一共两种。

FabMap原始(~)

OpenCV:OpenFABMAP

()

3.DLoopDetector

基于DBoW2()开发的循环检测库

建议从DBoW2或DBoW3开始。原理和实现都比较简单,效果不错。

matlab与stk怎么连?

步骤:

1.确保matlab是32位的;

2.在"安装路径agistk9in"

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
合作伙伴
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  冀ICP备2023006999号-8