建立ROS軟體包
本教程介紹如何使用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_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命令工具來檢視這些一級依賴包。