SLAM从入门到精通(开始篇)

news2024/11/16 21:37:36

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        很多同学喜欢学习linux,但是他们只是把linux当成是一个嵌入式技术在学习,而不是当成工具在使用。平时,要么是自己做板子,要么是烧入别人的固件,要么就是不停折腾驱动和kernel。我的建议是,不妨找一个linux或者rtos擅长的行业去深挖,在精进自己技术的同时,还能发现行业的需求,结合自己以往的经验,开发出满足市场的产品,这样也能有一定的回报,形成正向循环。类似的场景其实很多,比如医疗电子、运动控制、图像处理、机器人等等。

        slam就是这样一个比较适合linux应用的场合,它的全程是simultaneous localization and mapping。换成大白话,就是边定位、边制图。听着有些扯,但是确实是这么做的。学习slam有很多的方法,每个人都有自己的路径,不妨试试下面这个方法,

1、安装虚拟linux

        对于slam来说,linux几乎说是标配。然而,目前大家工作电脑安装的OS几乎都是windows,所以这个时候建议大家可以安装一个virtual box虚拟机。在虚拟机中安装一个linux版本即可。现在比较流行的是linux发行版是ubuntu,可以选一个近期发布的ubuntu使用,但又不是最新的版本,比如ubuntu 20.04就可以。

2、学好c++

        关于slam这一块,要真正在产品上用起来,ros这一块是逃不了的。ros本身用的是c++,所以我们得学好c++。当然,也有人说,ros也支持python。但是工业上部署和运行,没有python一说,这是需要注意的。目前c++版本很多,c++11、c++17等等,建议还是学习经典的c++语法就好。

3、用好ros,但这是起步

        ros是个好东西,对于学习机器人的同学来说,它几乎是标配。有了它,大家只需要关注在算法等创新领域。此外ros里面有现成的模块、框架和成熟算法代码,但是离产品本身还有很大的差距。但是,只是会对ros算法调参,这是远远不够的。很多人学习ros,到最后把自己搞成了调参和标定工程师,这反而得不偿失了。

4、阅读paper、编写新的算法

        很多时候,ros里面的算法并不能解决实际场景的问题。举个例子,客户的场景有可能地面是不平的、自然光是不满足计算机视觉要求的、cpu性能也无法满足实时性的。这上面的问题都很有代表性,所以靠ros调参,或许可以做一个demo,但是没有办法做一个产品。

5、模块优化的能力

        优化分成两个方面,一个方面是软件,比如参数标定、上位机编写、先验知识添加、多传感器融合等等,这些都算;另外一方面是硬件,比如说算法加速,fpga加速、gpu加速等等,这些也算。甚至为了提高效率,魔改linux kernel都是有可能的。

6、自己编写驱动

        ros驱动和普通的驱动不一样,其实的大部分还是以协议适配为主,包括usb、can、232、485、ethernet等各种接口的协议适配。这和linux下面的kernel驱动还是不一样的。

7、了解和掌握底盘

        从输入、输出的角度看,slam只是机器人的一个模块,定位和地图做好后,本质还是要为机器人服务的。所以,在做好了ros仿真之后,下一步就可以了解下机器人的底盘,单轮、双轮、三轮、四轮、六轮等各种运动底盘,这里面大部分用的都是mcu,控制算法以pid和mpc为主,了解一下我们的控制目标,对于理解整个slam框架很有帮助。

8、提高数学能力

        所谓数学能力,主要是和slam相关的一些数学库或者优化库,比如eigen、sophus、ceres、g2o等等,扩展的一些应用库,比如opencv、pcl点云库这些,最好也要看看。有一本书《视觉slam十四讲》,上面谈到了很多的数学,用作自己平时资料查询,十分有必要。

9、有个实际的项目推动

        学习一个东西本身能够长久,关键还是要有一个项目能够做长期支撑为好。因为,有的时候学习总是枯燥无聊的,会遇到很多的问题,如果没有一个真实的需求做依靠的话,很容易中途放弃的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/936547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

appium+python自动化测试

获取APP的包名 1、aapt即Android Asset Packaging Tool,在SDK的build-tools目录下。该工具可以查看apk包名和launcherActivity 2、在android-sdk里面双击SDK-manager,下载buidl-tools 3、勾选build-tools,随便选一个版本,我这里选的是24的版…

YOLOv5、v8改进:CrissCrossAttention注意力机制

目录 1.简介 2. yolov5添加方法: 2.1common.py构建CrissCrossAttention模块 2.2yolo.py中注册 CrissCrossAttention模块 2.3修改yaml文件。 1.简介 这是ICCV2019的用于语义分割的论文,可以说和CVPR2019的DANet遥相呼应。 和DANet一样,…

DBeaver的安装和使用:windows版

DBeaver官网下载地址:https://dbeaver.io/download/ 下载完成后, 进入傻瓜式安装: 这里会进入重复界面,一样点击下一步即可 选择安装目录,尽量不要选C盘, 我的电脑只有c盘, 没办法 等待安装完成…

linux操作系统的权限的深入学习(未完)

1.Linux权限的概念 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户…

MVSNet 和 PatchMatchNet 的DTU数据集 几个不同之处 一定要注意

文章目录 1 测试集 数据加载不同2 训练集 数量 分辨率不同 1 测试集 数据加载不同 1.MVSNet 的DTU测试数据集和PatchmatchNet测试数据集不一样; 区别在于数据加载,前者 cams文件最后是最小深度和间隔,后者是最小深度和最大深度。 2 训练集 …

layui框架学习(41:表单模块)

之前的文章《layui框架学习》14-16中介绍了通过预设类及部分layui属性设置表单的外观样式,layui中还提供有表单模块以对表单元素进行各类动态化渲染和相关操作,本文学习并记录表单模块form的常用属性、函数及事件的用法(如果内容已在之前文章…

时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测

时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测 目录 时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现SSA-XGBoost时间序列预测,麻…

VS警告 C4819 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失

1、问题 Microsoft visual studio 2019跑仿真的时候出现该警告,在高级保存选项设置编码为Unicode(UTF-8 无签名)还是会有该警告。 2、解决方法 右键项目,打开属性设置,选中:工程 -> 右键选择"属性" -> C/C ->…

JSON文件读写教程【jsoncpp源码编译】【结尾附三方库下载链接】

目录 1 数据下载(jsoncpp源码)2 文件编译3 测试用例4 下载链接:内容: JSON文件的读取与保存可以使用jsoncpp库来实现,这里介绍该库的下载及编译方法。 1 数据下载(jsoncpp源码) 数据下载:Github地址 图1 github源码示意图 2 文件编译 2.1 点击Download ZIP,下载源码。 …

大数据分析与AI在农业领域的应用

文章目录 数据采集与监测数据分析与预测个性化管理与优化决策支持系统结合物联网技术优势与前景 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:Java知识介绍 ✨文章内容&a…

使用ChatGPT给Python代码写单元测试

先写一个简单的python函数,找chatgpt写单元测试: 有一个python函数,请帮忙写单元测试,函数长这样: def test2(a: list, b: list) -> float:"""计算两个坐标的距离:param a list 格式如&#xff1a…

记一次蓝屏日志

记一次Win 蓝屏日志: 📲引: 虽然说,我是一个在职两年半的程序员,但是对于这个问题其实也和大部分人一样,一脸懵逼🤖 那是一个风和日丽的早上,w开开心心去上班摸鱼🐟&a…

LiteOS qemu realview-pbx-a9 环境搭建与运行

前言 最近打算移植搭建 一些常见的 RTOS 的 qemu 开发学习环境,当前 RT-Thread、FreeRTOS 已经成功运行 qemu,LiteOS 初步验证可以正常 运行 qemu realview-pbx-a9,这里做个记录 首先学习或者研究 RTOS,只是看内核源码&#xff0…

SNN论文总结

Is SNN a great work ? Is SNN a convolutional work ? ANN的量化在SNN中是怎么体现的,和threshold有关系吗,threshold可训练和这个有关吗(应该无关) 解决过发放不发放的问题。 Intuation SNN编码方式 Image to spike patter…

性能优化维度

CPU 首先检查 cpu,cpu 使用率要提升而不是降低。其次CPU 空闲并不一定是没事做,也有可能是锁或者外部资源瓶颈。常用top、vmstat命令查看信息。 vmstat 命令: top: 命令 IO iostat 命令: Memory free 命令: 温馨提示&#xff1a…

Qt应用开发(基础篇)——日历 QCalendarWidget

一、前言 QCalendarWidget类继承于QWidget,是Qt设计用来让用户更直观的选择日期的窗口部件。 时间微调输入框 QCalendarWidget根据年份和月份初始化,程序员也通过提供公共函数去改变他们,默认日期为当前的系统时间,用户通过鼠标和…

《C语言编程环境搭建》工欲善其事 必先利其器

C语言编译器 GCC 系列 GNU编译器套装(英语:GNU Compiler Collection,缩写为GCC),指一套编程语言编译器,常被认为是跨平台编译器的事实标准。原名是:GNU C语言编译器(GNU C Compiler)。 MinGW 又称mingw32 &#xff0c…

C语言练习5(巩固提升)

C语言练习5 选择题 选择题 1&#xff0c;下面代码的结果是&#xff1a;( ) #include <stdio.h> #include <string.h> int main() {char arr[] { b, i, t };printf("%d\n", strlen(arr));return 0; }A.3 B.4 C.随机值 D.5 &#x1f4af;答案解析&#…

Unittest 笔记:unittest拓展生成HTM报告

HTMLTestRunner 是一个unitest拓展可以生成HTML 报告 下载地址&#xff1a;GitHub: https://github.com/defnnig/HTMLTestRunner HTMLTestRunner是一个独立的py文件&#xff0c;可以放在Lib 作为第三方模块使用或者作为项目的一部分。 方式1&#xff1a; 验证是否安装成功&…

Navicat下载安装使用

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…