4.1 ROS元功能包
阿新 • • 發佈:2021-06-23
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 中不可以有換行。
另請參考: