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

2023-11-30 14:15

本文主要是介绍【古月居《ros入门21讲》学习笔记】05_ROS是什么及其核心概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

说明

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

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

这篇关于【古月居《ros入门21讲》学习笔记】05_ROS是什么及其核心概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/437330

相关文章

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

史上最全MybatisPlus从入门到精通

《史上最全MybatisPlus从入门到精通》MyBatis-Plus是MyBatis增强工具,简化开发并提升效率,支持自动映射表名/字段与实体类,提供条件构造器、多种查询方式(等值/范围/模糊/分页... 目录1.简介2.基础篇2.1.通用mapper接口操作2.2.通用service接口操作3.进阶篇3

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核