当前位置: 首页 > news >正文

SLAM从入门到精通(SLAM落地的难点)

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

        在所有的slam算法中,基于反光柱的激光slam和基于二维码的视觉slam是落地最彻底的两种slam方法。和磁条、色带等传统导航方式相比较,它们最大的优点就是操作简单、部署灵活,不需要进行复杂的地面施工,就可以短时间内在客户现场应用起来。

        到这里,很多人又发现了一个新的问题,实际使用的这些slam算法和我们读的论文算法,好像有很大的不同。就拿激光slam来说,大家学习的时候一般都是各种scan_to_scan、scan_to_map算法,为了提高正确性,有时候还需要加上后端优化以及环回检测,但实际应用中好像很少听说有一种算法可以覆盖所有的场景。所以,今天我们可以正好借这个机会讨论一下slam落地和slam科研之间的区别。

1、稳定是slam落地的第一要求

        不过是哪一种算法,我们都可以很容易找出它最佳的应用场景。但是,这种算法的泛化属性怎么样,是不是能够应用在各种客户的场景,这就两说了。通常,slam本身最大的难点,就是如何从扫描的传感器数据中获取特征点,基于这些特征点来进行制图和定位的工作。而这些特征点是不是稳定、可靠的,此时此刻就变得非常关键了。

        换个思路,假设自然场景中的特征点都是人工有意设计和部署的,那么是不是应用的难度一下子就降低了很多。因为相同的特征,自然界几乎是不存在的。即使有,我们也可以通过算法、特征、参数配置的方法快速地进行过滤处理,是不是有了这关键的第一步,后面的工作一下子就变得容易起来了。

2、客户场景大多数是一个多变的场景

        对于科研的同学来说,场景稳定、光照稳定,这些都是算法能够稳定运行的重要条件。但事实上,客户的场景却又是快速变化的场景。每个客户有自己的主营业务,机器人的参与只是帮助他们来降本增效的,本质上不大可能为这些机器人做太多的改变和修正。所以,对于机器人来说,它就有必要自己来适应这些复杂的客户场景。

        以机器人的lidar安装位置来说,如果安装过低,那么不可避免地它会遇到各种各样复杂的场景,人、设备、其他机器人的干扰,这些都是不可避免的。当然,安装位置如果很高,这个时候玻璃、长走廊、白色的围墙,这也会是另外一个麻烦。所以不管哪一种情况,算法上做的预设性条件在现实中并不满足。

3、软件开发成本问题

        当前slam开发,在所有的成本之中,软件成本是最大的开支。硬件的成本,一般都是公开透明的,但是软件成本、以及嵌入式功能开发、优化、调试的成本很多时候就是一个无底洞,最后结果如何很多时候还未可知。降低这种成本的方式,最好的办法就是开发通用的slam框架,大家接口一样,算法之间可以彼此替代,只需要进行参数的设置和调整,就可以切换成新的算法继续去运行和处理。

        此外,很多时候算法运行的开发板一旦确定之后,基本上算力就固定了。但是客户的需求确实千差万别,实现这些需求确有需要各种各样的算法。有的算力要求低,有的要求却很复杂,如何扩充这些算力,保证软件有足够的算力作为支撑,这也是需要好好考虑的一件事情。

4、多传感器的融合是唯一的办法

        很少有一种传感器能覆盖所有的场景。所以实际环境当中,一般都是利用多个传感器的算法,一起参与到最终数据的处理过程当中。该用里程计就用里程计,该用imu就用imu,该用lidar就用lidar,该用图像用图像,一切以机器人稳定运行、项目稳定验收作为最终的考核标准。

5、路径设计也是slam的重要环节

        slam归根到底还是一种算法,它需要有效的输入数据和合理的参数,才能产生合适的输出结果。一旦输入的数据质量不高,那就不要期望它的结果很好。而在工厂当中,现场的FAE有必要根据算法的要求、以及过往的经验,找出最合适的robot行走路径来满足这些输入数据的要求。

        路好不好、平不平整,slam扫描到的环境是不是特征明显,反光柱部署的位置是不是合理,光源是不是充足,这些都是需要好好考虑的。算法本身是固定的,但是合适的现场部署,通过参数标定和路径优化,才能最大化保持算法的可靠性和稳定性。单靠算法自己,本身除了调参,能做的工作有的时候很有限。

6、两种slam前景

        目前使用比较多的slam还是激光slam,它本身更多时候是一个工程问题。也就是说,相关的理论都是很成熟的,主要就是看怎么应用起来。而视觉slam目前为止,还是一个科学问题,如果连稳定的特征点都没有办法实现的话,那本身还有很大的应用门槛。所以,不管是哪一种办法,要想真正落地,有必要最大程度解决特征点稳定性的问题,只有解决了这些问题,才有进一步扩展和应用的可能性。

相关文章:

SLAM从入门到精通(SLAM落地的难点)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 在所有的slam算法中,基于反光柱的激光slam和基于二维码的视觉slam是落地最彻底的两种slam方法。和磁条、色带等传统导航方式相比较&…...

通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…...

职业迷茫,我该如何做好职业规划

案例25岁男,入职2月,感觉自己在混日子,怕能力没有提升,怕以后薪资也提不起来。完全不知道应该往哪个方向进修,感觉也没有自己特别喜欢的。感觉自己特别容易多想,想多年的以后一事无成的样子。 我觉得这个案…...

数据结构----顺序栈的操作

1.顺序栈的存储结构 typedef int SElemType; typedef int Status; typedef struct{SElemType *top,*base;//定义栈顶和栈底指针int stacksize;//定义栈的容量 }SqStack; 2.初始化栈 Status InitStack(SqStack &S){//初始化一个空栈S.basenew SElemType[MAXSIZE];//为顺序…...

web3 React Dapp书写订单 买入/取消操作

好 上文web3 前端dapp从redux过滤出 (我创建与别人创建)正在执行的订单 并展示在Table上中 我们过滤出了 我创建的 与 别人创建的 且 未完成 未取消的订单数据 这边 我们起一下 ganache 环境 ganache -d然后 我们项目 发布一下智能合约 truffle migrate --reset然…...

C++学习---信号处理机制、中断、异步环境

文章目录 前言信号处理signal()函数关于异步环境 信号处理函数示例raise()函数 前言 信号处理 关于信号,信号是一种进程间通信的机制,用于在程序执行过程中通知进程发生了一些事件。在Unix和类Unix系统中,信号是一种异步通知机制&#xff0c…...

机器学习——奇异值分解案例(图片压缩-代码简洁版)

本想大迈步进入前馈神经网络 但是…唉…瞅了几眼,头晕 然后想到之前梳理的奇异值分解、主成分分析、CBOW都没有实战 如果没有实际操作,会有一种浮在云端的虚无感 但是如果要实际操作,我又不想直接调用库包 可是…如果不直接调包,感…...

【Go入门】面向对象

【Go入门】面向对象 前面两章我们介绍了函数和struct,那你是否想过函数当作struct的字段一样来处理呢?今天我们就讲解一下函数的另一种形态,带有接收者的函数,我们称为method method 现在假设有这么一个场景,你定义…...

Asp.Net Core 中使用配置文件

本文参考微软文档:ASP.NET Core 中的配置 ASP.NET Core 中的应用程序配置是使用一个或多个配置程序提供程序执行的。 配置提供程序使用各种配置源从键值对读取配置数据: 设置文件,例如 appsettings.json环境变量Azure Key VaultAzure 应用配…...

深入理解JVM虚拟机第二十四篇:详解JVM当中的动态链接和常量池的作用

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻J…...

QGridLayout

QGridLayout QGridLayout 是 Qt 框架中的一个布局管理器类,用于在窗口或其他容器中创建基于网格的布局。 QGridLayout 将窗口或容器划分为行和列的网格,并将小部件放置在相应的单元格中。可以通过调整行、列和单元格的大小来控制布局的样式和结构。 以…...

万能在线预约小程序系统源码 适合任何行业在线预约小程序+预约到店模式 带完整的搭建教程

大家好啊,源码小编又来给大家分享啦!随着互联网的发展和普及,越来越多的服务行业开始使用在线预约系统以方便客户和服务管理。例如,美发店、健身房、餐厅等都可以通过在线预约系统提高服务效率,减少等待时间&#xff0…...

Leetcode 2935. Maximum Strong Pair XOR II

Leetcode 2935. Maximum Strong Pair XOR II 1. 解题思路2. 代码实现 题目链接:2935. Maximum Strong Pair XOR II 1. 解题思路 这一题又是一个限制条件下找“最大值”的问题,不过这里的最大值是XOR之后的最大值。 而要求XOR之后结果的最大值&#x…...

[直播自学]-[汇川easy320]搞起来(4)看文档 查找设备(续)

2023.11.12 周六 19:05 补充一下关于以太网查找设备,如果设置如下: 然后点击测试: 点击ping 如果设置如下: 测试和ping和上图一样。 这就设计的有点不大好了! 另…...

WebSphere Liberty 8.5.5.9 (四)

WebSphere Liberty 8.5.5.9 (四) [WebSphere Liberty 8.5.5.9]Linux 环境 ~$ unzip wlp-webProfile7-java8-linux-x86_64-8.5.5.9.zip ./ ~$ mkdir wlp-webProfile7-java8-8559 ~$ mv wlp ./wlp-webProfile7-java8-8559启动 WebSphere Liberty 8.5.5.9 服务 ~$ cd /home/tes…...

UE特效案例 —— 角色刀光

目录 一,环境配置 二,场景及相机设置 三,效果制作 刀光制作 地裂制作 击打地面炸开制作 一,环境配置 创建默认地形Landscape,如给地形上材质需确定比例;添加环境主光源DirectionalLight,设…...

11. EPIC定时器

11. EPIC定时器 EPIT定时器简介EPIT定时器结构分析EPIT 定时器相关寄存器EPITx_CREPITx_SREPITx_LR 加载寄存器EPITx_CMPR 比较寄存器EPITx_CNR 计数寄存器 EPIT 配置步骤 例程代码编写bsp_epittimer.hbsp_epittimer.cmain.c EPIT定时器简介 EPIT定时器是增强的周期中断定时器…...

git-bash配置代理

git-bash命令提交执行命令: "git push origin main"时发生错误: “$ git push origin main fatal: unable to access ‘https://github.com/satadriver/locust_server.git/’: Failed to connect to github.com port 443 after 21035 ms: Couldn’t connect to serve…...

【ElasticSearch系列-07】ES的开发场景和索引分片的设置及优化

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…...

JavaWeb Day09 Mybatis-基础操作02-XML映射文件动态SQL

目录 Mybatis动态SQL介绍​编辑 一、案例 ①Mapper层 ②测试类 ③EmpMapper.xml ④结果​ 二、标签 (一)if where标签 ​①EmpMapper.xml ②案例 ③总结 (二)foreach标签 ①SQL语句 ②Mapper层 ③EmpMapper.xml ④…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如&#xff1a…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...