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目前为止,还是一个科学问题,如果连稳定的特征点都没有办法实现的话,那本身还有很大的应用门槛。所以,不管是哪一种办法,要想真正落地,有必要最大程度解决特征点稳定性的问题,只有解决了这些问题,才有进一步扩展和应用的可能性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

U-Mail邮件系统三大安全措施,防止信息泄露!

在当信息化高速发展的今天,国内很多企业业务流程对OA系统、CRM系统、ERP系统、邮件系统等办公应用依赖度越来越高。这些办公应用给企业带来便利的同时也伴随着越来越多的信息安全问题,而在日常的办公场景中,由于内部员工非法泄漏或黑客入侵导…

Flowable 外部表单

内置表单需要在每个节点中去配置,当如果多个节点使用同一套表单属性就要配置多次比较麻烦,修改的时候也要修改多次,外部表单可以定义一次,然后其它节点都去引用同一个表单属性。 外部表单需要定义一个.form后缀的文件。 外部表单…

运行pytest时,给出警告 PytestConfigWarning: Unknown config option: result_log

问题:在ini中配置了一些选项后运行pytest,会出现下面的警告信息 解决:在ini中增加配置:addopts -p no:warnings

【Git】的分支与版本

前言 Git 的分支是指将代码库从某一个特定的提交记录开始的一个独立的开发线,也可以理解为是一种代码开发的并行方式。分支在 Git 中的使用非常广泛,它可以让多人在同一个代码库中并行开发,同时也能够很方便地进行代码版本控制和管理。 Git …

Python 多进程多线程

多任务 并发:在一段时间内交替执行多个任务 并行:在一段时间内同事一起执行多个任务 进程 Process 进程:一个程序运行在系统之上, 便称这个程序喂一个运行进程,并分配进程ID方便系统管理。操作系统进行资源分配和调…

【多线程】

文章目录 概念一、线程的生命周期图二、线程的创建方式一方式二线程API线程优先级sleep阻塞守护线程多线程并发安全问题 总结 概念 线程:一个顺序的单一的程序执行流程就是一个线程。代码一句一句的有先后顺序的执行。多线程:多个单一顺序执行的流程并发运行。造成"感官上…

JavaWeb Day10 案例 准备工作

目录 一、需求说明 二、环境搭建 (一)数据库 (二)后端 ①controller层 1.DeptController.java 2.EmpController.java ②mapper层 1.DeptMapper.java 2.EmpMapper.java ③pojo层 1.Dept.java 2.Emp.java 3.Result.ja…

Python之函数进阶-生成器函数

Python之函数进阶-生成器函数 生成器函数 Python中有2种方式构造生成器对象: 生成器表达式生成器函数 函数体代码中包含yield语句的函数与普通函数调用不同,生成器函数调用返回的是生成器对象 普通函数调用,函数会立即执行直到执行完毕。 生成器函数…

linux gdb 调试 常见调试命令介绍+总结

1.调试前准备 -g gcc arcg.c -g -oO -o app //必须添加-g 2.调试 gdb gdb app 3.常见调试命令 set args 1 2 3 4 5 6 //设置参数 show args //查看参数 3.1执行程序 1.start2. run gdb app set args 1 2 3 4 5 start //执行一行 c //继续执行 q…

【Git】Git分支与应用分支Git标签与应用标签

一,Git分支 1.1 理解Git分支 在 Git 中,分支是指一个独立的代码线,并且可以在这个分支上添加、修改和删除文件,同时作为另一个独立的代码线存在。一个仓库可以有多个分支,不同的分支可以独立开发不同的功能&#xff0…

【yolov5】onnx的INT8量化engine

GitHub上有大佬写好代码,理论上直接克隆仓库里下来使用 git clone https://github.com/Wulingtian/yolov5_tensorrt_int8_tools.git 然后在yolov5_tensorrt_int8_tools的convert_trt_quant.py 修改如下参数 BATCH_SIZE 模型量化一次输入多少张图片 BATCH 模型量化…

操作系统(二)内存管理的基础知识

文章目录 前言内存管理地址空间与地址生成连续内存分配内存碎片连续分配算法碎片整理 非连续内存分配虚拟内存管理虚拟内存地址内存分段内存分页段页式内存管理虚拟内存的覆盖技术虚拟内存的交换技术 缺页异常内存页面置换算法局部页面置换算法Belady现象全局页面置换算法抖动和…

Mybatis-Plus入门

Mybatis-Plus入门 MyBatis-Plus 官网:https://mp.baomidou.com/ 1、简介 MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、 提高效率而生。 https://github.com/baomidou/mybatis-p…

【MySQL系列】第二章 · SQL(上)

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

深入理解强化学习——多臂赌博机:知识总结

分类目录:《深入理解强化学习》总目录 我们在《深入理解强化学习——多臂赌博机》系列文章中介绍了几种平衡试探和开发的简单方法。 ϵ − \epsilon- ϵ−贪心方法在一小段时间内进行随机的动作选择,而UCB方法虽然采用确定的动作选择,却可以通…

Leetcode100128. 高访问员工

Every day a Leetcode 题目来源:100128. 高访问员工 解法1:模拟 把名字相同的员工对应的访问时间(转成分钟数)分到同一组中。 对于每一组的访问时间 accessTime,排序后,判断是否有 accessTime[i] - ac…

吃透 Spring 系列—Web部分

目录 ◆ Spring整合web环境 - Javaweb三大组件及环境特点 - Spring整合web环境的思路及实现 - Spring的web开发组件spring-web ◆ web层MVC框架思想与设计思路 ◆ Spring整合web环境 - Javaweb三大组件及环境特点 在Java语言范畴内,web层框架都是基于J…

win环境Jenkins部署前端项目

今天分享win环境Jenkins部署前端vue项目,使用的版本jenkins版本Jenkins 2.406版本。 前提是jenkins安装好了,通用配置已经配置好了,可以参考上两篇博客。 1、前端项目依赖nodejs,需要安装相关插件 点击进入 安装成功标准 jenki…

【Vue3】scoped 和样式穿透

我们使用很多 vue 的组件库&#xff08;element-plus、vant&#xff09;&#xff0c;在修改样式的时候需要进行其他操作才能成功更改样式&#xff0c;此时就用到了样式穿透。 而不能正常更改样式的原因就是 scoped 标记。 scoped 的渲染规则&#xff1a; <template>&l…

如何在ModelScope社区魔搭下载所需的模型

本篇文章介绍如何在ModelScope社区下载所需的模型。 若您需要在ModelScope平台上有感兴趣的模型并希望能下载至本地&#xff0c;则ModelScope提供了多种下载模型的方式。 使用Library下载模型 若该模型已集成至ModelScope的Library中&#xff0c;则您只需要几行代码即可加载…