/
关于ROSAbout ROS/about-ros/
机器人操作系统(ROS)是用于编写机器人软件的灵活框架。目的在简化多种机器人平台之间创建复杂和鲁棒的机器人行为的任务量,它是工具、库和约定的集合。
为什么这么做?因为创建真正可靠和通用的机器人软件是很困难的。从机器人角度而言,任务和环境的多样性是问题的关键。处理这种多变的任务和环境是困难的,而且没有个人、实验室或研究机构希望独自完成这一切。
于是ROS就这样应运而生,从底层设计就考虑并鼓励协作式的机器人软件开发。例如,一个实验室中有精通于室内环境建图的专家,并构建出一套绘制地图的顶级系统。另外一组则有使用地图进行导航的专家,同时其他团队发现了在杂物中识别小目标的一种计算机视觉方法。ROS就是专门为这样的团队设计的,在彼此工作的基础之上协作设计开发机器人软件。
贡献者Contributors/contributors/
历史History/history/
学习ROS最重要的两个网址:
1/ 2/
为什么选择ROS? Why ROS? /is-ros-for-me/
ROS是否适合我?Is ROS For Me?
ROS给大多数机器人项目和应用程序增加了价值,但你可能依然想问,“ROS是否适合我的应用特例呢?”为了能自己回答这个问题,并作决定,首先需要了解ROS的组成和功能等。
ROS的特色:
1 分布式模块化设计
2 充满活力的社区
3 没有限制的许可证
4 协作环境
ROS社区指标:/Metrics
ROS问答:/questions/
核心模块Core Components/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 passingrecording and playback of messagesrequest/response remote procedure callsdistributed 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:
tfrobot_state_publisherURDFnice visualizationssimulatorsmotion plannersStandard Message Definitions for RobotsRobot Geometry LibraryRobot Description LanguagePreemptable Remote Procedure CallsDiagnosticsPose EstimationLocalizationMappingNavigation
Tools
rvizrqt
与其他库集成Integration with Other Libraries/integration/
版本 Distributions/Distributions
ROS以字母顺序发布更新版本(B C D E F G HIJK),目前最新版为Kinetic。
推荐使用Indigo版本。
wiki中文版如下:
ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。
ROS:
安装
在你的机器上安装ROS。
入门
学习ROS的相关概念、客户端函数库以及技术梗概等。
教程
ROS手把手教程,提供每一步详细操作命令。
贡献
如何加入ROS社区,比如分享你的代码。
支持
遇到问题可以从这里寻求支持和帮助。
软件:
发行版本
查看ROS不同发行版本。
软件包
查找几千个可用的软件包。
核心库
按编程语言和主题划分的API。
常用工具
开发或调试ROS应用程序时的常用工具。
机器人/硬件:
机器人
支持ROS的机器人平台。
传感器
兼容ROS的传感器驱动。
出版物、课程以及活动:
论文
带开源代码的ROS相关论文。
书籍
出版书籍,包括文档、教程和开源代码等。
课程
使用或教授ROS的课程。
活动
历史活动和相关资料。
ROS中国:
中文社区
收集了ROS相关QQ群、论坛和博客专栏等各种社区资源。
ROS维基翻译
志愿加入ROS维基中文翻译。
世界各地wiki镜像站点。
中文教程如下:
非初学者: 如果你已经很熟悉ROSfuerte(要塞龟)或更早期版本的使用,而只是想使用在groovy(加岛象龟)和hydro(渔龟)中开始采用的最新编译构建系统catkin,那你可以深入学习catkin教程。 但是我们仍然建议所有人学完整个“初级”教程以方便理解新增的功能特性。
如果你是Linux初学者:也许先学习一些有关linux命令行工具的快速使用教程会对你很有帮助,这里有篇好教程(英文)。
目录
核心ROS教程 初级中级ROS标准外部ROS资源 外部教程外部研讨会或课件在机器人上运行ROS其它ROS函数库教程提供ROS接口的函数库教程
核心ROS教程
初级
安装并配置ROS环境本教程详细描述了ROS的安装与环境配置。
ROS文件系统介绍
本教程介绍ROS文件系统概念,包括命令行工具roscd、rosls和rospack的使用。
创建ROS程序包
本教程介绍如何使用roscreate-pkg或catkin创建一个新程序包,并使用rospack查看程序包的依赖关系。
编译ROS程序包
本教程介绍ROS程序包的编译方法
理解 ROS节点
本教程主要介绍 ROS 图(graph)概念 并讨论roscore、rosnode和rosrun命令行工具的使用。
理解ROS话题
本教程介绍ROS话题(topics)以及如何使用rostopic和rxplot命令行工具。
理解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维基()的组织结构以及使用方法。同时讲解了如何才能从ROS维基中找到你需要的信息。
接下来做什么?
本教程将讨论获取更多知识的途径,以帮助你更好地使用ROS搭建真实或虚拟机器人。
现在你已经完成了初级教程的学习,请回答这个问卷来检验一下自己的学习效果。
中级
大多数客户端API的使用教程可以在相关程序包(roscpp,rospy,roslisp)中找到。
手动创建ROS package
本教程将展示如何手动创建ROS package
管理系统依赖项
本教程将展示如何使用rosdep安装系统依赖项.
Roslaunch在大型项目中的使用技巧
本教程主要介绍roslaunch在大型项目中的使用技巧。重点关注如何构建launch文件使得它能够在不同的情况下重复利用。我们将使用 2dnav_pr2 package作为学习案例。
ROS在多机器人上的使用
本教程将展示如何在两台机器上使用ROS系统,详述了使用ROS_MASTER_URI来配置多台机器使用同一个master。
自定义消息
本教程将展示如何使用ROSMessage Description Language来定义你自己的消息类型.
在python中使用C++类
本教程阐述一种在python中使用C++类的方法。
如何编写教程
(概述:)本教程介绍在编辑维基时可以用到的模板和宏定义,并附有示例以供参考。
ROS标准
ROS开发者指南有关代码风格和软件包布局等相关指南。
标准测量单位和坐标约定。
外部ROS资源
外部教程
机器人操作系统ROS精品入门视频课程(中文)
ANU的ROS视频教程
NooTriX的手把手ROS教程
Jonathan Bohren的ROS教程
Clearpath Robotics 的知识库
外部研讨会或课件
由位于东京的TORK提供的面向企业基础培训的研讨会
在机器人上运行ROS
创建你自己的URDF文件创建一个定制的通用机器人格式化描述文件。
ros_control使用ROS的标准控制器框架来与硬件连接。
在Gazebo中使用URDF在Gazebo机器人模拟器中添加必要的标记。
搭建 MoveIt!建立配置程序包(configuration package)来使用MoveIt!运动规划框架。
其它ROS函数库教程
Robot Model
Visualization
actionlib
pluginlib
nodelets
导航
ROS-Industrial Tutorials
提供ROS接口的函数库教程
Stage
TF
PCL with ROS
之前的ROS博客主要是学习心得等,比较浅显,以后重点将结合应用制作教案,课件并分析源码等。