天天看點

快速了解 Robot Operating System(ROS) 機器人作業系統

快速了解 Robot Operating System(ROS) 機器人作業系統

http://www.ros.org/

關于ROS About ROS http://www.ros.org/about-ros/

機器人作業系統(ROS)是用于編寫機器人軟體的靈活架構。目的在簡化多種機器人平台之間建立複雜和魯棒的機器人行為的任務量,它是工具、庫和約定的集合。

為什麼這麼做?因為建立真正可靠和通用的機器人軟體是很困難的。從機器人角度而言,任務和環境的多樣性是問題的關鍵。處理這種多變的任務和環境是困難的,而且沒有個人、實驗室或研究機構希望獨自完成這一切。

于是ROS就這樣應運而生,從底層設計就考慮并鼓勵協作式的機器人軟體開發。例如,一個實驗室中有精通于室内環境建圖的專家,并建構出一套繪制地圖的頂級系統。另外一組則有使用地圖進行導航的專家,同時其他團隊發現了在雜物中識别小目标的一種計算機視覺方法。ROS就是專門為這樣的團隊設計的,在彼此工作的基礎之上協作設計開發機器人軟體。

快速了解 Robot Operating System(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/

快速了解 Robot Operating System(ROS) 機器人作業系統
快速了解 Robot Operating System(ROS) 機器人作業系統

核心子產品 Core Components http://www.ros.org/core-components/

ROS的核心子產品主要分為三個部分,如下圖所示:

快速了解 Robot Operating System(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

  • rviz
  • rqt

與其他庫內建 Integration with Other Libraries http://www.ros.org/integration/

快速了解 Robot Operating System(ROS) 機器人作業系統

版本 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不同發行版本。 
    軟體包
    • 查找幾千個可用的軟體包。 
    核心庫
    • 按程式設計語言和主題劃分的API。 
    常用工具
    • 開發或調試ROS應用程式時的常用工具。 

機器人/硬體: 

  • 機器人
    • 支援ROS的機器人平台。 
    傳感器
    • 相容ROS的傳感器驅動。 

出版物、課程以及活動: 

  • 論文
    • 帶開源代碼的ROS相關論文。 
    書籍
    • 出版書籍,包括文檔、教程和開源代碼等。 
    課程
    • 使用或教授ROS的課程。 
    活動
    • 曆史活動和相關資料。 

ROS中國:

  • 中文社群
    • 收集了ROS相關QQ群、論壇和部落格專欄等各種社群資源。 
  • ROS維基翻譯
    • 志願加入ROS維基中文翻譯。 

世界各地wiki鏡像站點。

中文教程如下:

非初學者: 如果你已經很熟悉 ROS fuerte(要塞龜)或更早期版本的使用,而隻是想使用在groovy(加島象龜)和hydro(漁龜)中開始采用的最新編譯建構系統catkin,那你可以深入學習catkin教程。 但是我們仍然建議所有人學完整個“初級”教程以友善了解新增的功能特性。 

如果你是Linux初學者:也許先學習一些有關linux指令行工具的快速使用教程會對你很有幫助,這裡有篇好教程(英文)。 

目錄

  1. 核心ROS教程
    1. 初級
    2. 中級
  2. ROS标準
  3. 外部ROS資源
    1. 外部教程
    2. 外部研讨會或課件
  4. 在機器人上運作ROS
  5. 其它ROS函數庫教程
  6. 提供ROS接口的函數庫教程

核心ROS教程

初級

  1. 安裝并配置ROS環境本教程較長的描述了ROS的安裝與環境配置。
  2. ROS檔案系統介紹本教程介紹ROS檔案系統概念,包括指令行工具roscd、rosls和rospack的使用。
  3. 建立ROS程式包本教程介紹如何使用roscreate-pkg或catkin建立一個新程式包,并使用rospack檢視程式包的依賴關系。
  4. 編譯ROS程式包本教程介紹ROS程式包的編譯方法
  5. 了解 ROS節點本教程主要介紹 ROS 圖(graph)概念 并讨論roscore、rosnode和 rosrun 指令行工具的使用。
  6. 了解ROS話題本教程介紹ROS話題(topics)以及如何使用rostopic 和 rxplot 指令行工具。
  7. 了解ROS服務和參數本教程介紹了ROS 服務和參數的知識,以及指令行工具rosservice 和 rosparam的使用方法。
  8. 使用 rqt_console 和 roslaunch本教程介紹如何使用rqt_console和rqt_logger_level進行調試,以及如何使用roslaunch同時運作多個節點。早期版本中的rqt工具并不完善,是以,如果你使用的是“ROS fuerte”或更早期的版本,請同時參考這個頁面學習使用老版本的“rx”工具。
  9. 使用rosed編輯ROS中的檔案本教程将展示如何使用rosed來簡化編輯過程。
  10. 建立ROS消息和ROS服務本教程詳細介紹如何建立并編譯ROS消息和服務,以及rosmsg, rossrv和roscp指令行工具的使用。
  11. 編寫簡單的消息釋出器和訂閱器 (C++)本教程将介紹如何編寫C++的釋出器節點和訂閱器節點。
  12. 寫一個簡單的消息釋出器和訂閱器 (Python)本教程将通過Python編寫一個釋出器節點和訂閱器節點。
  13. 測試消息釋出器和訂閱器本教程将測試上一教程所寫的消息釋出器和訂閱器。
  14. 編寫簡單的Service和Client (C++)本教程介紹如何用C++編寫Service和Client節點。
  15. 編寫簡單的Service和Client (Python)本教程介紹如何用Python編寫Service和Client節點。
  16. 測試簡單的Service和Client本教程将測試之前所寫的Service和Client。
  17. 錄制與回放資料本教程将教你如何将ROS系統運作過程中的資料錄制到一個.bag檔案中,然後通過回放資料來重制相似的運作過程。
  18. roswtf入門本教程介紹了roswtf工具的基本使用方法。
  19. 探索ROS維基本教程介紹了ROS維基(wiki.ros.org)的組織結構以及使用方法。同時講解了如何才能從ROS維基中找到你需要的資訊。
  20. 接下來做什麼?本教程将讨論擷取更多知識的途徑,以幫助你更好地使用ROS搭建真實或虛拟機器人。

現在你已經完成了初級教程的學習,請回答這個 問卷來檢驗一下自己的學習效果。

中級

大多數用戶端API的使用教程可以在相關程式包(roscpp, rospy, roslisp)中找到。 

  1. 手動建立ROS package本教程将展示如何手動建立ROS package
  2. 管理系統依賴項本教程将展示如何使用rosdep安裝系統依賴項.
  3. Roslaunch在大型項目中的使用技巧本教程主要介紹roslaunch在大型項目中的使用技巧。重點關注如何建構launch檔案使得它能夠在不同的情況下重複利用。我們将使用 2dnav_pr2 package作為學習案例。
  4. ROS在多機器人上的使用本教程将展示如何在兩台機器上使用ROS系統,詳述了使用ROS_MASTER_URI來配置多台機器使用同一個master。
  5. 自定義消息本教程将展示如何使用ROS Message Description Language來定義你自己的消息類型.
  6. 在python中使用C++類本教程闡述一種在python中使用C++類的方法。
  7. 如何編寫教程(概述:)本教程介紹在編輯ros.org維基時可以用到的模闆和宏定義,并附有示例以供參考。

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部落客要是學習心得等,比較淺顯,以後重點将結合應用制作教案,課件并分析源碼等。