ROS学习笔记(一):ROS入门简明介绍(附详细注释)

文章目录

  • 前言
  • ROS操作系统简明概要
  • 1 什么是ROS
  • 2 ROS有什么优点
  • 3 ROS的通信结构
    • 3.1 同步RPC样式通信的服务(services)机制
    • 3.2 异步流媒体数据的话题(topics)机制
    • 3.3 数据存储的参数服务器(Parameter Server)
  • 4 操作系统与历代版本
    • 4.1 支持的操作系统
    • 4.2 历代发行版本
  • 总结


前言

关于Ubuntu与ROS的安装,可以看这两篇。

  • SLAM实操入门(一):在已有WIN10的电脑上安装Ubuntu20.04
  • SLAM实操入门(二):安装ROS Noetic并运行“小乌龟”程序

本系列主要用来记录学习ROS的相关内容,本文为ROS操作系统简明概要。


ROS操作系统简明概要

关于ROS操作系统全面介绍的论文可以通过下方链接下载,建议看看
链接:https://pan.baidu.com/s/12W2rR8xlsId5vExiFVanVQ
提取码:8l1s

1 什么是ROS

  • ROS (Robot Operating System, 机器人操作系统) 是一个适用于机器人的、开源的元操作系统
    注:元操作系统建立在操作系统之上,且允许不同的进程(节点)在运行时相互通信。

  • ROS提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理;

  • ROS 运行时的“蓝图”是一种基于ROS通信基础结构的松散耦合点对点进程网络
    注:松散耦合是一种将系统或网络中的组件互连起来的方法,以便这些组件(也称为元素)在可行的范围内相互依赖。 耦合是指一个元素对另一个元素的直接了解程度。

  • ROS实现了几种不同的通信方式,包括基于同步RPC样式通信的服务(services)机制,基于异步流媒体数据的话题(topics)机制以及用于数据存储的参数服务器(Parameter Server)

2 ROS有什么优点

ROS 的主要目标是为机器人研究和开发提供代码复用的支持,具备以下优点

  • 小型化:ROS尽可能设计的很小且不会封装用户编写的主函数,所以为ROS编写的代码可以轻松的在其它机器人软件平台上使用,因而ROS可以轻松集成在其它机器人软件平台。

  • 使用不依赖ROS的三方库:ROS的首选开发模型都是用不依赖ROS的干净的库函数编写而成。

  • 语言独立:ROS框架可以简单地使用任何的现代编程语言实现,已实现了Python版本,C++版本和Lisp版本。

  • 方便测试:ROS内建一个了叫做rostest的单元/集成测试框架,可以轻松安装或卸载测试模块。

  • 可扩展性:ROS可以适用于大型运行时系统和大型开发进程。

3 ROS的通信结构

ROS学习笔记(一):ROS入门简明介绍(附详细注释)_第1张图片

3.1 同步RPC样式通信的服务(services)机制

采用实时性较强的同步通信方式,基于TCPROS与UDPROS协议,通过请求与应答的方式完成通信(双向的)。节点(Node)关系为多对一(客户端对服务端),常用于逻辑任务处理

3.2 异步流媒体数据的话题(topics)机制

采用实时性较弱的异步通信方式,基于TCPROS与UDPROS协议,通过发布与订阅的方式完成通信(单向的,无应答)。节点(Node)关系为多对多,常用于数据发布任务(如激光雷达数据等)。

3.3 数据存储的参数服务器(Parameter Server)

参数服务器是一个编程框架,用于方便分布式并行程序的编写,其中重点在于对大规模参数的分布式存储和协同的支持。

4 操作系统与历代版本

4.1 支持的操作系统

ROS目前只能在基于Unix内核的平台上运行。
注:在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初;
可以说 UNIX 是操作系统中的"老大哥",后来的 Windows 和 Linux 都参考了 UNIX。
更多关于Linux系统的系统知识可以看这位大佬的博客:Linux教程

ROS的软件主要在Ubuntu和Mac OS X 系统上测试,同时ROS社区仍持续支持Fedora,Gentoo,Arch Linux和其它Linux平台。
注:目前主流的应用部署均在Ubuntu系统中实现,与机器视觉等环境兼容性更强。

与此同时,Windows端口的ROS已经实现,但并未完全开发完成。

4.2 历代发行版本

参考官方提供的发行版本列表

在Ubuntu20.04上安装ROS Noetic Ninjemys可参考下文
SLAM实操入门(二):安装ROS Noetic并运行“小乌龟”程序

ROS学习笔记(一):ROS入门简明介绍(附详细注释)_第2张图片
ROS 发行版是一组版本化的 ROS 包,类似于 Linux 发行版(例如 Ubuntu);

ROS发行版的目的是让开发人员较长期地在相对稳定的代码库上工作
注:一旦发布发行版,官方就会限制对核心包(ros-desktop-full 下的所有内容)的错误修复和非破坏性改进的更改,借此维护环境稳定。


总结

本文对ROS进行了简单的介绍,需要对ROS的通信结构重点理解。

你可能感兴趣的:(ROS学习笔记,自动驾驶,ubuntu,linux,嵌入式硬件)