1 ROS是什么?

机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景。

说明:ROS是一个适用于机器人编程的框架, 这个框架把原本松散的零部件耦合在了一起, 为他们提供了通信架构。 ROS虽然叫做操作系统, 但并非Windows、 Mac那样通常意义的操作系统, 它只是连接了操作系统和你开发的ROS应用程序, 所以它也算是一个中间件, 基于ROS的应用程序之间建立起了沟通的桥梁, 所以也是运行在Linux上的运行环境, 在这个环境上, 机器人的感知、 决策、 控制算法可以更好的组织和运行。

2 ROS历史发展

2.1 ROS参考资料

1.官网:https://www.ros.org/

2.wiki:http://wiki.ros.org

3.问答:https://answers.ros.org

4.源码:https://github.com/

5.各大论坛和博客

2.2 ROS历史演变

2012年组织第一届ROS开发者大会,以后每年一届,会由不同的国家主办;之后Willow Garage经营不善,团队解散,2013年ROS的维护者成立了一个开源机器人基金这样一个组织来继续推进ROS的发展,并先后在2014年和2016年发布两款长期支持版(Long Term Support)的ROS(Indigo和Kinetic)和Ubuntu(乌班图)长期支持版保持同步的维护时间,可以得到5年的更新维护,目前官方推荐2016 ROS Kinetic。

2018年ROS2 1.0版将发布,互联网+,ROS将起着至关重要的作用。

2.3 ROS的官方解释(重点)

1)通信机制(框架):

  • 分布式:扩展性好,软件复用率高
  • 进程管理
  • 进程间通信

2)开发工具

  • 仿真
  • 数据可视化
  • 图形界面
  • 数据记录

3)应用功能

  • 控制
  • 规划
  • 视觉
  • 建图

4)生态系统(社区)

  • 软件包管理:apt-get,apt,包管理工具
  • 文档
  • 教程

3 ROS设计目标

①尽量提高机器人研发中的软件复用率

②框架中的每个功能模块能够被单独设计、编译、运行时松耦合方式结合

③功能模块都封装于独立的功能包或元功能包,便于社区共享与分发

④ROS由核心通信机制、开发工具、应用功能和生态系统四个部分构成

⑤为机器人开发提供了硬件抽象、底层驱动、消息传递、程序管理、应用原型等机制,整合了第三方工具及库文件,便于用户快速完成机器人应用的建立、编写和多机整合等

4 ROS特点

1)点对点的设计

ROS中每一个进程都以一个节点的形式运行,可分布于不同主机(分散计算压力,协同工作),节点的通信消息通过一个带有发布和订阅功能的RPC传输系统来传送。

2)多语言支持

C++、Python作为最广泛的ROS开发语言、C、Java及C#和Lisp等,每个模块可以用不同的语言实现。为了支持多语言编程,ROS采用了一种语言中立的接口定义语言来实现各模块之间消息传送。 通俗的理解就是, ROS的通信格式和用哪种编程语言来写无关, 它使用的是自身定义的一套通信接口。

3)架构精简、集成度高

  • 每个功能节点可以单独编译
  • 集成众多开源项目
  • 接口统一、提高软件复用性

4)组件化工具包丰富

  • 3D可视化工具—rviz
  • 物理仿真环境—gazebo
  • 数据记录工具—rosbag
  • Qt工具箱一rqt_*

5)免费并且开源

  • ROS具有一个庞大的社区ROSwiki(http://wiki.ros.org/),可以查阅功能包参数和提问等。
  • ROS开发的软件包已经达到数千万个,相关的机器人已经多达上千款。
  • ROS遵从BSD协议,对个人和商业应用及修改完全免费。

5 ROS优缺点

目前来说, ROS更适合科研和开源用户使用, 如果在工业场景应用( 例如无人驾驶) 还需要做优化和定制。

ros发布节点信息python_ROS入门笔记(一): ROS简介相关推荐

  1. ros发布节点信息python_ROS Twist和Odometry消息类型使用(Python)

    消息类型: 1. Twist - 线速度角速度 通常被用于发送到/cmd_vel话题,被base controller节点监听,控制机器人运动 geometry_msgs/Twist geometry ...

  2. ros发布节点信息python_vscode开发ROS1(13)-python实现话题通信(msg)

    写在最前面 1, ros也是可以使用python进行编程的, 而且相比c++来说, ros更加简单. 使用python创建第一个ROS程序 1, 在ros_test目录下, 新建一个scripts文件 ...

  3. Docker 入门笔记 8 - Namespace 简介(中)

    Namespace 简介(中) PID Namespace 对于 Docker 来说,PID Namespace可以说非常重要,它可以使容器之间的进程树互不可见. 通过PID Namespace, 每 ...

  4. ros 发布信息频率_ROS入门笔记二基础

    1.创建工作空间 1.什么是工作空间 工作空间(workspace)是一个存放工作开发相关文件的文件夹 src:代码空间(Source Space) build:编译空间(Build Space) d ...

  5. ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)

    ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++) 文章目录 01 导读 02 功能包的创建 03 功能包的源代码编写 3.1 编写发布器节点(talker.cpp) 3.2 编写订阅 ...

  6. ros订阅话题python_ROS入门教程 (写一个简单的消息发布器和订阅器 (Python))

    Note: This tutorial assumes that you have completed the previous tutorials: 创建ROS消息和ROS服务. Descripti ...

  7. ROS学习笔记-ROS订阅和发布节点

    一个简单的ROS包,一个发布者,一个订阅者 刚开始学习ROS,参考网上的资料完成了测试节点的编写,记录一下. 个人习惯在home/Develop目录中做开发,于是在Develop目录下面创建了一个RO ...

  8. ROS入门笔记(十二):动作编程 (C++)

    ROS入门笔记(十二):动作编程 (C++) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建action(动作) 3.1 自定义action 3.2 在package.xml中添加功能 ...

  9. ROS入门笔记(十一):编写与测试简单的Service和Client (Python)

    ROS入门笔记(十一):编写与测试简单的Service和Client (Python) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建自定义服务类型 3.1 定义srv文件 3.2 在 ...

最新文章

  1. 洗礼灵魂,修炼python(85)-- 知识拾遗篇 —— 深度剖析让人幽怨的编码
  2. c# 通过API启动外部程序
  3. clion 代码格式化 大括号换行对齐
  4. 【Network Security!】ping命令的用法(全)
  5. Stanford UFLDL教程 逻辑回归的向量化实现样例
  6. 执行完execute和update后存储过程变成invalid_学会反射后,我被面试官录取了(干货)
  7. ECstore报表不显示解决
  8. phpmyadmin的安装部署
  9. shell 提取sql 的字段名表名_SQL代码风格规范
  10. 深度解析PolarDB数据库并行查询技术
  11. spring zipkin mysql_springboot + zipkin + mysql
  12. 编程语言之父谈语言设计,龟叔大赞 TypeScript
  13. Python格式化输出、转义字符、结束符
  14. Python计算斗牛游戏的概率
  15. 论文笔记:NeuS: Learning Neural Implicit Surfaces by Volume Rendering for Multi-view Reconstruction
  16. 中国神话故事中的仙佛怪关系整理
  17. 2020全国高校计算机能力挑战赛(word模拟题)
  18. 深入理解Risk aversion||风险偏好||Risk utility function
  19. 解题:POI 2008 Plot purchase
  20. 更易用的OceanBase|生态工具征文大赛正式开启!

热门文章

  1. 【Kafka】Kafka 如果 动态 不停止的情况下 修改 消费组 offset
  2. 【Elasticsearch】字符过滤器
  3. 【Elastischearch】Elastischearch 的 ID 生成器 UUIDGenerator
  4. 【Elasticsearch】ES 7.8 写入 查询 Normalizer 忽略 大小写
  5. 【Flink】Flink 报错 ResourceManager leader changed to new address null
  6. 【hortonworks/registry】诡异问题之启动了却无法访问
  7. Registry学习资料
  8. Spring Boot : Cache相关简介
  9. 95-280-036-源码-资源管理-计算资源管理-TaskSlot-TaskExecutor 中 Slot 的管理
  10. 06-windows下Orcale使用Database Configuration Assistant建立数据库