目的:

  • 负责人说做研究要用matlab,我们又在用orb-slam,所以就准备把orb-slam全套移植到matlab里面。

细节:

  • orb-slam中的函数一个一个的在matlab里面写。但是matlab本身不是面向对象的,所以算法的整体架构还是有变换。
  • 设计了一个核心数据结构,这个结构中存储了所有算法的状态:3d点,frame等。所有函数都直接和这个结构交换数据。
  • 支持把这个matlab的核心结构和c++的核心结构中间通过matlab的mex机制进行转变。也就是可以某些模块可以在matlab里完成,然后把matlab核心结构转换为c++的核心结构,然后又在c++中完成另外一个步骤。后面还可以再把数据换回来。而c++中又实现了一个自定义的c++核心结构和orb-slam数据的转换。

讨论:

  • 其实matlab只适合一些单个功能的原理验证。因为matlab并不适合复杂的程序的管理。并且很多算法的问题其实是工程化的问题,特别是3d视觉。所以即使matlab里面跑得再好,也不能保证c++中没有问题。其实很多时候是很多问题必须针对c++这种语言来解决,是找不到通用的解决方法的。所以做3d视觉的研究最好直接在c++上进行。
  • 一开始没有直接针对问题来考虑做什么事情,所以做了很多看似很复杂,但实际没什么效果的事情。
  • matlab的mex机制真的用起来很麻烦。里面全是指针的运算,一不小心就越界了。
  • 并且matlab的运行速度真的很慢,为了提高速度需要做很多针对matlab的优化,但是这些优化对最终的产品没有任何用处。而算法的运算速度直接影响算法的调优。
  • 这种所有函数都和一个核心结构交换数据的方式其实并不太好。程序小的时候用起来很方便。但是因为每个函数的输入输出其实很不明显,造成的问题有:
    • 其他人阅读代码很不方面
    • 调试很不方便,因为很难做函数的单元测试了
  • 个人现在比较推荐以函数编程为主,面向对象为辅。面向对象只在局部使用,不要出现那种超大的万能的对象。这样每个模块只能拿到自己需要的那部分数据。虽然这样会多很多结构的转换和内存拷贝。但个人觉得在研发阶段是值得的。等到最后做速度优化的时候,只把造成瓶颈的地方改为内存共享。
  • 不使用matlab,但不是说算法的子模块研究不重要。其实要真正研究透一个算法,必须要把里面的子模块独立出来,在不同的环境下,看这个模块的性能,这样才能明白这个算法为什么要使用这个模块。

Matlab版本的ORB-SLAM开发相关推荐

  1. 更换matlab版本需要注意事项,AMD 篇四:更换Matlab调用MKL库版本

    AMD 篇四:更换Matlab调用MKL库版本 2020-03-01 23:37:51 4点赞 5收藏 4评论 前言 这次说一下如何更换MATLAB调用的MKL库.MATLAB所调用的MKL库通常不会 ...

  2. SLAM开发环境搭建和配置

    1.安装WSL子系统 为了避免安装Windows+Linux双系统的麻烦和资源浪费,安装Windows版本的Linux系统即WSL子系统. 1.1 默认安装 一般情况下默认安装WSL子系统的安装路径在 ...

  3. matlab中vspan,搭建VS2017_QT_MATLAB开发环境

    微信公众号: MitchHong 微信号: ASparkleSubscription 作者: Mitch Hong Contents 零. 前言一. VS2017-Qt5.11.1环境的搭建1.下载源 ...

  4. matlab版本之间的单双引号问题

    matlab版本之间的单双引号问题 问题描述 运行matlab文件的时候出现错误提示 Creating a string using double quotes is not supported. U ...

  5. Windows下Faster R-CNN 配置/Matlab版本编译

    配置环境: Windows10x64 Matlab2015Ra VS2013 Opencv2.4.11 CUDA7.5 GTX950M CUDA7.5安装 因为Cuda7.5做了很大的优化改进,而且对 ...

  6. 【caffe-MATLAB】自己编译faster-rcnn的MATLAB版本

    今天在自己的电脑上编译MATLAB版本的faster-RCNN代码,将过程在这作一记录. 1.我的环境:Windows10 ,VS2013 , MATLAB2017a ,CUDA7.5 首先下载作者的 ...

  7. 机器学习快速截图工具matlab版本——文件夹批量处理(原创)

    简要说明: 1.打开文件夹后,遍历所有JPG格式图片,在同目录下新建一个CROP的文件夹存放裁剪的图片. 2.对每张图片, (1)初步框选你要裁剪的矩形框,会自动以你框选的左上点为起点,裁剪大小为长宽 ...

  8. Faster R-CNN的安装及测试(Python版本和Matlab版本)

    rbg的Python版本 一.拉取源码 git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 拉取完成后,在/h ...

  9. python的集成开发环境搭建_Window版本 - Python数据分析集成开发环境 Anaconda安装(超详细)...

    Window版本 - Python数据分析集成开发环境 Anaconda安装(超详细) 前沿 ​ Hello,各位看官,您是不是决定要学习Python数据分析,您是不是现在正在"学" ...

  10. matlab pdist如何实现,在MATLAB版本7中相当于pdist2

    在MATLAB版本7中相当于pdist2 我需要计算matlab中2个matrix之间的欧式距离. 目前我使用bsxfun和计算距离如下(我附上一段代码): for i=1:4754 test_dat ...

最新文章

  1. 更新view是可以update到表的
  2. [C++]C++11:Function与Bind
  3. c++ char*转string_CC++|输入输出与内存、缓存、设备文件
  4. pytorch 转换onnx_新版PyTorch发布!新增TorchScript API,扩展ONNX导出
  5. ASP.NET Core 基础教程 - ASP.NET Core 基础教程 - 简单教程,简单编程
  6. Visual Studio 2022发布了,我最爱的5大特性
  7. C#的变迁史10 - C# 5.0 之其他增强篇
  8. 什么叫冷备用状态_新密5P加工中心冷油机生产厂家电话【瀚信德】
  9. 投递简历得不到回复,并不是你的简历不好,可能是这个原因
  10. 在MySQL中删除重复的行
  11. 配置centOS下的Python
  12. Atitit webshell选型 1. PHP Shell 2.4 1 1.1. 设置密码 4 2. 测试切换目录 4 2.1. 自己实现 5 1.PHP Shell 2.4 Please co
  13. JAVA购物管理系统
  14. 多目标进化算法(MOEA)概述
  15. Dynamics AX 2012 的工业物联网解决方案
  16. C语言既有高级语言又有低级语言的特点,但为什么它不是低级语言呢?
  17. defcon quals 2016 feedme writeup
  18. 基于SSM的花店系统
  19. React-native实现联系人列表分组组件
  20. 搜狗输入法人机交互设计的用户体验

热门文章

  1. SSM中的拦截器机制
  2. 用Python制作有声小说
  3. 从one-hot到word2vec再到FastText
  4. 编写游戏人物、剧情、对话的8大经验总结
  5. 宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒
  6. 石器时代 —— Leetcode刷题日记 (一 百大热题)
  7. 新年礼物送什么好?五款高颜值的蓝牙耳机盘点
  8. jar文件运行时:Failed to load Main-Class manifest attribute from ......解决办法
  9. office表格中图表导出pdf
  10. 朴素贝叶斯算法检测DGA