精通ROS機器人編程(原書第2版) 》 —1.4 理解ROS的文件系統

      網友投稿 796 2025-04-02

      1.4 理解ROS的文件系統

      ROS不僅是一個開發框架,它提供了各種工具和軟件庫,還提供了類似OS的功能(如硬件抽象、軟件包管理、開發人員工具鏈等),因此我們可以將 ROS 視為一種超操作系統(meta-operating system)。與真正的操作系統一樣, ROS 文件以特定的方式組織在硬盤上,如圖1-1所示。

      圖1-1 ROS文件系統級

      以下是文件系統中每個模塊的說明:

      《精通ROS機器人編程(原書第2版) 》 —1.4 理解ROS的文件系統

      軟件包:ROS軟件包是ROS框架中最基本的單位,它們包含一個或多個ROS程序 (稱為節點)、庫、配置文件等。它們組合在一起作為一個單元。軟件包是 ROS 軟件中基本的構成項和發布項。

      超軟件包:超軟件包指的是一個或多個相關的軟件包以松散的形式組合在一起。本質上講,超軟件包是一種虛擬軟件包,不包含任何源代碼,也不包含常見軟件包中的各種文件。

      超軟件包清單:超軟件包清單類似于軟件包清單,區別在于它可能包含其他軟件包,即那些運行時需要的依賴項,并且聲明了一個export(導出)標識。

      消息 (.msg):ROS消息是從一個ROS進程發送到另一個進程的一種信息。我們可以在一個軟件包的 msg 文件夾中定義消息(my_package/msg/MyMessageType.msg),其中“.msg”是消息文件的擴展名。

      服務(.srv):ROS服務是一種進程間的請求/應答方式。應答和請求的數據類型可以在一個軟件包的srv文件夾內定義 (my_package/srv/MyServiceType.srv)。

      軟件包倉庫:大多數ROS 軟件包采用版本控制系統(Version Control System,VCS) 進行維護,如 Git、Subversion(svn)、Mercurial (hg) 等。在一個版本控制系統下的一組軟件包稱為軟件包倉庫,倉庫中的軟件包可以通過catkin自動發布工具bloom進行對外發布。

      圖1-2是一個軟件包的文件和文件夾的組織示意圖,后面幾節將介紹如何創建這個軟件包。

      1.4.1 ROS軟件包

      ROS軟件包的典型結構如圖1-3所示。

      圖1-3 C++ ROS軟件包的典型結構

      下面簡單介紹每個文件夾和文件的用途:

      config:ROS 軟件包用到的所有配置文件都在此文件夾中。此文件夾由用戶創建,一般習慣將其命名為 config,將配置文件放置其中。

      include/package_name:此文件夾包含了ROS 軟件包用到的頭文件和庫文件。

      script:可執行的 Python 腳本放在此文件中。在圖1-3中,我們可以看到兩個示例腳本。

      src:此文件夾存放C++ 源代碼。

      launch:此文件夾存放啟動一個或多個 ROS 節點的啟動文件。

      msg:此文件夾包含用戶定制化消息的定義。

      srv:此文件夾包含各種服務的定義。

      action:此文件夾包含動作文件。下一章將介紹這類文件的詳細內容。

      package.xml:這是軟件包清單文件。

      CMakeLists.txt:此文件包含編譯軟件包的各類指令。

      為了能創建、修改、使用 ROS軟件包,我們需要先了解一些常用命令。下面是一些使用ROS軟件包的常用命令:

      catkin_create_pkg:此命令用于創建一個新軟件包。

      rospack:此命令用于獲取軟件包相關的信息。

      catkin_make:此命令用于在工作區中編譯軟件包。

      rosdep:此命令將安裝一個軟件包所需的系統依賴項。

      為了能使用軟件包,ROS提供了一個類似bash的命令,將其命名為rosbash(http://wiki.ros.org/rosbash), 可用于瀏覽和操作ROS軟件包。下面是若干rosbash 命令:

      roscd:此命令用軟件包的名稱、軟件包集的名稱或特殊位置信息切換當前所在文件夾。如將軟件包的名稱作為參數傳給該命令,系統將切換到那個軟件包所在的文件夾。

      roscp:此命令用于從軟件包中復制文件。

      rosed:此命令用于使用 vim 編輯器編輯一個文件。

      rosrun:此命令用于在軟件包內運行一個可執行文件。

      圖1-4顯示了常見的軟件包內package.xml 文件的定義。

      圖1-4 軟件包的package.xml 文件結構

      軟件開發

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel2003高級篩選教程
      下一篇:excel表格數據分析功能使用教程
      相關文章
      久久亚洲国产精品五月天| 亚洲中文无码亚洲人成影院| 亚洲成人中文字幕| 亚洲AV综合永久无码精品天堂| 亚洲乱码中文字幕综合| 亚洲精品中文字幕无乱码麻豆| 亚洲伊人久久成综合人影院| 亚洲乱亚洲乱淫久久| 久久久亚洲精品国产| 久久久久久a亚洲欧洲AV| 亚洲av永久无码制服河南实里| 性色av极品无码专区亚洲| 亚洲AV成人一区二区三区观看| 亚洲乱人伦中文字幕无码| 亚洲码一区二区三区| 91麻豆精品国产自产在线观看亚洲| 亚洲愉拍一区二区三区| 亚洲色最新高清av网站| 亚洲欧美成人综合久久久| 亚洲av无码偷拍在线观看| 无码一区二区三区亚洲人妻| 亚洲一区二区三区免费观看| 亚洲AV中文无码乱人伦下载| 亚洲av福利无码无一区二区 | 久久精品国产精品亚洲蜜月| 亚洲成在人线av| 亚洲视频在线一区二区| 亚洲片国产一区一级在线观看| 国产国拍亚洲精品福利 | 亚洲精品二三区伊人久久| 亚洲熟女综合一区二区三区| 亚洲AV无码之国产精品| 无码天堂亚洲国产AV| 精品亚洲一区二区三区在线播放| 亚洲中文字幕在线观看| 亚洲国产精品一区二区第一页免| 在线aⅴ亚洲中文字幕| 亚洲AV无码一区二区三区网址| 九月婷婷亚洲综合在线| 亚洲综合国产成人丁香五月激情| 亚洲精品无码aⅴ中文字幕蜜桃|