ROS------術語

摘自《ROS機器人編程》,侵權刪。

ROS

ROS是一個用於開發機器人應用程序的、類似操作系統的機器人軟件平臺。ROS提供開發機器人應用程序時所需的硬件抽象、子設備控制,以及機器人工程中廣泛使用的傳感、識別、繪圖、運動規劃等功能。此外ROS還提供進程之間的消息解析、功能包管理、
庫和豐富的開發及調試工具

主節點
主節點(master)負責節點到節點的連接和消息通信,類似於名稱服務器(Name Server)。roscore是它的運行命令,當您運行主節點時,可以註冊每個節點的名字,並根據需要獲取信息。沒有主節點,就不能在節點之間建立訪問和消息交流(如話題和服務)。

主節點使用XML遠程過程調用(XMLRPC,XML-Remote Procedure Call) 與節點進行通信。XMLRPC是一種基於HTTP的協議,主節點不與連接到主節點的節點保持連接。換句話說,節點只有在需要註冊自己的信息或向其他節點發送請求信息時才能訪問主節點並獲取信息。通常情況下,不檢查彼此的連接狀態。由於這些特點,ROS可用於非常大而複雜的環境。XMLRPC也非常輕便,支持多種編程語言,使其非常適合支持各種硬件和語言的ROS。

當啓動ROS時,主節點將獲取用戶設置的ROS_MASTER_URI變量中列出的URI地址和端口。除非另外設置,默認情況下,URI地址使用當前的本地IP,端口使用11311。
節點
節點(node) 是指在ROS中運行的最小處理器單元可以把它看作一個可執行程序。在ROS中,建議爲一個目的創建一個節點,建議設計時注重可重用性。例如,在移動機器人的情況下,爲了驅動機器人,將每個程序細分化。也就是說,使用傳感器驅動、傳感器數據轉換、障礙物判斷、電機驅動、編碼器輸入和導航等多個細分節點。

功能包
功能包(package) 6是構成ROS的基本單元。ROS應用程序是以功能包爲單位開發的。功能包包括至少一個以上的節點或擁有用於運行其他功能包的節點的配置文件。它還包含功能包所需的所有文件,如用於運行各種進程的ROS依賴庫、數據集和配置文件等。目前註冊爲官方功能包的數量以2017年7月爲準爲:ROS Indigo多達約2500個(http://repositories.ros.org/status_page/ ros_indigo_default.html),ROS Kinetic多達約1600個(http://repositories.ros.org/status_page/ros_kinetic_default.html)。
元功能包
元功能包(metapackage) 7是一個具有共同目的的功能包的集合。例如,導航元功能包包含AMCL、DWA、EKF和map_server等10餘個功能包
消息
節點之間通過消息(message) 來發送和接收數據。消息是諸如integer、floatingpoint和boolean等類型的變量。用戶還可以使用諸如消息裏包括消息的簡單數據結構或列舉消息的消息數組的結構。使用消息的通信方法包括TCPROS,UDPROS等,根據情況使用單向消息發送/接收方式的話題(topic)雙向消息請求(request)/響應(response)方式的服務(service)。

話題
話題(topic) 就是“故事”。在發佈者(publisher)節點關於故事向主節點註冊之後,它以消息形式發佈關於該故事的廣告。希望接收該故事的訂閱者(subscriber)節點獲得在主節點中以這個話題註冊的那個發佈者節點的信息。基於這個信息,訂閱者節
點直接連接到發佈者節點,用話題發送和接收消息。
發佈與發佈者
發佈(publish)是指以與話題的內容對應的消息的形式發送數據。爲了執行發佈,發佈者(publisher)節點在主節點上註冊自己的話題等多種信息,並向希望訂閱的訂閱者節點發送消息發佈者在節點中聲明自己是執行發佈的個體。單個節點可以成爲多個發佈者。
訂閱與訂閱者
訂閱是指以與話題內容對應的消息的形式接收數據。爲了執行訂閱,訂閱者節點在主節點註冊自己的話題等多種信息,並從主節點接收那些發佈此節點要訂閱的話題的發佈者節點的信息。基於這個信息,訂閱者節點直接聯繫發佈者節點來接收消息。訂閱者在節點中聲明自己執行訂閱的個體。單個節點可以成爲多個訂閱者。
服務
服務(service) 消息通信是服務客戶端(service client)與服務服務器(service server)之間的同步雙向消息通信。其中服務客戶端請求對應於特定目的任務的服務,而服務服務器則負責服務響應
服務服務器
服務服務器(service server)是以請求作爲輸入,以響應作爲輸出的服務消息通信的服務器。請求和響應都是消息,服務器收到服務請求後,執行指定的服務,並將結果下發給服務客戶端。服務服務器用於執行指定命令的節點。
服務客戶端
服務客戶端(service client)是以請求作爲輸出並以響應作爲輸入的服務消息通信的客戶端。請求和響應都是消息,併發送服務請求到服務服務器後接收其結果。服務客戶端用於傳達給定命令並接收結果值的節點。
動作
動作(action) 11是在需要像服務那樣的雙向請求的情況下使用的消息通信方式,不同點是在處理請求之後需要很長的響應,並且需要中途反饋值。動作文件也非常類似於服務,目標(goal)和結果(result)對應於請求和響應。此外,還添加了對應於中途的反饋(feedback)。它由一個設置動作目標(goal)的動作客戶端(action client)和一個動作服務器(action server),動作服務器根據目標執行動作,併發送反饋和結果。
動作客戶端和動作服務器之間進行異步雙向消息通信
動作服務器
動作服務器(action server)以從動作客戶端接收的目標作爲輸入並且以結果和反饋值作爲輸出的消息通信的服務器。在接收到來自客戶端的目標值後,負責執行實際的
動作。
動作客戶端動作客戶端(action client)是以目標作爲輸出並以從動作服務器接收待結果和反饋值作爲輸入的消息通信的客戶端。它將目標交付給動作服務器,收到結果和反饋,並給出下一個指示或取消目標。
參數
ROS中的參數(parameter) 是指節點中使用的參數。可以把它想象成一個Windows程序中的*.ini配置文件。這些參數是默認(default)設置的,可以根據需要從外部讀取或寫入。尤其是,它可以通過使用外部的寫入功能實時更改設置值,因此非常有
用。例如,您可以指定與外部設備連接的PC的USB端口、相機校準值、電機速度或命令的最大值和最小值等設置值。
參數服務器
參數服務器(parameter server) 是指在功能包中使用參數時,註冊各參數的服務器。參數服務器也是主節點的一個功能
catkin
catkin是指ROS的構建系統。ROS的構建系統基本上使用CMake(Cross Platform Make),並在功能包目錄中CMakeLists.txt文件中描述構建環境。在ROS中,我們將CMake修改成專爲ROS定製的catkin構建系統。catkin從ROS Fuerte版本開始進行alpha測試,並從Groovy版本開始核心功能包轉換爲catkin,且從Hydro版本開始應用於大部分功能包。catkin 構建系統讓用戶方便使用與ROS相關的構建、功能包管理以及功能包之間的依賴關係等。現在使用ROS的話,需要使用catkin而不是rosbuild。
roscore
roscore16是運行ROS主節點的命令。也可以在另一臺位於同一個網絡內的計算機上運行它。但是,除了支持多roscore的某些特殊情況,roscore在一個網絡中只能運行一個。運行ROS時,將使用您在ROS_MASTER_URI變量中列出的URI地址和端口。如果用
戶沒有設置,會使用當前本地IP作爲URI地址並使用端口11311。
rosrun
rosrun17是ROS的基本運行命令。它用於在功能包中運行一個節點。節點使用的URI地址將存儲在當前運行節點的計算機上的ROS_HOSTNAME環境變量作爲URI地址,端口被設置爲任意的固有值。
roslaunch
如果rosrun是執行一個節點的命令,那麼roslaunch18是運行多個節點的概念。該命令允許運行多個確定的節點。其他功能還包括一些專爲執行具有諸多選項的節點的ROS命令,比如包括更改功能包參數或節點名稱、配置節點命名空間、設置ROS_ROOT和ROS_PACKAGE_PATH以及更改環境變量19等。
roslaunch使用*.launch文件來設置可執行節點,它基於可擴展標記語言(XML),
並提供XML標記形式的多種選項。
bag
用戶可以保存ROS中發送和接收的消息的數據,這時用於保存的文件格式稱爲bag20,是以*.bag作爲擴展名。在ROS中,這個功能包可以用來存儲信息並在需要時可以回放以前的情況。例如,當使用傳感器執行機器人實驗時,使用bag將傳感器值以消息形
式保存。有了這些保存的信息,即使不重複執行之前的實驗,也能通過回放保存的bag文件來反覆利用當時的傳感器值。特別的,如果利用rosbag的記錄和回放功能,在開發那些需要反覆修改程序的算法的時候會非常有用。
 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章