機器人操作系統ROS淺析
文章目錄
一、ROS簡介
二、學習路徑
三、ROS的核心概念
3.1 ROS是一種跨平臺模塊化軟件通訊機制
(1)節點Node——執行單元
(2)節點管理器 (ROS Master)—— 控制中心
3.2 話題通信
3.2 服務通信
3.3 文件系統
Reference
一、ROS簡介
ROS是Robot Operating System的縮寫,原本是斯坦福大學的一個機器人項目,后來由Willow Garage公司發展,目前由OSRF(Open Source Robotics Foundation, Inc)公司維護的開源項目。ROS就像手機界的安卓,電腦中的微軟;ROS雖然叫操作系統,但是真正底層的任務調度、編譯、尋址等任務還是由Linux操作系統完成,也就是ROS充其量是一個運行在Linux上的次級操作系統。
可以看某公司對ROS機器人算法工程師的要求:
(1)有機器人導航算法工作經驗
(2)熟練掌握Slam機器人導航,實現建圖、定位等功能;
(3)熟練使用ROS框架操控;
(4)熟練Linux系統、python和C++;
(5)扎實的數學功底。
ROS是一個操作系統
根據wikipedia定義,OS is system software that manages computer hardware and software resources and provides common services for computer programs。
計算機的操作系統將計算機硬件封裝起來,而應用軟件運行在操作系統之上,不用管計算機具體應用的是什么類型的硬件產品。這能大大提高軟件開發效率(否則大家只能都寫匯編了)。
同理,ROS則是對機器人的硬件進行了封裝,不同的機器人、不同的傳感器,在ROS里可以用相同的方式表示(topic等),供上層應用程序(運動規劃等)調用。
二、學習路徑
ROS主要編程語言是C++和python。
(1)ROS官方文檔:http://wiki.ros.org/ROS/Tutorials
(2)中文版ROS教程:http://wiki.ros.org/cn/ROS/Tutorials(初級學前20講)
(3)大佬的ROS學習筆記
(4)中科院ROS入門課程
(5)補充中。
三、ROS的核心概念
3.1 ROS是一種跨平臺模塊化軟件通訊機制
ROS用節點(Node)的概念表示一個應用程序,不同node之間通過事先定義好格式的消息(Topic),服務(Service),動作(Action)來實現連接。
(1)節點Node——執行單元
執行具體任務的進程、獨立運行的可執行文件;
不同節點可使用不同的編程語言,可分布式運行在不同的主機;
節點在系統中的名稱必須是唯一的
(2)節點管理器 (ROS Master)—— 控制中心
為節點提供命名和注冊服務;
跟蹤和記錄話題/服務通信,輔助節點相互查找、建立連接;
提供參數服務器,節點使用此服務器存儲和檢索運行時的參數。
3.2 話題通信
話題(Topic)—— 異步通信機制
節點間用來傳輸數據的重要總線;
使用發布/訂閱模型,數據由發布者傳輸到訂閱者,同一個話題的訂閱者或發布者可以不唯一。
消息(Message)—— 話題數據
具有一定的類型和數據結構,包括ROS提供的標準類型和用戶自定義類型;
使用編程語言無關的.msg文件定義,編譯過程中生成對應的代碼文件。
3.2 服務通信
服務(Service)—— 同步通信機制
使用客戶端/服務器(C/S)模型,客戶端發送請求數據,服務器完成處理后返回應答數據;
使用編程語言無關的.srv文件定義請求和應答數據結構,編譯過程中生成對應的代碼文件。
3.3 文件系統
功能包(Package) :ROS軟件中的基本單元,包含節點源碼、配置文件、數據定義等
元功能包(Meta Packages):組織多個用于同一目的功能包
Reference
[1] https://www.cnblogs.com/qqfly/p/5851382.html
[2] ROS入門:https://zhuanlan.zhihu.com/p/26007106
機器人
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。