近來找到的實習主要是做智能車控制,用到的也就是ROS機器人操作系統(tǒng),ROS需要運行在一個操作系統(tǒng)上,這個操作系統(tǒng)常用的就是Linux,而公司用的就是Ubuntu,所以Ubuntu-ROS組合就是實習的主要學習內(nèi)容了。所以我就新開了一個坑,網(wǎng)絡上ROS的資源很豐富,我在此只是用以分享學習筆記。
1. ROS基本介紹
ROS是主流的機器人操作系統(tǒng)
官方將ROS解釋為框架、工具、功能和社區(qū)。
ROS實際上相當于一個 軟件工具集 ,采用分布式框架,通信框架是其主要組成部分,可將多個單獨設計的進程(節(jié)點)組合起來并同時運行。
各節(jié)點可實現(xiàn)各種不同的功能,并通過ROS這一橋梁實現(xiàn)相互通信。這樣的特點使其拓展性好,復用率高,極大地提高了龐大和冗雜的機器人設計過程的效率。
ROS能給開發(fā)人員提供可視化界面工具,包含諸如Gazebo、Rviz等用于仿真和調(diào)試的基本工具,以及各種基礎程序包(控制、路徑、規(guī)劃等),只需在其上設計所要實現(xiàn)的特殊功能的部分并將它們組合起來即可。
2. 為什么選擇Ubuntu系統(tǒng)
軟件是機器人的核心。
機器人應用軟件需要運行在一個操作系統(tǒng)上, 該操作系統(tǒng)可以提供與機器人作動器和傳感器通信的功能 。基于Linux的操作系統(tǒng)在與底層硬件交互的過程中具有極大的靈活性,并且提供相關許可允許用戶根據(jù)機器人應用對其進行修改。在這種應用背景下,Ubuntu快速響應能力、輕量級屬性及高度安全性的優(yōu)點得以展現(xiàn)。
當前,Ubuntu-ROS組合已成為機器人編程的一個理想選擇。
3. ROS框架
從根本上說,ROS是兩個程序或進程間通信的框架。
For example,如果程序A想要向程序B發(fā)送數(shù)據(jù),并且程序B也想要向程序A發(fā)送數(shù)據(jù),那么可以輕松地用ROS實現(xiàn)這項工作。
一個機器人可能有許多傳感器、作動器和計算單元。怎樣才能做到控制這么多作動器及這么多傳感器數(shù)據(jù)呢?我們可以只用一個程序完成這些嗎?這當然可以。但是這并不是一個好方法。
更好的解決方案是我們可以編寫多個獨立的程序來處理傳感器數(shù)據(jù)、向作動器發(fā)送控制指令,但是這就需要在這些程序之間進行數(shù)據(jù)交換,而這恰恰就是我們使用ROS的場景。
4. ROS中兩個程序之間的通信如何完成
兩個程序分別被標記為節(jié)點1和節(jié)點2。當程序啟動時,節(jié)點便會和名為ROS Master的ROS程序通信。節(jié)點將所有信息發(fā)給ROS Master,包括它發(fā)送和收到的消息類型、本節(jié)點路由信息等。發(fā)送信息的節(jié)點稱為發(fā)布節(jié)點(Publisher Nodes),接收信息的節(jié)點稱為訂閱節(jié)點(Subscriber Nodes)。ROS Master擁有在計算機上正在運行的所有發(fā)送節(jié)點和接收節(jié)點的信息。如果節(jié)點1發(fā)送某個名為A的數(shù)據(jù),而節(jié)點2正好訂閱了該消息,那么ROS Master就向兩個節(jié)點廣播彼此的節(jié)點信息(注意:不是消息)以幫助它們建立連接,這樣兩個節(jié)點就可以互相通信了。
ROS節(jié)點可以彼此間互相傳送不同類型的數(shù)據(jù),這些數(shù)據(jù)可以包含像整數(shù)、浮點數(shù)、字符串等這類簡單類型的數(shù)據(jù)。這些節(jié)點間相互傳遞的不同類型的數(shù)據(jù)稱為 ROS消息(Messages) 。有了ROS消息,我們就可以在節(jié)點之間傳遞各種類型的數(shù)據(jù)了。這些消息通過一種類似于數(shù)據(jù)總線或者路徑標識的媒介進行傳播,我們稱為ROS話題(Topics)。每一條話題都有自己的名字,比如一個可以傳輸字符串數(shù)據(jù)的名為“chatter”的話題。
如果一個ROS節(jié)點想通過話題廣播消息,那么它只需要給ROS話題發(fā)送消息即可,消息中就包含了消息的數(shù)據(jù)類型(所以不用另外告知topics 數(shù)據(jù)的類型)。
圖4-12中,節(jié)點1和節(jié)點2就是通過ROS話題發(fā)送和接受消息的。當ROS Master交換完兩個節(jié)點的信息之后,兩個節(jié)點間消息的發(fā)送和接收過程就開始了。
5. ROS中的一些名詞
ROS節(jié)點(Node) :使用ROS API進行運算的進程。
ROS主機(Master) :連接ROS節(jié)點的媒介程序。
** ROS參數(shù)服務器(Parameter Server)** :指通常與ROS Master一起運行的一個程序。使用者在此服務器上存儲不同的參數(shù),所有的節(jié)點都可以訪問它,使用者可以設置參數(shù)的保密性。如果某個參數(shù)是公共的,那么所有節(jié)點都可以訪問;但如果某個參數(shù)具有私有屬性,那么只有特定的節(jié)點才可以訪問這個參數(shù)。
ROS話題(Topic) :即“總線”,ROS節(jié)點可以通過該總線發(fā)送或接收信息。一個節(jié)點可以發(fā)布或者接收任意數(shù)量的話題。
ROS消息(Message) :消息基本上都是通過話題傳送的。ROS含有許多內(nèi)建的消息類型,當然使用者也可以定義他們自己的消息類型。
-
機器人
+關注
關注
211文章
28380瀏覽量
206916 -
操作系統(tǒng)
+關注
關注
37文章
6801瀏覽量
123283 -
Ubuntu
+關注
關注
5文章
563瀏覽量
29704 -
ROS
+關注
關注
1文章
278瀏覽量
17001
發(fā)布評論請先 登錄
相關推薦
評論