本教程介紹如何使用roscreate-pkg或catkin創建新的ROS軟件包,並使用rospack列出軟件包的依賴關係。
一個catkin軟件包由什麼組成?
一個包要想稱爲catkin軟件包,必須符合以下要求:
-
這個包必須有一個符合catkin規範的package.xml文件
-
這個package.xml文件提供有關該軟件包的元信息
-
-
這個包必須有一個catkin版本的CMakeLists.txt文件
-
如果它是個Catkin元包的話,則需要有一個CMakeList.txt文件的相關樣板
-
- 每個包必須有自己的目錄
- 這意味着在同一個目錄下不能有嵌套的或者多個軟件包存在
最簡單的軟件包看起來就像這樣:
my_package/ CMakeLists.txt package.xml
catkin工作空間中的軟件包
開發catkin軟件包的推薦方法是使用catkin工作空間,但是你也可以單獨開發catkin軟件包。一個簡單的工作空間如下所示:
workspace_folder/ -- WORKSPACE src/ -- SOURCE SPACE CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin package_1/ CMakeLists.txt -- CMakeLists.txt file for package_1 package.xml -- Package manifest for package_1 ... package_n/ CMakeLists.txt -- CMakeLists.txt file for package_n package.xml -- Package manifest for package_n
在繼續本教程之前請先按照創建catkin工作空間教程創建一個空白的catkin工作空間。
創建catkin軟件包
下面我們開始創建和構建一個catkin工作空間:
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make
catkin_make命令在catkin工作空間中是一個非常方便的工具。在你的工作空間中第一次運行它時,它會在src目錄下創建一個CMakeLists.txt的鏈接。
對於ROS Melodic和早期版本的Python 3用戶:注意,如果你從源代碼構建ROS來實現Python 3的兼容性,並適當地設置您的系統(即:安裝所有必需的ROS Python包的Python 3版本,例如catkin),那麼在乾淨的catkin工作區中的第一個catkin_make命令必須是:
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
這將會配置catkin_make使用Python 3,在以後的構建中可以只使用catkin_make。
另外,如果你查看一下當前目錄應該能看到build和devel這兩個目錄。在devel文件夾裏面你可以看到幾個setup.*sh文件。source這些文件中的任何一個都可以將當前工作空間設置在環境的最頂層。想要了解更多,請參考catkin文檔。接下來首先source一下新生成的setup.*sh文件:
source devel/setup.bash
要保證工作區被安裝腳本正確覆蓋,需確定ROS_PACKAGE_PATH環境變量包含你當前的工作空間目錄:
echo $ROS_PACKAGE_PATH /home/<username>/catkin_ws/src:/opt/ros/<distro>/share
切換到剛纔創建的空白catkin工作空間中的源文件空間目錄:
cd ~/catkin_ws/src
現在使用catkin_create_pkg命令創建一個名爲beginner_tutorials的新軟件包,這個軟件包依賴於std_msgs、roscpp和rospy:
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
這將會創建一個名爲beginner_tutorials的文件夾,這個文件夾裏面包含一個package.xml文件和一個CMakeLists.txt文件,這兩個文件都已經部分填寫了你在執行catkin_create_pkg命令時提供的信息。
catkin_create_pkg命令會要求你輸入package_name,如有需要還可以在後面添加一些需要依賴的其它軟件包:
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
catkin_create_pkg命令也有更多的高級功能,這些功能在catkin/commands/catkin_create_pkg中有描述。
構建一個catkin工作區並生效配置文件
現在你需要在catkin工作區中構建軟件包:
cd ~/catkin_ws catkin_make
工作空間構建完成後,在devel子目錄下創建了一個與你通常在/opt/ros/$ROSDISTRO_NAME下看到的目錄結構類似的結構。
要將這個工作空間添加到ROS環境中,你需要source一下生成的配置文件:
. ~/catkin_ws/devel/setup.bash
軟件包依賴關係
一級依賴
之前在使用catkin_create_pkg命令時提供了幾個軟件包作爲依賴關係,現在我們可以使用rospack命令工具來查看這些一級依賴包。