快速了解 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 ...
随机推荐
- .Net Core 通过依赖注入和动态加载程序集实现宿程序和接口实现类库完全解构
网上很多.Net Core依赖注入的例子代码,例如再宿主程序中要这样写: services.AddTransient<Interface1, Class1>(); 其中Interface1 ...
- C#标记 [已弃用] 的方法
[Obsolete]//标记该方法已弃用 /// <summary> /// 你应该调用本类的 OpenMessageBox 方法 /// </summary> public ...
- 使用tkinter加载png,jpg
最近来使用tkinter加载图片时遇到了困难,按照资料写了 photo = PhotoImage(file='ques.png') imglabel = Label(root, image=photo ...
- 初学Servlet之实现Servlet接口
package app01a;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Servlet;im ...
- pandas用法大全
pandas用法大全 一.生成数据表 1.首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as pd12 2. ...
- bzoj4896 补退选
Description X是T大的一名老师,每年他都要教授许多学生基础的C++知识.在T大,每个学生在每学期的开学前都需要选课,每 次选课一共分为三个阶段:预选,正选,补退选:其中"补退选& ...
- UVA 3485 Bridge
题目大意 你的任务是修建一座大桥.桥上等距地摆放着若干个塔,塔高为H,宽度忽略不计.相邻两座塔之间的距离不能超过D.塔之间的绳索形成全等的对称抛物线.桥长度为B,绳索总长为L,如下图所示求建最少的塔时 ...
- 51 nod 1681 公共祖先 (主席树+dfs序)
1681 公共祖先 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个庞大的家族,共n人.已知这n个人的祖辈关系正好形成树形结构(即父亲向儿子连边). 在另 ...
- Uva 437 巴比伦塔 && UVA10003
要求底面严格小于它下方立方体的长宽,求出最高情况,一块石头可以多次使用 用结构体记录一块石头的三种放置情况,按面积排序. dp[i] = max(dp[i],dp[j] + block[i].high ...
- vue+cordova 构建hybrid app
配了一个 vue + cordova + ionicCli 的 项目 支持 ionic 的脚手架命令 支持 cordova 的 插件 安装使用 支持 webpack 的自动构建 vue 安装了 vue ...