1. 程式人生 > 其它 >建立ROS軟體包

建立ROS軟體包

本教程介紹如何使用roscreate-pkgcatkin建立新的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

另外,如果你檢視一下當前目錄應該能看到builddevel這兩個目錄。在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_msgsroscpprospy

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命令工具來檢視這些一級依賴包。

請參考:cn/ROS/Tutorials/CreatingPackage - ROS Wiki