ROS笔记(1) ROS简介

  • 1. ROS的起源
  • 2. ROS的概述
  • 3. ROS的目的
  • 4. ROS的特点
  • 5. ROS的版本

1. ROS的起源

ROS系统是起源于2007年斯坦福大学人工智能实验室的项目与机器人技术公司Willow Garage的个人机器人项目(Personal Robots Program)之间的合作
2008年之后就由Willow Garage来进行推动


2010年Willow Garage公司发布了开源机器人操作系统ROS(robot operating system),很快在机器人研究领域展开了学习和使用ROS的热潮。


2. ROS的概述

ROS是开源的,是用于机器人的一种后操作系统,或者说次级操作系统
它提供类似操作系统所提供的功能,包含硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,它也提供一些工具程序和库用于获取、建立、编写和运行多机整合的程序


ROS不是传统的操作系统,如Windows、Linux和Android
反而是在利用现有的操作系统


使用ROS前需要先安装诸如Ubuntu的Linux发行版操作系统,之后再安装ROS
现在win10也开始逐步支持安装ROS


3. ROS的目的

首要目的是在机器人研发领域提高代码复用率,建立一个在全球范围内协作开发机器人软件的环境

ROS是一种分布式处理框架(又名Nodes
这使可执行文件能被单独设计,并且在运行时松散耦合
这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发

ROS还支持代码库的联合系统,使得协作亦能被分发
这种从文件系统级别到社区一级的设计让独立地决定发展和实施工作成为可能
上述所有功能都能由ROS的基础工具实现


4. ROS的特点

ROS的运行架构:一种使用ROS通信模块实现模块间P2P的松耦合的网络连接的处理架构
它执行若干种类型的通讯,包括基于服务的同步RPC(远程过程调用)通讯、基于Topic的异步数据流通讯,还有参数服务器上的数据存储
但是ROS本身并没有实时性

  • 分布式进程
    ROS采用了分布式的框架
    通过点对点的设计让机器人的进程可以分别运行,便于模块化的修改和定制,提高了系统的容错能力
    它以可执行进程的最小单位(节点Node)的形式进行编程,每个进程独立运行,并有机地收发数据

  • 功能包单位管理
    由于它以功能包的形式管理着多个具有相同目的的进程
    所以开发和使用起来很容易,并且很容易共享、修改和重新发布

  • 多种语言支持
    ROS支持多种编程语言
    C++、Pyhton和已经在ROS中实现编译,是目前应用最广的ROS开发语言
    Lisp、C#、Java等语言的测试库也已经实现
    为了支持多语言编程,ROS采用了一种语言中立的接口定义语言来实现各模块之间消息传送
    通俗的理解就是,ROS的通信格式和用哪种编程语言来写无关,它使用的是自身定义的一套通信接口

  • 开源社区
    ROS具有一个庞大的社区ROS WIKI(http://wiki.ros.org/)
    当前使用ROS开发的软件包已经达到数千万个,相关的机器人已经多达上千款
    此外,ROS遵从BSD协议,对个人和商业应用及修改完全免费


5. ROS的版本

ROS1.0版本发布于2010年,基于PR2机器人开发了一系列机器人相关的基础软件包
随后ROS版本迭代频繁,目前已经发布到了 Melodic


虽然目前使用人数最多的是KineticIndigo这两个版本
但官网现在(2019.5.20)推荐的是 Melodic 版本
不过一般情况下,不同版本的文件移植也是可以的

ROS 版本 Ubuntu版本
Melodic(推荐) Ubuntu 18.04
Lunar Ubuntu 17.04
Kinetic Ubuntu 16.04
Jade Ubuntu 15.04
Indigo Ubuntu 14.04

ROS的每个版本的名称的首字母是按照英文字母的顺序来制定
并将乌龟Turtle作为图标


参考:

ROS官方wiki
古月居
ROS机器人开发实践 (书籍)


谢谢!

ROS笔记(1) ROS简介相关推荐

  1. ROS笔记(16) ArbotiX

    ROS笔记(16) ArbotiX 1. ArbotiX简介 2. 配置节点 3. 配置控制器 4. 运行仿真 1. ArbotiX简介 车模都搭好了,现在需要让小车动起来 此时需要一些工具 Arbo ...

  2. ROS笔记(15) Xacro

    ROS笔记(15) Xacro 1. Xacro简介 2. 常量定义 3. 数学公式 4. 宏定义 5. 文件引用 6. 显示模型 7. 添加模型 1. Xacro简介 重新看hhbot的urdf模型 ...

  3. ROS笔记(14) URDF

    ROS笔记(14) URDF 1. URDF简介 2. link 3. joint 4. robot 5. gazebo 6. 解析 7. 显示 1. URDF简介 统一机器人描述格式,Unified ...

  4. ROS笔记(13) 记录与回放数据

    ROS笔记(13) 记录与回放数据 1. rosbag简介 2. 记录数据 3. 查看记录的数据 4. 回放数据 1. rosbag简介 在使用ROS系统的时候,可能会遇到这样的需求: 重现机器人在的 ...

  5. ROS笔记(17) Gazebo

    ROS笔记(17) Gazebo 1. 简介 2. 运行Gazebo 3. 构建仿真环境 1. 简介 Gazebo是一款3D动态模拟器,能够在复杂的室内和室外环境中准确有效地模拟机器人群 提供高保真度 ...

  6. ROS笔记(12) Rviz

    ROS笔记(12) Rviz 1. 简介 2. 运行rviz 3. 数据可视化 4. 插件扩展机制 1. 简介 机器人系统中存在大量数据,这些数据在计算过程中往往都处于数据形态 比如图像数据中0~25 ...

  7. ROS笔记(11) Qt工具箱

    ROS笔记(11) Qt工具箱 1. 简介 2. 日志输出 3. 计算图可视化 4. 数据绘图 5. 参数动态配置 1. 简介 为了方便可视化调试和显示 ROS针对机器人开发提供了一个基于Qt架构的图 ...

  8. ROS笔记(10) TF坐标

    ROS笔记(10) TF坐标 1. 简介 2. 功能包 3. 举例 4. 工具 5. 应用 6. TF广播器 7. TF监听器 8. 添加参考系 1. 简介 在机器人的控制中,坐标系统是非常重要的 机 ...

  9. ROS笔记(9) launch文件

    ROS笔记(9) launch文件 1. 简介 2. launch 3. node 4. param 5. rosparam 6. arg 7. remap 8. include 9. 简单的 lau ...

最新文章

  1. Android编程:解决异常“android.view.InflateException: Binary XML file line # : Error inflating class”
  2. 企业网络项目PT模拟
  3. OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案
  4. java的函数传值_java 函数形参传值和传引用的区别[转]
  5. 树莓派学习 -- 无法扫描出树莓派IP
  6. 电脑怎么下mcjava版_游戏下载常见问题(苹果、电脑玩家下载须知)
  7. python wasm_Python-pywasm-美味尝鲜
  8. 感谢诸君的陪伴,见证微信 SDK 的成长,内含黑科技福利
  9. 「LibreOJ NOIP Round #1」旅游路线
  10. 定义整型数组_C语言基础-数组怎么用
  11. R语言及参考答案(4)
  12. 基于stm32的指纹打卡系统/指纹锁
  13. linux格式化分区error,linux格式化磁盘出错
  14. 动态磁盘转换成基本磁盘
  15. 我是一名自由职业白帽黑客
  16. 正交解调 matlab,13.1.1 正交调制解调
  17. mysql金额分隔符_mysql分隔符
  18. windows命令行工具(转)
  19. Three.js 实现虎年春节3D创意页面
  20. 枚举类型(2):实现,而非继承、随机选取、使用接口组织枚举

热门文章

  1. 一则JVM memory leak解决的过程
  2. Criteria和DetachedCriteria区别应用
  3. 【百度地图API】多家地图API内存消耗对比测验(带源码)
  4. 网络(14)-Web站点如何防范XSS、CSRF、SQL注入攻击?
  5. 解决pytorch训练的过程中内存一直增加的问题
  6. eclipse中安装spring Tool自动补全插件,命名空间
  7. 技巧:在Silverlight中如何访问外部xap文件中UserControl
  8. 在CentOS中安装NodeJS
  9. mp4视频转gif图片
  10. [开发笔记]-判断当前是否联网