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

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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.mzph.cn/news/62534.shtml

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

相关文章

Samba服务器

目录 一、什么是Samba? 二、Samba进程 三、Samba主要功能 四、Samba工作流程 五、Samba安全级别 六、Sam主配置文件/etc/samba/smb.conf 七、Samba服务配置案例 一、什么是Samba? Samba可以让linux计算机和windows计算机之间实现文件和打印机资源共享的一…

解决D盘的类型不是基本,而是动态的问题

一、正确的图片 1.1图片 1.2本人遇到的问题 二、将动态磁盘 转为基本盘 2.1 基本概念,动态无法转化为基本,不是双向的,借助软件 网址:转换动态磁盘到普通磁盘_检测到计算机本地磁盘为动态分区_卫水金波的博客-CSDN博客 2.2分区…

软考:中级软件设计师:数据库恢复与备份,故障与恢复,反规范化

软考:中级软件设计师:数据库恢复与备份 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备…

Linux 下 Java Socket 编程报 java.net.Exception:Permission denied (权限不足)

本人用Linux部署springboot项目时遇见这个错误,原因很简单,就是端口号没有选对。 在linux系统中,端口号再1024以下的需要root权限,只要把端口改成大于1024的就可以了,但避开一些软件的默认端口,如Tomcat的8…

Midjourney学习(三)6个高级应用

使用Remix Mode在原图片的基础上进行二次创作 通过prompt得到大图之后,点击Make Variations按钮,输入Remix Prompt,即可得到意想不到的效果! 局部内容重绘 通过局部重绘可以实现对画面内容更加精细化的控制,同样也是需…

设计模式—策略模式

目录 一、定义 二、特点 三、优点 四、缺点 五、实例 六.涉及到的知识点 1、一个类里面有哪些东西? 2、类和实例 什么是类? 什么是实例? 什么是实例化? 3、字段和属性 什么是字段? 属性是什么&#xff1…

新的雅思口语6分标准

目录 新的雅思口语6分标准 要有细节,要有充分的话题词汇资源 要拥有具象思维能力,要有画面感 下义词是什么意思? 方法:现在时未来时 (形成时态多样)观点解释 原因要有排他性 "Kick off" 是…

windows系统服务器在不解锁屏幕不输入密码的前提下,电脑通电开机启动程序。

在控制面板中找到“管理工具”中的 “任务计划程序”,打开“任务计划程序”窗口。如图: 双击打开任务计划程序,空白出右键创建基本任务,或者点击最右侧的创建基本任务。 输入名称,点击下一步。 先选择计算机启动时&a…

开启智能时代:深度解析智能文档分析技术的前沿与应用

开启智能时代:深度解析智能文档分析技术的前沿与应用 本章主要介绍文档分析技术的理论知识,包括背景介绍、算法分类和对应思路。通过本文学习,你可以掌握:1. 版面分析的分类和典型思想 2. 表格识别的分类和典型思想 3. 信息提取的…

JavaScript 手写题

基础手写 全排列(力扣原题) 要求以数组的形式返回字符串参数的所有排列组合。 注意: 字符串参数中的字符无重复且仅包含小写字母返回的排列组合数组不区分顺序const _permute string > {const result []const map new Map()const df…

百万级并发IM即时消息系统(3)配置数据初始化和前后端交互

04_配置数据初始化及前后端交互_哔哩哔哩_bilibili 1.配置文件 创建一个config文件夹以及一个app.yaml配置文件。 该文件专门存放一些关键配置,如mysql DNS路径和redis的addr账号密码等。 后期可以创建一个工具包和一些初始化方法,专门用来加载这些配…

用AI + Milvus Cloud搭建着装搭配推荐系统教程

以下函数定义了如何将图像转换为向量并插入到 Milvus Cloud 向量数据库中。代码会循环遍历所有图像。(注意:如果需要开启 Milvus Cloud 全新特性动态 Schema,需要修改代码。) 查询向量数据库 以下代码演示了如何使用输入图像查询 Milvus Cloud 向量数据库,以检索和上传…

学习 使用pandas库 DataFrame 使用

1 、 数据排序 sort_values()函数 by:要排序的名称或名称列表, sorted_df df.sort_values(byAge,ascendingFalse) 由大到小排序; sorted_df df.sort_values(byAge) 由小到大排序; # 创建一个示例数据帧 data {Name: [Tom, Nick, John…

spring:事务失效+事务传播行为

一、事务失效 1.Transactional作用在非public上 Transactionalvoid transferAccounts(){adminDao.sub();System.out.println(10/0);adminDao.add();} 只执行sub() 2.异常被try catch捕获 Transactionalpublic void transferAccounts(){adminDao.sub(…

C语言每日一练---Day(14)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:统计每个月兔子的总数 数列的和 💓博主csdn个人主页&#x…

【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南

Minio的元数据 数据存储 MinIO对象存储系统没有元数据数据库,所有的操作都是对象级别的粒度的,这种做法的优势是: 个别对象的失效,不会溢出为更大级别的系统失效。便于实现"强一致性"这个特性。此特性对于机器学习与大数据处理非…

vue3+ts+uniapp小程序端自定义日期选择器基于内置组件picker-view + 扩展组件 Popup 实现自定义日期选择及其他单列选择

vue3ts 基于内置组件picker-view 扩展组件 Popup 实现自定义日期选择及单列选择 vue3tsuniapp小程序端自定义日期选择器 1.先上效果图2.代码展示2.1 组件2.2 公共方法处理日期2.3 使用组件(全局自动导入的情况) 3.注意事项3.1refSelectDialog3.1 backgroundColor"#fff&q…

DP读书:鲲鹏处理器 架构与编程(十一)鲲鹏生态软件架构 AND 硬件特定软件

鲲鹏生态软硬件构成 鲲鹏软件构成硬件特定软件1. Boot Loader2. SBSA 与 SBBR3. UEFI4. ACPI 鲲鹏软件构成 鲲鹏处理器的软件生态是一个不断发展的软件生态,服务器本身也具有复杂度多样性,经过很长时间的发展服务器硬件有不同的操作系统方案&#xff0c…

pdfh5在线预览pdf文件

前言 pc浏览器和ios的浏览器都可以直接在线显示pdf文件&#xff0c;但是android浏览器不能在线预览pdf文件&#xff0c;如何预览pdf文件&#xff1f; Github: https://github.com/gjTool/pdfh5 Gitee: https://gitee.com/gjTool/pdfh5 使用pdfh5预览pdf 编写预览页面 <…

开源电子合同签署平台小程序源码 在线签署电子合同小程序源码 合同在线签署源码

聚合市场上各类电子合同解决方案商&#xff0c;你无需一个一个的对接电子合同厂商&#xff0c;费时&#xff0c;费力&#xff0c;因为这个工作我们已经做了适配&#xff0c;你只需要一个接口就能使用我们的所有服务商&#xff0c;同时你还可以享受我们的接口渠道价格。 Mini-C…