ROS有三个层级的概念,分别是:文件系统级、计算图级和开源社区级
ROS有三個層級的概念,分別是:文件系統級、計算圖級和開源社區級。
文件系統級:ROS的內部結構、文件結構和所需的核心文件都在這一層里,理解ROS文件系統是入門ROS的基礎。一個ROS程序的結構,是一些按不同功能進行區分的文件夾。一般的文件夾結構是:
工作空間文件夾(workspace)->源文件空間文件夾(src)、編譯空間文件夾(build)和開發空間文件夾(devel);
源文件空間文件夾再進一步放置功能包。
計算圖級:主要是指進程之間(節點之間)的通信。ROS創建了一個連接所有進程的網絡,通過這個網絡節點之間完成交互,獲取其他節點發布的信息。圍繞計算圖級和節點,一些重要的概念也隨即產生:節點,節點管理器,參數服務器,消息,服務,主題(或稱話題)和消息記錄包,這些概念后面會逐一說明。
開源社區級:主要是指ROS資源的獲取和分享。通過獨立的網絡社區,我們可以共享和獲取知識、算法和代碼,開源社區的大力支持使得ROS系統得以快速成長。
計算圖級下的幾個重要概念
節點:作為ROS系統的核心,節點是用C++或Python(ROS客戶端庫roscpp、rospy)編寫的程序,用來執行任務或進程。
消息:節點之間通過消息進行通信,這些消息包含一個節點發送給其他節點的信息數據,消息類型有ROS標準類型和基于標準消息開發的自定義類型兩種。
主題:有些書籍翻譯為話題,指節點發布的消息的去處。節點每一條消息都要發布到主題,一個節點a發布信息數據,就說該節點a向主題發布消息。其他節點可以訂閱這個節點a發布的主題,以此來接收a的消息。所以歸根結底節點之間的通信,是主題之間的發布和訂閱實現的,所以如果你在ROS下打開rqt_graph(一個ROS應用工具),會看到節點之間的通信機制是這樣的:節點(主題)節點。藍色和綠色為節點,中間橫線上的/turtle1/cmd_vel是主題。
當然,如果我們想查看主題的消息類型,可以使用命令行工具:rostopic type topicname;如果想看這個消息類型的內部結構,則可以使用:rosmsg show typename。節點通過主題與另一個節點通信是間接實現的,然而直接與節點通信不能使用主題實現,需要使用服務。
服務:名稱唯一,由用戶開發,節點不提供標準服務(因為你的節點本身是用客戶端庫編寫的),如果你想獲得某個節點的請求和應答,即直接與某個節點交互,只能使用服務。當然,這些服務是節點提供的服務,如果節點沒有提供服務,我們就無法請求和獲取應答。一個節點提供某個服務時,通過使用ROS客戶端庫編寫的代碼(節點)就可以與它通信。查看一個節點提供的服務可使用命令工具:rosnode info nodename,例如:rosnode info /turtlesim,輸出的信息中,Services部分就是該節點具有的服務。
直接與服務交互,可使用命令行工具:rosservice call servicename,例如:rosservice call /clear,此時小海龜的運動軌跡會被清除,當然前提是小海龜節點已經啟動,并且小海龜已經有移動痕跡。
至此,幾個基本的ROS概念我們已經有所了解。有說得不夠正確的地方歡迎指正。
---------------------?
作者:jimson_zhu?
來源:CSDN?
原文:https://blog.csdn.net/jimson_zhu/article/details/81227495?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
以上是生活随笔為你收集整理的ROS有三个层级的概念,分别是:文件系统级、计算图级和开源社区级的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银保监会突然出手,点名银行信用卡,这三件
- 下一篇: Redmi K50新配色晴雪首销秒光:2