1. 程式人生 > 其它 >4.1 ROS元功能包

4.1 ROS元功能包

4.1 ROS元功能包

場景:完成ROS中一個系統性的功能,可能涉及到多個功能包,比如實現了機器人導航模組,該模組下有地圖、定位、路徑規劃...等不同的子級功能包。那麼呼叫者安裝該模組時,需要逐一的安裝每一個功能包嗎?

顯而易見的,逐一安裝功能包的效率低下,在ROS中,提供了一種方式可以將不同的功能包打包成一個功能包,當安裝某個功能模組時,直接呼叫打包後的功能包即可,該包又稱之為元功能包(metapackage)

概念

MetaPackage是Linux的一個檔案管理系統的概念。是ROS中的一個虛包,裡面沒有實質性的內容但是它依賴了其他的軟體包,通過這種方法可以把其他包組合起來,我們可以認為它是一本書的目錄索引,告訴我們這個包集合中有哪些子包,並且該去哪裡下載。

例如:

  • sudo apt install ros-noetic-desktop-full 命令安裝ros時就使用了元功能包,該元功能包依賴於ROS中的其他一些功能包,安裝該包時會一併安裝依賴。

還有一些常見的MetaPackage:navigation moveit! turtlebot3 ....

作用

方便使用者的安裝,我們只需要這一個包就可以把其他相關的軟體包組織到一起安裝了。

實現

首先:新建一個功能包

然後:修改package.xml,內容如下:

 <exec_depend>被整合的功能包</exec_depend>
 .....
 <export>
   <metapackage />
 </export>

最後:修改 CMakeLists.txt,內容如下:

cmake_minimum_required(VERSION 3.0.2)
project(demo)
find_package(catkin REQUIRED)
catkin_metapackage()

PS:CMakeLists.txt 中不可以有換行。


另請參考: