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特点
点对点设计:
ROS通过点对点设计以及服务和节点管理器等机制可以分散由于计算机视觉和语音识别等功能带来的实时计算压力,这种设计能适应服务机器人遇到的挑战。
不依赖编程语言:
ROS支持多种高级编程语言,C++、Python和Lisp语言已经在ROS中实现编译,并得到应用。ROS采用了一种语言中立的接口定义语言(language-neutral interface definition language,IDL )来实现各模块之间的消息传送。
精简与集成:
ROS建立的系统具有模块化的特点,各模块中的代码可以单独编译,而且编译使用的CMake工具使它很容易的就实现精简的理念。ROS基本将复杂的代码封装在库里,只是创建了一些小的应用程序为ROS显示库的功能,这就允许了对简单的代码超越原型进行移植和重新使用。作为一种新加入的有优势,单元测试当代码在库中分散后也变得非常的容易,一个单独的测试程序可以测试库中很多的特点。
ROS不修改用户的主函数,所以代码可以被其他的机器人软件使用。其优点是ROS很容易和其他的机器人软件平台集成。例如,在计算机视觉方面,ROS已经与OpenCV实现集成。在驱动、导航和模拟器方面,ROS已经与Player系统实现集成。在规划算法方面,ROS也已与OpenAVE系统实现集成。
便于测试:
为机器人开发软件比其他软件开发更具挑战性,主要是因为调试准备时间长,且调试过程复杂。况且,因为硬件维修、经费有限等因素,不一定随时有机器人可供使用。ROS提供两种策略来解决上述问题。
精心设计的ROS系统框架将底层硬件控制模块和顶层数据处理与决策模块分离,从而可以使用模拟器替代底层硬件模块,独立测试顶层部分,提高测试效率。
ROS另外提供了一种简单的方法可以在调试过程中记录传感器数据及其他类型的消息数据,并在试验后按时间戳回放。通过这种方式,每次运行机器人可以获得更多的测试机会。例如,可以记录传感器的数据,并通过多次回放测试不同的数据处理算法
开源
强大的库与社区
1.4 ROS版本
为了兼容新版的ubuntu依赖库而不断的更新系统
选择ROS版本一般考虑以下两点:
- 项目要求
- 硬件驱动
ROS版本与Ubuntu版本对应关系
1.5 ROS程序
上图所示是一个ROS程序的基本架构,每个模块是一个Node,每个功能是一个.launch ,将模块进行搭建可以构成一个机器人的控制程序。
其他名词介绍
1. 元操作系统
元操作系统(Meta-Operating System):元操作系统不是一个明确定义的术语,而是一个利用应用程序和分布式计算资源之间的虚拟化层来运用分布式计算资源来执行调度、加载、监视、错误处理等任务的系统。
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学习-ROS简介相关推荐
- (14)ROS学习-ROS工作空间覆盖
所谓工作空间覆盖,是指不同工作空间中,存在重名的功能包的情形,虽然特定工作空间内的功能包不能重名,但是自定义工作空间的功能包与内置的功能包(如ros的小海龟节点)可以重名或者不同的自定义的工作空间中也 ...
- ROS学习笔记(八): ROS通信架构
ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...
- ROS学习笔记八:创建ROS msg和srv
ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...
- 在Jetson Nano上学习ROS的记录(版本Ubuntu18.04,课程来源赵虚左老师的《ROS理论与实践》)第十二章 机器人导航(仿真)
系列文章目录 第一章 ROS空间创建.helloworld的实现.开启多个节点 第二章 话题通信 第三章 服务通信 第四章 参数服务器 第五章 常用指令 第六章 通信机制实操 第七章 ROS通信机制进 ...
- 2017年7月ROS学习资料小结
<孙子兵法·谋攻篇>:"上兵伐谋,其次伐交,其次伐兵,其下攻城:攻城之法为不得已." 任何发生在自己国土上的战争,即便胜利,也饱含屈辱. ----~~~~----Gaz ...
- ROS学习笔记(1):发布者和订阅者
ROS学习笔记(1):publishers and subscribers 1.ros通信简介 2.C++中的类与对象 3.publishers/subscribers 4.常用指令 1.ros通信简 ...
- 转‘ROS学习心得——安装篇——ROS安装’
ROS学习心得--安装篇--ROS安装 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: ROS(Robot Operating System) ...
- ROS学习心得——安装篇——ROS安装
ROS学习心得--安装篇--ROS安装 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: ROS(Robot Operating System) ...
- ROS学习心得——机器人篇——同一局域网下机器人与主机的通信
ROS学习心得--机器人篇--同一局域网下机器人与主机的通信 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 关于这一章我将详细的介绍如何利用 ...
最新文章
- JVM解读-性能调优实例
- FireFox 下通过 javascript 得到表单值
- ScrollView中的LinearLayout不能使用android:layout_heig...
- 英语发音表及读法_如何一个人练习英语口语?
- 动窗口的制作暨CSizingControlBar类的使用说明
- 第三部分:Android 应用程序接口指南---第二节:UI---第六章 对话框
- [摘记]数值方法12——常微分方程组的积分
- Restore IP Address-深度优先遍历DFS
- golang中的常用内置函数
- 【Gym - 100837 F】Controlled Tournament【竞赛树 状态压缩】
- javascript html coffee 编辑器,CoffeeCup HTML Editor (html编辑器)
- The 2014 ACM-ICPC Asia Regional Anshan
- 分布式事务CAP理论
- 3. 用户/管理员注册登录 - 如何使用个人Facebook来登录门户网站
- 前端每日实战:77# 视频演示如何用纯 CSS 创作旗帜飘扬的动画
- 超清西瓜视频真实视频地址获取方法
- Oracle 计算表中的时间与当前时间差
- 【PowerQuery】Excel 自动刷新PowerQuery连接
- 微信微博抖音web授权登录
- 边打包边压缩边传输边解压