ROS学习-ROS简介

文章目录

  • 1.ROS
    • 1.1 ROS概念
    • 1.2 ROS特征
    • 1.3 ROS特点
    • 1.4 ROS版本
    • 1.5 ROS程序
  • 其他名词介绍
      • 1. 元操作系统
      • 2. IDL 接口定义语言
  • 一些网站

1.ROS

1.1 ROS概念

ROS(Robot Operating System,机器人操作系统)

ROS 是一个适用于机器人的开源的元操作系统,提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。相比于普通的OS,有着可用于异构硬件的特性。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面 ROS 相当于一种 “机器人框架(Robot frameworks)。此外,它还以库的形式提供了机器人应用程序所需的多数不同类型的硬件之间的数据传输/接收、调度和错误处理等功能。这个概念也被称为中间件(Middleware)或软件框架(Software framework)

1.2 ROS特征

ROS 的主要目标是为机器人研究和开发提供代码复用的支持

  • 分布式进程:它以可执行进程的最小单位(节点,Node)的形式进行编程,每个进程独立运行,并有机的收发数据
  • 功能包单位管理:以功能包的形式管理着多个具有相同目的的进程,所以开发和使用起来很容易,并且很容易共享、修改和重新发布
  • 公共存储库:每个功能包都将其功能包公开给开发人员首选的公共存储库(eg. GitHub)。并标识许可证
  • API类型:使用ROS开发程序时,ROS被设计为可以简单地通过调用API将其加载到其使用的代码中

1.3 ROS特点

  1. 点对点设计:

    ROS通过点对点设计以及服务和节点管理器等机制可以分散由于计算机视觉和语音识别等功能带来的实时计算压力,这种设计能适应服务机器人遇到的挑战。

  2. 不依赖编程语言:

    ROS支持多种高级编程语言,C++、Python和Lisp语言已经在ROS中实现编译,并得到应用。ROS采用了一种语言中立的接口定义语言(language-neutral interface definition language,IDL )来实现各模块之间的消息传送。

  3. 精简与集成:

    ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的CMake工具使它很容易的就实现精简的理念。ROS基本将复杂的代码封装在库里,只是创建了一些小的应用程序为ROS显示库的功能,这就允许了对简单的代码超越原型进行移植和重新使用。作为一种新加入的有优势,单元测试当代码在库中分散后也变得非常的容易,一个单独的测试程序可以测试库中很多的特点。

    ROS不修改用户的主函数,所以代码可以被其他的机器人软件使用。其优点是ROS很容易和其他的机器人软件平台集成。例如,在计算机视觉方面,ROS已经与OpenCV实现集成。在驱动、导航和模拟器方面,ROS已经与Player系统实现集成。在规划算法方面,ROS也已与OpenAVE系统实现集成。

  4. 便于测试:

    为机器人开发软件比其他软件开发更具挑战性,主要是因为调试准备时间长,且调试过程复杂。况且,因为硬件维修、经费有限等因素,不一定随时有机器人可供使用。ROS提供两种策略来解决上述问题。

    • 精心设计的ROS系统框架将底层硬件控制模块和顶层数据处理与决策模块分离,从而可以使用模拟器替代底层硬件模块,独立测试顶层部分,提高测试效率。

    • ROS另外提供了一种简单的方法可以在调试过程中记录传感器数据及其他类型的消息数据,并在试验后按时间戳回放。通过这种方式,每次运行机器人可以获得更多的测试机会。例如,可以记录传感器的数据,并通过多次回放测试不同的数据处理算法

  5. 开源

  6. 强大的库与社区
    ROS学习-ROS简介_第1张图片

1.4 ROS版本

为了兼容新版的ubuntu依赖库而不断的更新系统

选择ROS版本一般考虑以下两点:

  • 项目要求
  • 硬件驱动

ROS版本与Ubuntu版本对应关系

ROS学习-ROS简介_第2张图片

1.5 ROS程序

ROS学习-ROS简介_第3张图片

上图所示是一个ROS程序的基本架构,每个模块是一个Node,每个功能是一个.launch ,将模块进行搭建可以构成一个机器人的控制程序。

其他名词介绍

1. 元操作系统

元操作系统(Meta-Operating System):元操作系统不是一个明确定义的术语,而是一个利用应用程序和分布式计算资源之间的虚拟化层来运用分布式计算资源来执行调度、加载、监视、错误处理等任务的系统。

ROS学习-ROS简介_第4张图片

2. IDL 接口定义语言

接口定义语言(IDL)不是一种编程语言,而是一种描述由对象实现的接口的描述语言。IDL文件类似于C++头文件。

一些网站

ROS官网:ROS http://wiki.ros.org/ROS

ROS介绍:https://www.oschina.net/p/ros?hmsr=aladdin1e1

ROS介绍:https://blog.csdn.net/zytgg123456/article/details/110846751

ROS介绍:https://blog.csdn.net/qq_25267657/category_8406377.html

IDL介绍:https://www.codeproject.com/Articles/19605/Basics-of-an-IDL-file

你可能感兴趣的:(ROS学习,学习,机器人,人工智能)