日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

ROS 2 index翻译(七)——用Colcon编译功能包(package)

發(fā)布時(shí)間:2025/7/14 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS 2 index翻译(七)——用Colcon编译功能包(package) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是一個(gè)用colcon如何創(chuàng)建和編譯ROS工作區(qū)的簡(jiǎn)要教程。這是一個(gè)實(shí)用的教程,并非來(lái)替代核心文檔。
ROS 2 在Bouncy之前的發(fā)行版,使用的編譯工具是ament_tools,這在ament教程中有闡述。

1. 背景
colcon是ROS編譯工具catkin_make,catkin_make_isolated,catkin_tools和ament_tools的換代。有關(guān)colcon設(shè)計(jì)的更多信息,請(qǐng)參閱此文檔。
源代碼可以在colcon GitHub organization中找到。

2. 先決條件

2.1 安裝ROS 2
確保按照安裝說(shuō)明安裝了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. 基礎(chǔ)知識(shí)
一個(gè)ROS工作空間是具有特定結(jié)構(gòu)的目錄。通常有一個(gè)src子目錄。該子目錄是ROS包的源代碼所在的位置。通常無(wú)特殊的話,目錄一開(kāi)始為空。
colcon完成源代碼編譯。默認(rèn)情況下,它將創(chuàng)建以下和src目錄的同級(jí)目錄:

  • build目錄是存儲(chǔ)中間文件的位置。對(duì)于每個(gè)包,將創(chuàng)建一個(gè)子文件夾,例如調(diào)用CMake。
  • install目錄是每個(gè)軟件包的安裝目錄。默認(rèn)情況下,每個(gè)包都將安裝到單獨(dú)的子目錄中。
  • log目錄包含有關(guān)每個(gè)colcon調(diào)用的各種日志記錄信息。

注意:與catkin相比,沒(méi)有devel目錄。

3.1 創(chuàng)建一個(gè)工作空間
首先,創(chuàng)建一個(gè)目錄(ros2_example_ws)來(lái)包含我們的工作區(qū):
Linux / OSX:

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

Windows:

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

此時(shí)工作空間包含一個(gè)空目錄src:

. └── src1 directory, 0 files

3.2 增加一些源文件
讓我們將示例存儲(chǔ)庫(kù)復(fù)制到src工作區(qū)的目錄中:

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

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

現(xiàn)在工作區(qū)應(yīng)該有ROS 2示例的源代碼:

. └── src└── examples├── CONTRIBUTING.md├── LICENSE├── rclcpp├── rclpy└── README.md4 directories, 3 files

3.3 Source 底層(underlay)
有一點(diǎn)很重要,我們?yōu)楝F(xiàn)有的ROS 2安裝提供了環(huán)境,這將為我們的工作區(qū)提供示例包所需的編譯依賴(lài)關(guān)系。這是通過(guò)source二進(jìn)制安裝或源文件安裝提供的安裝腳本來(lái)實(shí)現(xiàn)的,即另一個(gè)colcon工作區(qū)(請(qǐng)參閱安裝)。我們稱(chēng)此環(huán)境為底層(underlay)

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

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

colcon build --symlink-install

編譯完成后,我們應(yīng)該會(huì)看到 build、install 和 log 目錄:
?

. ├── build ├── install ├── log └── src4 directories, 0 files

3.5 運(yùn)行 tests
為測(cè)試剛創(chuàng)建的功能包,運(yùn)行下面指令:

colcon test

3.6 source 環(huán)境
當(dāng)colcon成功完成編譯后,輸出將在install目錄中。為了使用可執(zhí)行文件和庫(kù),你需要將諸如 install/bin 目錄添加到路徑中。colcon將在install目錄中生成bash / bat文件以幫助設(shè)置環(huán)境。這些文件將向你個(gè)人路徑和庫(kù)路徑添加所需的元素,并提供由包導(dǎo)出的bash或shell命令。
Linux / OS X:

. install/setup.bash

Windows:

call install\setup.bat

3.7 小試牛刀
在 source 后的環(huán)境中,我們可以運(yùn)行colcon編譯的可執(zhí)行文件。讓我們從示例中運(yùn)行訂閱者節(jié)點(diǎn):

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

在另一個(gè)終端中,讓我們運(yùn)行一個(gè)發(fā)布者節(jié)點(diǎn)(不要忘記 source 安裝腳本):

ros2 run examples_rclcpp_minimal_publisher publisher_member_function

您應(yīng)該看到來(lái)自發(fā)布者和訂閱者的消息,并且數(shù)字會(huì)遞增。

4. 創(chuàng)建你自己的包
colcon使用REP 149定義的package.xml規(guī)范(也支持 fromat 2)。
colcon支持多種編譯類(lèi)型,推薦的編譯類(lèi)型是ament_cmake和ament_python,也支持純cmake包。
ament_python編譯的一個(gè)示例是ament_index_python包,其中setup.py是編譯的主要入口點(diǎn)。
諸如demo_nodes_cpp之類(lèi)的包使用 ament_cmake 編譯類(lèi)型,并使用 CMake 作為編譯工具。
為方便起見(jiàn),您可以使用工具
ros2 pkg create 基于模板創(chuàng)建新包。
注意
:對(duì)于catkin用戶來(lái)說(shuō),catkin_create_package 與 ros2 pkg create 的作用相同。

5. 小貼士

  • 如果您不想編譯一個(gè)特定的包,用來(lái)在目錄中放置一個(gè)叫 COLCON_IGNORE 的空文件,那么它將不會(huì)被編入索引。

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

  • 如果要從包中運(yùn)行單個(gè)特定測(cè)試:

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

    ?

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

轉(zhuǎn)載于:https://www.cnblogs.com/tuxinbang/p/10705405.html

總結(jié)

以上是生活随笔為你收集整理的ROS 2 index翻译(七)——用Colcon编译功能包(package)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。