ROS入门笔记(一): ROS简介
ROS入门笔记(一): ROS简介
文章目录
- 1 ROS是什么?
- 2 ROS历史发展
- 2.1 ROS参考资料
- 2.2 ROS历史演变
- 2.3 ROS的官方解释(重点)
- 3 ROS设计目标
- 4 ROS特点
- 5 ROS优缺点
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优缺点
优点 | 缺点 |
---|---|
提供框架、 工具和功能 | 通信实时性能有限 |
方便移植 | 系统稳定性尚不满足工业级要求 |
庞大的用户群体 | 安全性上没有防护措施 |
免费开源 | 仅支持Linux(Ubuntu) |
目前来说, ROS更适合科研和开源用户使用, 如果在工业场景应用( 例如无人驾驶) 还需要做优化和定制。
ROS入门笔记(一): ROS简介相关推荐
- ROS入门笔记(二):ROS安装与环境配置及卸载(重点)
ROS入门笔记(二):ROS安装与环境配置及卸载(重点) 文章目录 1 ROS安装步骤 1.1 ROS版本 1.2 确定Ubuntu版本号 1.3 安装ROS 1.3.1 Ubuntu初始环境配置 1 ...
- ROS入门笔记(十三):分布式通信
ROS入门笔记(十三):分布式通信 文章目录 01 如何实现分布式多机通信 1.1 设置IP地址,确保底层链路的连通 1.2 在从机端设置ROS_MASTER_URI,让从机找到ROS Master ...
- ROS入门笔记(十二):动作编程 (C++)
ROS入门笔记(十二):动作编程 (C++) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建action(动作) 3.1 自定义action 3.2 在package.xml中添加功能 ...
- ROS入门笔记(十一):编写与测试简单的Service和Client (Python)
ROS入门笔记(十一):编写与测试简单的Service和Client (Python) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建自定义服务类型 3.1 定义srv文件 3.2 在 ...
- ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)
ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++) 文章目录 01 导读 02 功能包的创建 03 功能包的源代码编写 3.1 编写发布器节点(talker.cpp) 3.2 编写订阅 ...
- ROS入门笔记(九):编写ROS的第一个程序hello world(重点)
ROS入门笔记(九):编写ROS的第一个程序hello world(重点) 文章目录 1 Catkin工作空间 1.1 创建catkin工作空间 1.2 编译工作空间 1.3 设置环境变量 1.4 检 ...
- ROS入门笔记(七):详解ROS文件系统
ROS入门笔记(七):详解ROS文件系统 文章目录 01 Catkin编译系统 1.1 Catkin特点 1.2 Catkin工作原理 1.3 使用`catkin_make`进行编译 02 Catki ...
- ROS入门笔记(六): ROS系统架构
ROS入门笔记(六): ROS系统架构 文章目录 1 ROS系统架构 1.1 文件系统(重点) 1.2 计算图 1.3 开源社区 1 ROS系统架构 1.1 文件系统(重点) 文件系统:主要指在硬盘里 ...
- ROS入门笔记(四):ROS实践(小海龟仿真)— ROS Topics
ROS入门笔记(四):ROS实践(小海龟仿真)- ROS Topics 文章目录 1 基础知识 1.1 运行ROS Master所在主机的资源地址 1.2 ROS常用命令 1.2.1 查看所有以ros ...
最新文章
- EMNLP2020:Hugging Face获最佳demo
- LAMP部署搭建————重要文件备份
- [HDU] Tr A
- Chrome浏览器对我的改变
- vs2015+opencv+qt打包exe的问题
- 怎么让程序后台运行_CPU中的程序是怎么运行起来的?
- mysql 酒店管理设计_酒店管理系统的设计与实现(Myeclipse,MySQL)
- dial tcp xxx: connectex: A connection attempt failed
- 转正答辩ppt_如何顺利完成转正答辩?
- Ext JS 6开发实例(三) :主界面设计
- .NET CORE+CENTOS部署+supervisor守护
- java 显示图片的一部分_求只显示图片上半部分三分之一的写法
- 诺基亚s40机破权相关说明
- 微信公众号开发之微信模板消息推送
- canoco5主成分分析步骤_权重赋值之“主成分分析法”
- 2020软件构造实验三
- LaTeX 章节 Sections Chapters
- 级联h桥储能,soc均衡,soc均衡控制,相内soc均衡,相间soc均衡,蓄电池充放电控制,恒压充电,恒流充电,零序电压注入法相间soc均衡
- 软考中计算机软件考什么,计算机软考要考什么
- 基于Spring Cloud Gateway 和 注册中心实现灰度发布