slam开发心得

2023-05-16

     slam是目前比较流行,并且是门槛较高的一个领域,它与人工智能紧密相关。自己想就这篇博客谈谈自己在这个领域2年多来的心得。

      回顾这2年来自己的学习过程,可以说是艰辛,自己不是搞软件开发的,由于偶然因素搞了这个。主要由于自己别的不精,英文和数学功底非常好,单位就让我搞这个,先搞激光slam,也是单位第一个把激光slam做出来的人,虽然是开源代码,但是在没有任何人帮助的情况下搞定的。后来发现要自己写个slam,需要过硬的c++水平,自己把C++ Primer 5th 看了三遍,中文一遍,英文二遍,然后把课后习题全做了,整整花了一年的时间。今年,换了一家单位,搞视觉slam,这个真是从零开始学习视觉slam,但是发现有了C++基础入门很快,进步也很快,目前,已经做出了产品,自己通过阅读国外的几个开源稠密slam,然后,自己开发出符合实际的slam产品。

     由于我研究生学的是控制理论,而且由于老师是搞理论的院士,所以自己学了几门现代数学,比如近世代数基础,拓扑学,实变函数,泛函分析,黎曼几何与微分流形初步等,所以看slam的论文数学方面没有压力。但是,我后来看的slam方面论文多了,发现这个领域的研究重点其实是实现算法,算法本身没有难的,就是实现比较难。跟国内读博士要求的发sci其实方向不一致,我看普林斯顿,慕尼黑工业大学的博士其实毕业没有发sci的,发的全是会议论文,而且人家把算法的实现写成程序,并且开源供世界搞slam的人下载,测试。

      过去公司也招过好几个博士搞算法,但是他们不写程序,反正是不写程序,写报告,后来公司也没有开发出slam产品。其实,给招人的公司一个建议,就是一定要招能实现算法的人,什么学历不管,得能实现,实现不了,至少能把人家现成的程序改改用也可以。

      最近关注了一下慕尼黑工业大学的招聘博士后的要求,人家要求C++是expert水平,可想而知,实现slam算法是关键,算法其实看slam论文,估计大家如果读过研究生,或者学数学的本科生没有看不懂的。

      slam重点是如何实现,如何用世界上已知的手段,比如CUDA,卷积神经网络等等先近的手段编程序实现它,这个是最为关键的,为人类科学技术进步做出了贡献。

     最后给后来的学习者以下二个建议:

      1. 搞视觉slam可以先看看高翔的视觉slam14讲,然后他网上有个跟他学做rgbdslam,大家一定自己动手把他那个程序调通,对slam有个整体认识,非常关键。在看slam论文的同时,一定要看人家的源代码,理解了,然后最后,自己提取人家的类等等有价值的模块,然后自己写个简单的满足自己的想法的slam。如果,你看了几个视觉slam,当然是看懂了,不要求,每句代码都看,但是应该是大多数都看懂了,这样我想你应该可以提取作者的很多类和方法,去自己实现一个slam。提取的类包括一些常用的实现,比如CUDA如何处理双边滤波,线程池,C++多线程的条件变量用法等等。

       2.多看国外的论文,看英文文献,看人家的源代码,建议国内的,没有源代码的就别看了。

      总结一句话:在slam领域,代码比算法重要,大家仔细体会一下这句话的含义,不要误解,我不是说不重视算法的意思!

 

 

      

 

     

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

slam开发心得 的相关文章

随机推荐

  • 【C++】C++ 单例模式总结(5种单例实现方法)

    本文对 C 43 43 的单例模式进行简单介绍和实现 参考 xff1a C 43 43 线程安全的单例模式总结 xff08 强烈建议阅读原文 xff0c 本文相当于做了总结 xff0c 留作学习 xff0c 并添加了一种新的单例方法 std
  • 【C++】epoll + socket 网络编程实现一个简单的 server

    文章目录 服务端客户端 本着学习 epoll 的态度 xff0c 本文使用 epoll 43 socket 实现了一个简单的 server xff0c 可以接收多个客户端的连接并与之通信 话不多说 xff0c 直接上代码 xff0c 完整的
  • 【已解决】Mac 无法使用 GDB 进行调试的问题

    问题 Mac 初次使用 GDB 进行调试时 xff0c 会出现 xff1a gdb run Starting program usr local bin fabnacci Unable to find Mach task port for
  • 【Git】解决 git pull 提示 Permission denied (publickey) 的问题

    问题 在使用 ssh keygen 创建 github 秘钥时没有使用默认文件 xff0c 而是自定义了 xxx github 的秘钥文件 xff0c 然后将公钥添加到 github 上 之后发现每次 Mac 开机后使用 git pull
  • 【保研复习】数据结构复习笔记

    基于王道数据结构进行的保研面试复习 文章目录 数据结构绪论数据结构1 逻辑结构线性结构线性表栈队列 非线性结构树图集合 xff08 无序 xff09 2 存储结构顺序存储链式存储索引存储散列存储 3 数据的运算 算法特点效率度量时间复杂度空
  • MAVLINK 请求参数和接收参数

    if decodeState 61 61 1 之后是放在mavlink消息解析后面 请求返回参数配置列表 void MavDebug on pushButton 3 clicked mavlink message t msg mavlink
  • JSP与servlet的区别

    一 了解Servlet的概念 Servlet定义 xff1a Servlet是基于Java技术的Web组件 xff0c 由容器管理并产生动态的内容 Servlet引擎作为WEB服务器的扩展提供支持Servlet的功能 Servlet与客户端
  • CSS简单的图片居中

    图片的居中显示 css 有很多方法 xff0c 但在很多情况下有的方法无效 xff0c 这是件很头疼的事情 xff0c 比如 一般设置图片属性 text align center 水平居中 xff0c 但这个方法经常无效 xff0c 很多前
  • jsp中的javabean

    一 JavaBean简介 JavaBean是一种特殊的Java类 xff0c 它遵从一定的设计模式 xff0c 开发工具和其他组件可以根据这种模式来调用JavaBean JSP中使用的JavaBean非常简单 xff0c 这种简单JavaB
  • Session简述

    session概述 session用于记录用户的状态 xff0c 指的是在一段时间内 xff0c 单个客户端和web服务器的一连串相关的交互过程 在一个session中 xff0c 客户可能会多次请求访问同一个资源 xff0c 也有可能请求
  • MVC框架理解

    简介 MVC开始是存在于桌面程序中的 xff0c M是指业务模型 xff0c V是指用户界面 xff0c C则是控制器 xff0c 使用MVC的目的是将M和V的实现代码分离 xff0c 从而使同一个程序可以使用不同的表现形式 比如一批统计数
  • Docker与容器的区别

    容器 虚拟机和容器结构主要区别在于中间两层 xff0c 虚拟机自带了操作系统 xff0c 这个操作系统可以和宿主机一样 xff0c 也可以不一样 xff0c 而容器是和宿主机共享一个操作系统 我们知道 xff0c 操作系统的内容是很多的 x
  • bootloader协议制定开发感悟

    制订协议最好是能站在巨人的肩膀上 xff0c 这样能节省时间 xff0c 心里也更加有谱 自己制定协议很容易被细节带偏 对于较为复杂得的协议 xff0c 整个框架一定要清晰
  • STM32不能跑程序,Keil软件中debug出现 cannot access memory

    使用stm32f40X时 xff0c 通过ST LINK下载程序后 xff0c 发现GPIO引脚电压乱跳 xff0c debug过程发现keil软件弹出cannot access memory 在下载程序过程中 xff0c keil提示 将
  • python:这种错误的原因和解决方法 "NameError:name 'self' is not defined?"

    class A def init self a self a 61 a def p self b 61 self a print b 在学习的时候 xff0c 写了以上代码 xff0c 报了如下的错误 NameError name 39 s
  • Ubuntu系统用VNCViewer连不上远程的解决办法

    有时Ubuntu重启电脑重新联网之后 xff0c 用VNCViewer远程时提示timeout 解决办法 点击Ubuntu电脑系统的设置按钮 xff0c 进入共享选项卡 检查远程登录是不是已经开启 xff0c 屏幕共享是不是活动状态 屏幕共
  • STM32串口DMA方式发送数据

    文章目录 一 DMA介绍1 概括2 DMA由来2 1程序传送方式2 2中断传送方式2 3DMA原理 3 DMA具有的功能4 DMA传输方式5 DMA主要特征6 DMA处理7 DMA工作框图8 DMA工作传送过程 二 串口DMA方式发送数据1
  • 每日一练20210629

    1 下列叙述中正确的是 2021 06 29 21 59 14 A 算法的效率只与问题的规模有关 而与数据的存储无关B 算法的时间复杂度是指执行算法所需要的计算工作量C 数据的逻辑结构与存储结构是一一对应的D 算法的时间复杂度与空间复杂度一
  • Aborted (core dumped)

    在百度谷歌了无数次之后 xff0c 看了许多关于Aborted xff08 core dumped xff09 的解决方法后 xff0c 终于找到一个解决办法 文章来自 http blog 163 com wujiaxing009 64 1
  • slam开发心得

    slam是目前比较流行 xff0c 并且是门槛较高的一个领域 xff0c 它与人工智能紧密相关 自己想就这篇博客谈谈自己在这个领域2年多来的心得 回顾这2年来自己的学习过程 xff0c 可以说是艰辛 xff0c 自己不是搞软件开发的 xff