ROS 2 index翻譯(七)——用Colcon編譯功能包(package)

這是一個用colcon如何創建和編譯ROS工作區的簡要教程。這是一個實用的教程,並非來替代核心文檔。
ROS 2 在Bouncy之前的發行版,使用的編譯工具是ament_tools,這在ament教程中有闡述。

1. 背景
colcon是ROS編譯工具catkin_makecatkin_make_isolatedcatkin_toolsament_tools的換代。有關colcon設計的更多信息,請參閱此文檔
源代碼可以在colcon GitHub organization中找到。

2. 先決條件

2.1 安裝ROS 2
確保按照安裝說明安裝了ROS 2 。
注意:如果從Debian軟件包安裝,本教程需要“桌面安裝”。

2.2 安裝colcon
Liunx:

sudo apt install python3-colcon-common-extensions

OS X :

python3 -m pip install colcon-common-extensions

Windows:

pip install -U colcon-common-extensions

3. 基礎知識
一個ROS工作空間是具有特定結構的目錄。通常有一個src子目錄。該子目錄是ROS包的源代碼所在的位置。通常無特殊的話,目錄一開始爲空。
colcon完成源代碼編譯。默認情況下,它將創建以下和src目錄的同級目錄:

  • build目錄是存儲中間文件的位置。對於每個包,將創建一個子文件夾,例如調用CMake。
  • install目錄是每個軟件包的安裝目錄。默認情況下,每個包都將安裝到單獨的子目錄中。
  • log目錄包含有關每個colcon調用的各種日誌記錄信息。

注意:與catkin相比,沒有devel目錄。

3.1 創建一個工作空間
首先,創建一個目錄(ros2_example_ws)來包含我們的工作區:
Linux / OSX:

mkdir -p ~/ros2_example_ws/src
cd ~/ros2_example_ws

Windows:

md \dev\ros2_example_ws\src
cd \dev\ros2_example_ws

此時工作空間包含一個空目錄src

.
└── src

1 directory, 0 files

3.2 增加一些源文件
讓我們將示例存儲庫複製到src工作區的目錄中:

git clone https://github.com/ros2/examples src/examples

注意:建議檢查版本是否與已安裝的ROS版本兼容(例如crystal)。

現在工作區應該有ROS 2示例的源代碼:

.
└── src
    └── examples
        ├── CONTRIBUTING.md
        ├── LICENSE
        ├── rclcpp
        ├── rclpy
        └── README.md

4 directories, 3 files

3.3 Source 底層(underlay)
有一點很重要,我們爲現有的ROS 2安裝提供了環境,這將爲我們的工作區提供示例包所需的編譯依賴關係。這是通過source二進制安裝或源文件安裝提供的安裝腳本來實現的,即另一個colcon工作區(請參閱安裝)。我們稱此環境爲底層(underlay)

我們的工作空間 ros2_examples_ws 覆蓋(overlay)在現有的ROS 2安裝的頂層(ROS 2 工作空間的覆蓋機制,查看)。通常,在計劃迭代少量軟件包時,建議使用工作空間覆蓋機制,而不是將所有軟件包都放在同一個工作空間。

3.4 編譯工作空間
在工作區的根目錄中,運行 colcon build。即使有些編譯類型,例如 ament_cmake,不支持 devel 空間的概念,並且需要包安裝,但colcon支持 --symlink-install 選項。這允許通過更改 source 空間中的文件來更改已安裝的文件,以便更快地進行迭代(例如Python文件或其他未編譯的資源)。

colcon build --symlink-install

編譯完成後,我們應該會看到 build、install 和 log 目錄:
 

.
├── build
├── install
├── log
└── src

4 directories, 0 files

3.5 運行 tests
爲測試剛創建的功能包,運行下面指令:

colcon test

3.6 source 環境
當colcon成功完成編譯後,輸出將在install目錄中。爲了使用可執行文件和庫,你需要將諸如 install/bin 目錄添加到路徑中。colcon將在install目錄中生成bash / bat文件以幫助設置環境。這些文件將向你個人路徑和庫路徑添加所需的元素,並提供由包導出的bash或shell命令。
Linux / OS X:

. install/setup.bash

Windows:

call install\setup.bat

3.7 小試牛刀
在 source 後的環境中,我們可以運行colcon編譯的可執行文件。讓我們從示例中運行訂閱者節點:

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

在另一個終端中,讓我們運行一個發佈者節點(不要忘記 source 安裝腳本):

ros2 run examples_rclcpp_minimal_publisher publisher_member_function

您應該看到來自發布者和訂閱者的消息,並且數字會遞增。

4. 創建你自己的包
colcon使用REP 149定義的package.xml規範(也支持 fromat 2)。
colcon支持多種編譯類型,推薦的編譯類型是ament_cmakeament_python,也支持純cmake包。
ament_python編譯的一個示例是ament_index_python包,其中setup.py是編譯的主要入口點。
諸如demo_nodes_cpp之類的包使用 ament_cmake 編譯類型,並使用 CMake 作爲編譯工具。
爲方便起見,您可以使用工具
ros2 pkg create 基於模板創建新包。
注意
:對於catkin用戶來說,catkin_create_package 與 ros2 pkg create 的作用相同

5. 小貼士

  • 如果您不想編譯一個特定的包,用來在目錄中放置一個叫 COLCON_IGNORE 的空文件,那麼它將不會被編入索引。

  • 如果想避免在CMake軟件包中配置和編譯 tests,你可以通過這個指令:--cmake-args -DBUILD_TESTING=0。

  • 如果要從包中運行單個特定測試:

    colcon test --packages-select YOUR_PKG_NAME --ctest-args -R YOUR_TEST_IN_PKG

     

英文原文:https://index.ros.org/doc/ros2/Tutorials/Colcon-Tutorial/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章