【古月居《ros入门21讲》学习笔记】05_ROS是什么及其核心概念

news2024/11/18 8:46:17

目录

说明

1. ROS发展史

ROS版本演变

2. ROS是什么

ROS中的通信机制

ROS中的开发工具

ROS中的应用功能

ROS中的生态系统

3. ROS核心概念

节点与节点管理器

通信方式1:话题

通信方式2:服务

话题与服务的区别

参数

文件系统


说明

1. 本系列学习笔记基于B站:古月居 《ROS入门21讲》课程;

2. 本节是整个笔记的第5节,对应视频课程的第6,7节,请自行对应学习;

3. 整个系列笔记基本已经完结,但部分章节仍需润色修改 ,后面会陆续发布,请大家持续关注,创作不易,感谢支持!

1. ROS发展史

ROS系统最早起源于2007年斯坦福大学人工智能实验室的STAIR项目与机器人技术公司Willow Garage的个人机器人项目(Personal Robotics Program)之间的合作,2008年之后由Willow Garage公司推动其发展,2010年正式开源,发布ROS1.0;

2012年组织第一届ROS开发者大会,以后每年一届,会由不同的国家主办;之后Willow Garage经营不善,团队解散,2013年ROS的维护者成立了一个开源机器人基金组织(OSRF)来继续推进ROS的发展,并先后在2014年和2016年发布两款长期支持版(Long Term Support)的ROS(Indigo和Kinetic)和Ubuntu(乌班图)长期支持版保持同步的维护时间,可以得到5年的更新维护。

image-20230615122858867

ROS版本演变

注意:ROS开发对环境的要求极高,ROS的版本需要与Ubuntu的版本号对应

ROS版本ubuntu版本
Melodicubuntu18.04
Noeticubuntu20.04

ROS1版本

ROS2版本

2. ROS是什么

ROS是机器人操作系统英文全称(Robot Operating System, ROS)的缩写,一种用于编写机器人机器人软件程序的灵活框架,它包含了大量工具软件、库代码和约定协议,旨提高机器人研发中的软件复用率,减少重复造轮子,使用ros开发机器人使开发机器人的难度和成本大大降低,同时他也为开发人员提供了一个平台。

ROS虽然叫做操作系统, 但并非Windows、 Mac那样通常意义上的操作系统, 它是连接操作系统和你开发的ROS应用程序之间的一个中间件, 基于ROS的应用程序之间建立起了沟通的桥梁, 所以也是运行在Linux上的运行环境, 在这个环境上, 机器人的感知、 决策、 控制算法可以得到很好的组织和运行。

image-20230615130134064

ROS = 通信机制 + 开发工具 + 应用功能 + 生态系统

ROS中的通信机制

ROS中的核心通信机制就是一个计算图(Computational Graph)

image-20230615130508465

ROS中的开发工具

ROS提供了大量的工具,如:仿真、数据可视化、图形界面、数据记录

image-20230615144458256

ROS中的应用功能

ROS提供了广泛的库文件可以实现机器人的控制、规划、视觉、建图等功能

image-20230615144907844

ROS中的生态系统

ROS的支持与发展依托着一个强大的社区

image-20230615145230519

ROS社区 内的功能包数量、关注度、相关文章均呈指数级上涨

image-20230615145506126

3. ROS核心概念

节点与节点管理器

image-20230615162220223

  • 节点之间互相并不知道彼此的存在,都是由ROS Master帮助它们互相之间建立连接的

通信方式1:话题

image-20230615163627505

  • 话题通信方式是单向数据的传输;

  • 详细的定义就是消息;

  • Message:定义数据的类型,具有一定的数据结构定义;

  • 传输数据的管道就是话题;

  • 话题的消息的接口使用 .msg 文件定义

通信方式2:服务

image-20230615164616465

  • 服务通信方式是双向的;

  • 类似web访问机制;

  • 服务的数据内容用 .srv 文件定义

话题与服务的区别

image-20230615165732800

参数

image-20230615170005913

  • 存储在ROS Master服务器,节点可以对参数进行存储、检索、更新等操作;

文件系统

image-20230615170526745

  • 文件系统其实也就是代码的结构

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

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

相关文章

智能优化算法应用:基于帝国主义竞争算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于帝国主义竞争算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于帝国主义竞争算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.帝国主义竞争算法4.实验参数设定5.算…

php爬虫实现把目标页面变成自己的网站页面

最近又被烦的不行,琐事不断,要是比起懒来一个人比一个人懒,但是懒要转换成动力啊,能让自己真正的偷懒,而不是浪费时间。每天还是需要不断的学习的,才能更好的提高效率,把之前做的简单小功能爬虫…

计算机网络(一)| 概述 因特网 性能 协议基本

文章目录 1. 因特网组成1.1 四元素组成1.2 二元素组成1.3 核心部分 2.计算机网路的功能3. 几种不同类别的网络4 性能指标5 网路协议5.1网络体系结构 6 PDU 互联网(或因特网)之所以能够向用户提供服务,是因为互联网具有两个重要基本特点 连通性…

Wireshark之Intro, HTTP, DNS

源码地址👇 moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES: 《计算机网络-自顶向下方法(原书第6版)》编程作业,Wireshark实验文档的翻译和解答。 (github.com) 目录 🌼Introduce 🎧前置 🎧过…

java:IDEA中Maven常用操作

文章目录 背景1、Reload All Maven Projects:2、Generate Sources and Update Folders For All Projects:3、Download Sources and/or Documentation:4、Add Maven Projects5、Run Maven Build6、Execute Maven Goal7、Toggle Offline Mode8、Toggle Skip Tests Mode9、Collaps…

10分钟的时间,带你彻底搞懂JavaScript数据类型转换

前言 📫 大家好,我是南木元元,热衷分享有趣实用的文章,希望大家多多支持,一起进步! 🍅 个人主页:南木元元 目录 JS数据类型 3种转换类型 ToBoolean ToString ToNumber 对象转原…

Go语言多线程爬虫万能模板:实现高效数据采集

随着互联网的快速发展,网络爬虫已经成为数据采集的重要工具。Go语言作为高性能编程语言之一,具有出色的并发性能和丰富的网络库,非常适合用于编写多线程爬虫。本文将介绍一个基于Go语言的多线程爬虫万能模板,并阐述其设计思路、核…

精密制造ERP系统包含哪些模块?精密制造ERP软件是做什么的

不同种类的精密制造成品有区别化的制造工序、工艺流转、品质标准、生产成本、营销策略等,而多工厂、多仓库、多车间、多部门协同问题却是不少精密制造企业遇到的管理难题。 有些产品结构较为复杂,制造工序繁多,关联业务多,传统的…

ruoyi-vue 整合EMQX接收MQTT协议数据

EMQX安装完成后,需要搭建客户端进行接收数据进一步对数据处理,下面介绍基于若依分离版开源框架来整合EMQX方法。 1.application.yml 添加代码 mqtt:hostUrl: tcp://localhost:1883username: devpassword: devclient-id: MQTT-CLIENT-DEVcleanSession: …

leetcode 15. 三数之和(优质解法)

代码&#xff1a; class Solution {public static List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);List<List<Integer>> listsnew ArrayList<>();int lengthnums.length;for(int i0;i<length-3;){int lefti1;int rightlength…

springboot基础配置及maven运行

目录 1、spring快速开始&#xff1a; 2、通过idea工具打开导入包 3、maven打包 1、springboot快速开始&#xff1a; 环境依赖&#xff1a;jdk17 Spring | Quickstart spring初始化包下载&#xff1a; 点击generate&#xff0c;下载包 2、通过idea工具打开导入包 我之前写了…

RK3568 android 13 内置 google GMS服务

需求&#xff1a;Android 系统在国外使用安装app很多需要gms服务&#xff0c;否则无法正常使用&#xff0c;所以出厂前必须要把GMS包集成进系统 1.下载gms包https://download.csdn.net/download/qq_46524402/88136401 2.解压gms包 并放到Android SDK根目录的vender文件夹下 3…

内网渗透隧道技术一netsh

隧道技术 百度百科&#xff1a; 网络隧道技术指的是利用一种网络协议来传输另一种网络协议&#xff0c;它主要利用网络隧道协议来实现这种功能。网络隧道技术涉及了三种网络协议&#xff0c;即网络隧道协议、隧道协议下面的承载协议和隧道协议所承载的被承载协议 在网络安全中…

通往数百万量子比特的商业化之路——

在已知物理定律的限制下&#xff0c;我们能制造出的最好的计算机是什么&#xff1f;争夺这一头衔的是通用、容错和可扩展的量子计算机。 这台建立在量子理论基础上的机器能够运行任何量子算法&#xff0c;检测并纠正任何可能危及计算的错误&#xff0c;并容纳大量量子比特。 当…

开发电脑软件学什么语言?哪些语言最适合?

随着信息技术的不断发展&#xff0c;电脑软件已经成为人们日常生活和工作中不可或缺的一部分&#xff0c;许多人都希望学习如何开发电脑软件&#xff0c;而选择一种合适的编程语言是成功的关键&#xff0c;下面将介绍几种最适合开发电脑软件的编程语言&#xff0c;以及一些基础…

自动提交日志脚本(2)状态机管理

使用状态机作为管理 """ filename:statusHandle.py author:LinXingNan time:2023-11-27 """ import os from enum import Enumimport configHandle import emailReport import logHandle import timeHandle import logging from datetime impo…

flask中路由route根据字典ID展示部分内容,字典名展示全部内容

from flask import Flask, jsonify , request,render_template,app Flask(__name__)app.config[JSON_AS_ASCII] Falsebooks [{"id": 1, "name": 三国演义},{"id": 2, "name": 水浒传},{"id": 3, "name": 西游记…

【UE】热成像效果

效果 步骤 1. 新建一个空白项目&#xff0c;勾选“光线追踪”选项 2. 添加一个第一人称游戏内容包到项目 3. 打开第一人称角色蓝图“BP_FirstPersonCharacter”&#xff0c;添加一个后期处理组件 在事件图表中设置通过按键N来切换不同的后期处理效果 将后期处理设置引脚提升为…

后端Long型数据传到前端js后精度丢失的问题

假设一个场景&#xff0c;MybatisPlus的雪花算法生成long类型主键ID&#xff0c;存入数据库&#xff0c;前端获取到数据后&#xff0c;要执行一个更新操作&#xff08;updateById&#xff09;&#xff0c;但这时会出现无法成功更新的情况&#xff01;这是因为前端在长度大于17位…

TCP/IP封装

数据如何通过网络发送&#xff1f;为什么 OSI 模型需要这么多层&#xff1f; 下图显示了数据在网络传输时如何封装和解封装。 步骤1&#xff1a;当设备A通过HTTP协议通过网络向设备B发送数据时&#xff0c;首先在应用层添加HTTP头。 步骤2&#xff1a;然后将TCP或UDP标头添加…