SLAM从入门到精通(ROS的使用)

news2025/1/6 19:10:06

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

        ros,全称robot operating system。说它是操作系统,其实有点夸大了。一般认为,它是提供了robot处理的统一框架,有点类似os,但是和真实的os差的有点远。当前,ros和ubuntu的版本是一一匹配的。说它是框架,从驱动上说,目前大多数传感器厂商都会统一的ros设备驱动接口。从应用上说,它就是一个上层的分布式消息处理框架。从算法模块上说,它自身集成了很多的算法包,大家可以对这些算法继续迭代和优化,也可以通过一定的方式放到实际项目中,这些都是ok的。所以,ros本身无所谓好坏,就看用的人是如何处理的。对我们自己,要善于用好这些工具,而不是去夸大或者贬损,最主要的是,只会用算法包或者简单调参,这肯定是不行的。

1、ros的统一接口

        这个接口,包括两个部分。一个是软件接口,一个是硬件接口。目前robot使用的传感器有很多种,imu、lidar、odom、camera、3d camera、voice recorder等等,只要有需求,都可以集成到ros平台上面来。另外一个接口则是软件接口。这是一个分散的结构。它的核心是roscore,所有的程序都通过roscore来进行信息的交流。如果希望发布这个消息,就用publish公布出去;如果希望订阅这个消息,就用subscribe订阅一下即可。

2、ros命令

        作为一个完整的框架,ros不仅提供了统一的接口,而且还搭配了很多的第三方命令。有了这些命令,我们不仅可以对程序进行加载和执行,还能对ros系统进行分析和监控。命令主要有三种,第一种,ros shell命令,比如roscd、rosls等等;第二种,ros 执行命令,比如roscore、rosrun、roslaunch等等;第三种,ros信息命令,比如rosnode、rostopic、rosservice等等。有了这些命令,我们开发和验证程序就更加容易和方便了。

3、第三方算法包

        这个第三方算法包,可能是很多人使用ros的根本原因。定位导航的同学可以直接选择gmapping和amcl包。搭配参数修改,即使不是特别了解slam的同学,也可以在很短的时间内搭配出一个slam系统。做机械臂的同学也一样,用moveit包就可以快速达到自己的目的。至于视觉,用opencv的人比较多,在ros里面使用,就相当于用opencv库来专门处理机器人视觉,有点意思的。

        但是这个第三方包只是解决有无的问题,它既不能帮你发论文,也没法做项目。只能是说,他帮我们完成了0-1的工作,不用重复造轮子了。真正要落地,还是要优化算法、优化硬件的。

4、调试辅助工具

        除了传统的log、控制台等工具可以调试外,ros本身还提供了很多的工具。比如rviz工具,它可以帮助我们是实时生成的slam地图;再比如tf工具,可以帮我们快速实现坐标系的转变;还比如gazebo工具,用它来搭建仿真环境,这是最合适不过了。所以,如果要是学习的话,即使身边没有真实的机器人,也可以通过仿真工具、辅助软件来快速学习的。

5、真实环境的搭建

        仿真做久了,还是希望用真实的设备练练手,毕竟真实环境还是要比仿真环境复杂得多。这个时候就可以去电商网站购买一个真实的机器人。ros本身是支持分布式系统的,所以机器人上运行一个ros环境,个人电脑也运行一个ros环境,这样通过无线wifi,他们就可以通过网络实现局域网内的自由数据传输,整个ros系统就活起来了、机器人也可以动起来了。

6、ros系统 & 上层app

        ros本身是一个框架和生态,他虽然有很多的工具和算法包,但是能做出什么产品、解决客户什么具体问题,还有赖于每个人自己的思考。所以单独的ros不一定能构成商品,还需要搭配上层应用,比如是去巡检、扫地、搬货、堆叠,还是什么其他用途,这些都需要自己去好好思考的。

其他

        本身ros的架构还是很优秀的,它告诉我们一个合适的架构应该是什么样的,该提供哪些功能,又不该做哪些事情,这些都是很有借鉴意义的。

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

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

相关文章

华为OD机试 - 英文输入法(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷)》…

网络编程day040830

目录 select的TCP服务器 代码 完成select的TCP客户端 代码 结果 思维导图 select的TCP服务器 代码 #include<myhead.h>//do-while只是为了不让花括号单独存在&#xff0c;并不循环 #define ERR_MSG(msg) do{\fprintf(stderr,"%d:",__LINE__);\perror(ms…

Python代码雨

系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心https://want…

JAVA设计模式第七讲:设计模式在 Spring 源码中的应用

设计模式&#xff08;design pattern&#xff09;是对软件设计中普遍存在的各种问题&#xff0c;所提出的解决方案。本文以面试题作为切入点&#xff0c;介绍了设计模式的常见问题。我们需要掌握各种设计模式的原理、实现、设计意图和应用场景&#xff0c;搞清楚能解决什么问题…

2022年12月 C/C++(八级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:生理周期 人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因…

若依前端vue设置子路径

若依前端vue设置子路径 说明&#xff1a;本文档中以前后端分离版为例&#xff0c;版本为:3.8.6 一设置变量 在.env.development和.env.production 中定义一个变量如VUE_APP_PROJECT_IDENTIFIER # 项目标识字符 VUE_APP_PROJECT_IDENTIFIER admin二引用路径变量 ${process…

在PHP8中统计数组元素个数-PHP8知识详解

在php8中&#xff0c;统计数组元素的个数&#xff0c;有下面几个函数&#xff1a;使用count()函数统计数组元素个数、使用sizeof()函数统计数组元素个数。还讲到了&#xff0c;使用array_count_values()函数来统计数组中每个元素出现的次数。 1、使用count()函数统计数组元素个…

医疗知识图谱 neo4j

开源项目&#xff1a; https://github.com/liuhuanyong/QASystemOnMedicalKG 一.效果 二.需要安装&#xff1a; pip install pyahocorasick pip install py2neo 三.需要修改&#xff1a; 需要改的点&#xff1a; 1.改连接的方式 2.改读文件的方式 MedicalGraph 运行&am…

读懂AUTOSAR,之CAN Driver L-PDU发送和“重入问题”

1. L-PDU发送 L-PDU传输时,Can模块将L-PDU内容ID和数据长度转换为硬件特定格式(如果需要),并触发传输。 [SWS_Can_00059] CAN到内存的数据映射定义为首先发送的CAN数据字节为数组元素0,最后发送的CAN数据字节为数组元素7或63(在CAN FD的情况下)。(SRS_SPAL_12063)[S…

Android图形-Hardware Composer HAL

目录 一、引言 二、概览 三、实现HWC 3.1 为什么是HWC&#xff1f; 3.2 HWC的支持需求 3.3 HWC的实现思路 3.4 HWC的基元 3.5 HIDL接口 3.6 函数指针 3.7 图层和屏幕句柄 3.8 屏幕合成操作 3.9 多个屏幕 3.10 虚拟屏幕合成 3.10.1 模式 3.10.2 输出格式 3.11 同…

房地产微传单制作秘笈

随着科技的快速发展&#xff0c;传统的宣传方式已经无法满足现代人的需求。而电子传单作为一种新型的宣传方式&#xff0c;已经逐渐受到人们的关注和喜爱。特别是对于房地产行业来说&#xff0c;电子传单更是成为了一种节省成本、快速传播的利器。 为了满足各行业的宣传需求&am…

Python接口自动化封装导出excel方法和读写excel数据

一、首先需要思考&#xff0c;我们在页面导出excel&#xff0c;用python导出如何写入文件的 封装前需要确认python导出excel接口返回的是一个什么样的数据类型 如下&#xff1a;我们先看下不对返回结果做处理&#xff0c;直接接收数据类型是一个对象&#xff0c;无法获取返回值…

学单片机有前途吗?

学单片机有前途吗? 个人认为学习任何一门技术都比不学的强&#xff0c;针对学单片机有前途吗?那么比较对象当然就是在整个IT行业做对比。因此我们可以从职业前景、钱景、这几方面综合考量。 学单片机有前途吗?我觉得重要的一点就是是否适合职业生涯发展&#xff0c;总说程序…

STM32F4的USB Slave驱动移植详细步骤及问题解决

文章目录 1、USB库下载2、移植&#xff08;slave&#xff09;2.1、工程准备2.2、USB库准备 2.3、移植1、新建USB相关文件夹2、拷贝3、添加USB相关代码4、添加头文件路径5、修改相关内容1、修改usb_conf.h2、定义全局宏USE_USB_OTG_FS3、修改usbd_storage_msd.c4、修改usbd_usr.…

【蒸汽冷凝器型号和PI控制】具有PID控制的蒸汽冷凝器的动力学模型(MatlabSimulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

离线数仓同步数据3

业务数据_增量表数据同步 1&#xff09;Flume配置概述2&#xff09;Flume配置实操3&#xff09;通道测试4&#xff09;编写Flume启停脚本 1&#xff09;Flume配置概述 Flume需要将Kafka中topic_db主题的数据传输到HDFS&#xff0c;故其需选用KafkaSource以及HDFSSink&#xff…

mysql索引条件下推 、 count(*)、count(1)、IN 、exists等

索引下推 Index Condition Pushdown(ICP)&#xff0c;是一种在存储引擎层使用索引过滤数据的优化方式 如果没有ICP&#xff0c;存储引擎会遍历以定位基表中的行&#xff0c;并将他们返回给mysql服务器&#xff0c;有mysql 服务器评估where 后面的条件是否保留行。启用ICP&…

Debian11安装PostgreSQL+PostGIS+pgRouting ,链接Navicat

船新版本&#xff0c;遵循官网教程 1 准备一个Debian11系统2 从官网安装Postgres2.1 安装Postgres2.2 修改Postgres密码2.3 配置Postgres远程访问 3 安装Postgis、pgRouting4 链接Navicat 1 准备一个Debian11系统 2 从官网安装Postgres 2.1 安装Postgres 1 进入Postgre的官网…

GE IC693CPU374CPU模块

处理能力&#xff1a;IC693CPU374 CPU 模块通常具有高性能的处理器&#xff0c;用于执行复杂的控制逻辑和数据处理任务。 内存容量&#xff1a;它通常具有内置的RAM和Flash存储器&#xff0c;用于存储控制程序、数据和配置信息。 多通信接口&#xff1a;该模块通常具有多个通…