快速了解 Robot Operating System(ROS) 机器人操作系统
关于ROS About ROS http://www.ros.org/about-ros/
机器人操作系统(ROS)是用于编写机器人软件的灵活框架。目的在简化多种机器人平台之间创建复杂和鲁棒的机器人行为的任务量,它是工具、库和约定的集合。
为什么这么做?因为创建真正可靠和通用的机器人软件是很困难的。从机器人角度而言,任务和环境的多样性是问题的关键。处理这种多变的任务和环境是困难的,而且没有个人、实验室或研究机构希望独自完成这一切。
于是ROS就这样应运而生,从底层设计就考虑并鼓励协作式的机器人软件开发。例如,一个实验室中有精通于室内环境建图的专家,并构建出一套绘制地图的顶级系统。另外一组则有使用地图进行导航的专家,同时其他团队发现了在杂物中识别小目标的一种计算机视觉方法。ROS就是专门为这样的团队设计的,在彼此工作的基础之上协作设计开发机器人软件。
贡献者 Contributors http://www.ros.org/contributors/
历史 History http://www.ros.org/history/
学习ROS最重要的两个网址:
1 http://www.ros.org/ 2 https://github.com/
为什么选择ROS? Why ROS? http://www.ros.org/is-ros-for-me/
ROS是否适合我? Is ROS For Me?
ROS给大多数机器人项目和应用程序增加了价值,但你可能依然想问,“ROS是否适合我的应用特例呢?”为了能自己回答这个问题,并作决定,首先需要了解ROS的组成和功能等。
ROS的特色:
1 分布式模块化设计
2 充满活力的社区
3 没有限制的许可证
4 协作环境
ROS社区指标:http://wiki.ros.org/Metrics
ROS问答:http://answers.ros.org/questions/
核心模块 Core Components http://www.ros.org/core-components/
ROS的核心模块主要分为三个部分,如下图所示:
重要概念与链接:
Communications Infrastructure
At the lowest level, ROS offers a message passing interface that provides inter-process communication and is commonly referred to as a middleware.
The ROS middleware provides these facilities:
- message IDL
- publish/subscribe anonymous message passing
- recording and playback of messages
- request/response remote procedure calls
- distributed parameter system
Robot-Specific Features
In addition to the core middleware components, ROS provides common robot-specific libraries and tools that will get your robot up and running quickly. Here are just a few of the robot-specific capabilities that ROS provides:
- tf robot_state_publisher URDF nice visualizations simulators motion planners
- Standard Message Definitions for Robots
- Robot Geometry Library
- Robot Description Language
- Preemptable Remote Procedure Calls
- Diagnostics
- Pose Estimation
- Localization
- Mapping
- Navigation
Tools
与其他库集成 Integration with Other Libraries http://www.ros.org/integration/
版本 Distributions http://wiki.ros.org/Distributions
ROS以字母顺序发布更新版本(B C D E F G H I J K),目前最新版为Kinetic。
推荐使用Indigo版本。
wiki中文版如下:
ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。
ROS:
-
- 在你的机器上安装ROS。
- 学习ROS的相关概念、客户端函数库以及技术梗概等。
- ROS手把手教程,提供每一步详细操作命令。
- 如何加入ROS社区,比如分享你的代码。
- 遇到问题可以从这里寻求支持和帮助。
软件:
机器人/硬件:
出版物、课程以及活动:
ROS中国:
世界各地wiki镜像站点。
中文教程如下:
非初学者: 如果你已经很熟悉 ROS fuerte(要塞龟)或更早期版本的使用,而只是想使用在groovy(加岛象龟)和hydro(渔龟)中开始采用的最新编译构建系统catkin,那你可以深入学习catkin教程。 但是我们仍然建议所有人学完整个“初级”教程以方便理解新增的功能特性。
如果你是Linux初学者:也许先学习一些有关linux命令行工具的快速使用教程会对你很有帮助,这里有篇好教程(英文)。
核心ROS教程
初级
- 安装并配置ROS环境
本教程详细描述了ROS的安装与环境配置。
- ROS文件系统介绍
本教程介绍ROS文件系统概念,包括命令行工具roscd、rosls和rospack的使用。
- 创建ROS程序包
本教程介绍如何使用roscreate-pkg或catkin创建一个新程序包,并使用rospack查看程序包的依赖关系。
- 编译ROS程序包
本教程介绍ROS程序包的编译方法
- 理解 ROS节点
- 理解ROS话题
- 理解ROS服务和参数
本教程介绍了ROS 服务和参数的知识,以及命令行工具rosservice 和 rosparam的使用方法。
- 使用 rqt_console 和 roslaunch
本教程介绍如何使用rqt_console和rqt_logger_level进行调试,以及如何使用roslaunch同时运行多个节点。早期版本中的rqt工具并不完善,因此,如果你使用的是“ROS fuerte”或更早期的版本,请同时参考这个页面学习使用老版本的“rx”工具。
- 使用rosed编辑ROS中的文件
本教程将展示如何使用rosed来简化编辑过程。
- 创建ROS消息和ROS服务
本教程详细介绍如何创建并编译ROS消息和服务,以及rosmsg, rossrv和roscp命令行工具的使用。
- 编写简单的消息发布器和订阅器 (C++)
本教程将介绍如何编写C++的发布器节点和订阅器节点。
- 写一个简单的消息发布器和订阅器 (Python)
本教程将通过Python编写一个发布器节点和订阅器节点。
- 测试消息发布器和订阅器
本教程将测试上一教程所写的消息发布器和订阅器。
- 编写简单的Service和Client (C++)
本教程介绍如何用C++编写Service和Client节点。
- 编写简单的Service和Client (Python)
本教程介绍如何用Python编写Service和Client节点。
- 测试简单的Service和Client
本教程将测试之前所写的Service和Client。
- 录制与回放数据
本教程将教你如何将ROS系统运行过程中的数据录制到一个.bag文件中,然后通过回放数据来重现相似的运行过程。
- roswtf入门
本教程介绍了roswtf工具的基本使用方法。
- 探索ROS维基
本教程介绍了ROS维基(wiki.ros.org)的组织结构以及使用方法。同时讲解了如何才能从ROS维基中找到你需要的信息。
- 接下来做什么?
本教程将讨论获取更多知识的途径,以帮助你更好地使用ROS搭建真实或虚拟机器人。
现在你已经完成了初级教程的学习,请回答这个 问卷来检验一下自己的学习效果。
中级
大多数客户端API的使用教程可以在相关程序包(roscpp, rospy, roslisp)中找到。
- 手动创建ROS package
本教程将展示如何手动创建ROS package
- 管理系统依赖项
本教程将展示如何使用rosdep安装系统依赖项.
- Roslaunch在大型项目中的使用技巧
本教程主要介绍roslaunch在大型项目中的使用技巧。重点关注如何构建launch文件使得它能够在不同的情况下重复利用。我们将使用 2dnav_pr2 package作为学习案例。
- ROS在多机器人上的使用
本教程将展示如何在两台机器上使用ROS系统,详述了使用ROS_MASTER_URI来配置多台机器使用同一个master。
- 自定义消息
本教程将展示如何使用ROS Message Description Language来定义你自己的消息类型.
- 在python中使用C++类
本教程阐述一种在python中使用C++类的方法。
- 如何编写教程
(概述:)本教程介绍在编辑ros.org维基时可以用到的模板和宏定义,并附有示例以供参考。
ROS标准
ROS开发者指南 有关代码风格和软件包布局等相关指南。
外部ROS资源
外部教程
外部研讨会或课件
由位于东京的TORK提供的面向企业基础培训的研讨会
在机器人上运行ROS
创建你自己的URDF文件 创建一个定制的通用机器人格式化描述文件。
ros_control 使用ROS的标准控制器框架来与硬件连接。
在Gazebo中使用URDF 在Gazebo机器人模拟器中添加必要的标记。
搭建 MoveIt! 建立配置程序包(configuration package)来使用MoveIt!运动规划框架。
其它ROS函数库教程
提供ROS接口的函数库教程
之前的ROS博客主要是学习心得等,比较浅显,以后重点将结合应用制作教案,课件并分析源码等。
快速了解 Robot Operating System(ROS) 机器人操作系统的更多相关文章
- Robot Operating System (ROS)学习笔记---创建简单的机器人模型smartcar
搭建环境:XMWare Ubuntu14.04 ROS(indigo) 转载自古月居 转载连接:http://www.guyuehome.com/243 一.创建硬件描述包 已创建catkin_ ...
- Robot Operating System (ROS)学习笔记3---键盘控制
搭建环境:XMWare Ubuntu14.04 ROS(indigo) 转载自古月居 转载连接:http://www.guyuehome.com/253 一.创建控制包 catkin_creat ...
- Robot Operating System (ROS)学习笔记2---使用smartcar进行仿真
搭建环境:XMWare Ubuntu14.04 ROS(indigo) 转载自古月居 转载连接:http://www.guyuehome.com/248 一.模型完善 文件夹urdf下,创建ga ...
- Robot Operating System (ROS)学习笔记4---语音控制
搭建环境:XMWare Ubuntu14.04 ROS(indigo) 转载自古月居 转载连接:http://www.guyuehome.com/260 一.语音识别包 1.安装 ...
- ROS机器人操作系统相关书籍、资料和学习路径
作者:Top Liu链接:https://zhuanlan.zhihu.com/p/30391098来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文是易科机器人实验 ...
- ROS是Robot Operating System
ROS是Robot Operating System 机器人操作系统ROS | 简介篇 同样,从个人微信公众号Nao(ID:qRobotics)搬运. 前言 先放一个ROS Industrial一 ...
- ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料
ROSCon 2016视频和幻灯片发布 By Tully Foote on 十月19,2016 7:28 AM 全部PPT下载地址:http://pan.baidu.com/s/1gf2sn2F RO ...
- 【2017.10.13 ROS机器人操作系统】ROS系统常用术语及资源
ROS机器人操作系统是一种后操作系统,提供了类似于软件开发中使用到的中间件的功能. ROS: Robot Operating System 机器人操作系统 Package: 功能包 Stack: 功能 ...
- Learning Roadmap of Robotic Operating System (ROS)
ROS Wiki: http://wiki.ros.org/ Robots Using ROS Textbooks: A Gentle Introduction to ROS Learning ROS ...
随机推荐
- MyBatis基础学习笔记--摘录
1.MyBatis是什么? MyBatis源自于IBatis,是一个持久层框架,封装了jdbc操作数据库的过程,使得开发者只用关心sql语句,无需关心驱动加载.连接,创建statement,手动设置参 ...
- 以 Angular 的姿势打开 Font-Awesome
环境 Angular: v5.2.9 Font-Awesome: v5.0.10 angular-fontawesome: v0.1.0-9 无须再用传统的 Web Font 方式 以前习惯于 Fon ...
- jenkins构建个人github上的项目
最近刚进一家新公司,公司采用的是自动化集成测试工具jenkins进行,构建,部署项目 因为以前,没接触过这类工具,所以打算在自己本机安装一个jenkins进行学习 具体安装步骤,很简单,不做讲解 1. ...
- [Codeforces 863A]Quasi-palindrome
Description Let quasi-palindromic number be such number that adding some leading zeros (possible non ...
- [POI 2004]ZAW
Description 在 Byte 山的山脚下有一个洞穴入口. 这个洞穴由复杂的洞室经过隧道连接构成. 洞穴的入口是 1 号点.两个洞室要么就通过隧道连接起来,要么就经过若干隧道间接的相连. 现在决 ...
- NOIP 2011 观光公交
题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2 ...
- 删数方案数(regex)
[题目描述] 给出一个正整数序列 a,长度为 n,cyb 不喜欢完美,他要删掉一些数(也可以不删,即删掉0个),但是他不会乱删,他希望删去以后,能将 a 分成 2 个集合,使得两个非空集合的数的和相同 ...
- [CEOI2008]order
Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成. 现在给出这些参数,求最大利润 Solu ...
- [BZOJ]2589: Spoj 10707 Count on a tree II
Time Limit: 20 Sec Memory Limit: 400 MB Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v),你需要回答u xor last ...
- 计蒜客NOIP2017提高组模拟赛(三)day1
火山喷发 火山喷发对所有附近的生物具有毁灭性的影响.在本题中,我们希望用数值来模拟这一过程. 在环境里有 n 个生物分别具有 A1,A2,⋯,An点生命值,一次火山喷发总计 MM 轮 ...