【ROS翻譯】ROS2 Ament教程


 說明:
 本文首發於 Playfish Blog,轉載請保留鏈接。


概述


這將爲你提供一個快速總結,如何使用一個工作空間來啓動和運行。它將是一個實用的教程,並不是用來取代核心文檔的。

背景


Ament是catkin元構建工具的一個迭代。欲瞭解更多有關Ament設計的資料,請參閱本文件

該源可以在ament Github組織中找到

先決條件


開發環境


請確保根據build-from-source指令設置開發環境。

基礎知識


一個ament空間是一個具有特定結構的目錄,通常有一個src子目錄,在該子目錄中,源代碼將位於其中,一般情況下,目錄開始爲空。

Ament是由源生成的。默認情況下,它將創建一個和src並行的目錄:build和install目錄。build目錄將是存儲中間文件的地方。對於每個包,將在其中創建一個子文件夾,其中將調用CMake。install目錄是每個包被安裝到的地方。

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

 創建目錄結構


在~/ros2_ws下創建基本目錄結構:

mkdir -p ~/ros_ws/src
cd ~/ros2_ws

這是~/ros2_ws的目錄結構,你可以在這一點上看到:
.
└── src

1 directory, 0 files

添加源碼

首先,我們需要安裝一個沒有任何ROS2安裝的底層。

wget https://raw.githubusercontent.com/ros2/ros2/master/ros2.repos
vcs import ~/ros2_ws/src < ros2.repos

這是~/ros2_ws的目錄結構,你可以期望在添加了數據源之後(請注意,具體的結構和目錄的數量可能會隨着時間而變化)


.
├── ros2.repos
└── src
    ├── ament
    │   ├── ament_cmake
    │   ├── ament_index
    |   ...
    │   ├── osrf_pycommon
    │   └── uncrustify
    ├── eProsima
    │   ├── Fast-CDR
    │   └── Fast-RTPS
    ├── ros
    │   ├── class_loader
    │   └── console_bridge
    └── ros2
        ├── ament_cmake_ros
        ├── common_interfaces
        ├── demos
        ...
        ├── urdfdom
        ├── urdfdom_headers
        └── vision_opencv

51 directories, 1 file


運行build


因爲這是一個引導環境,我們需要通過它的完整路徑調用ament.py。

注意:在將來,一旦在你的系統上安裝了ament,或者在工作環境下,這將不再是必要的。

由於在ament上沒有devel空間,因此需要安裝它支持的每個包--symlink-install。

這允許通過將source空間中的文件(例如Python文件或其他未編譯的資源)更改爲更快的迭代,從而更改已安裝的文件。

src/ament/ament_tools/scripts/ament.py build --build-tests --symlink-install

運行測試


要運行你剛剛構建的測試,使用--build-test選項,運行以下操作:

src/ament/ament_tools/scripts/ament.py test

如果你在包括測試之前建好了(並且安裝了)工作區,你可以跳過構建和安裝步驟來加快進程。

src/ament/ament_tools/scripts/ament.py test --skip-build --skip-install

source環境


當構造成功完成構建時,輸出將在install目錄中。

要使用你需要的可執行文件和庫,請將install/bin目錄添加到你的路徑中。

Ament將在install目錄中生成bash文件,以幫助設置環境。

這些文件將向你的路徑和庫路徑添加所需的元素,並提供由包導出的bash或shell命令。

. install/local_setup.bash

NB:這與catkin略有不同。

local_setup.*文件與setup.*文件略有不同。它只會應用當前工作區的設置。

當使用多個工作空間時,你仍然會提供setup.*文件獲取環境,包括所有的父工作區。

嘗試演示


通過環境來源,你現在可以運行由ament構建的可執行文件。
ros2 run demo_nodes_cpp listener &
ros2 run demo_nodes_cpp talker

你會看到數字在增加。

讓我們刪除節點並嘗試創建我們自己的工作區覆蓋。
^-C
kill %1

開發你的功能包


REP 140中,Ament使用和catkin一樣的指定文件package.xml。

你可以在src目錄下創建你自己的功能包,然而,在迭代的時候要用一個疊加來進行迭代。

創建覆蓋


現在你已經設置好了你的引導,你也會發現ament在你的路徑上。

讓我們創建一個新的覆蓋目錄: ~/ros2_overlay_ws。

mkdir -p ~/ros2_overlay_ws/src
cd ~/ros2_overlay_ws/src

並且我們開始覆蓋ros2/examples 存儲庫

# If you know that you're using the latest branch of all
# repositories in the underlay, you can also get the latest
# version of the ros2/examples repository, with this command:
#   git clone https://github.com/ros2/examples.git
# Otherwise, clone a copy from the underlay source code:
git clone ~/ros2_ws/src/ros2/examples

構建覆蓋層,但是讓我們使用debug構建,這樣我們就可以確保得到調試符號:

cd ~/ros2_overlay_ws
ament build --cmake-args -DCMAKE_BUILD_TYPE=Debug

現在這個覆蓋層在現有的覆蓋層之上,所以你會發現`talker`現在指的是來自底層的那個。

如果你source ~/ros2_overlay_ws/install/local_setup.bash將更改爲在覆蓋層中引用talker。

如果你正在返回一個新的終端到你的開發,並且想要在你的覆蓋層上進行開發,你可以簡單地提供~/ros2_overlay_ws/install/setup.bash將自動地爲所有的父工作區環境提供源。

創建自己的包


你可以創建自己的包。
等效的catkin_create_package將被移植到ament,但目前還沒有。

空間支持多種構建類型。
推薦的構建類型是ament_cmake和ament_python。
也支持純cmake包。
它將增加對更多構建類型的支持。

ament_python構建的一個示例是ament_tools包,其中setup.py是構建的主要入口點。

demo_nodes_cpp這樣的包使用ament_cmake構建類型,並使用CMake作爲構建工具。

提示


  •  如果你不想構建一個特定的包,那麼在目錄中放置一個名爲“AMENT_IGNORE”的空文件,它將不會被索引。

    "Catch all"選項,例如:--cmake-args應該放在其他選項之後,或用'--'分隔:
    
ament build . --force-cmake-configure --cmake-args -DCMAKE_BUILD_TYPE=Debug -- --ament-cmake-args -DCMAKE_BUILD_TYPE=Release


  •  如果你想從包運行單個特定的測試:
ament test --only-packages YOUR_PKG_NAME --ctest-args -R YOUR_TEST_IN_PKG



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