6前言
前一篇文章已經介紹了在 Jetson AGX Orin™ 上安裝 ROS 機器人作業系統,本文要介紹如何在Jetson AGX Orin™ 上安裝 ROS2 以及如何執行 ZED 景深攝影機的 ROS2 範例 – 使用其景深影像來進行物件偵測。
注意:執行ZED範例時建議要連上實體螢幕才可開啟畫面,使用SSH遠端連線時可能會有無法顯示畫面的情況發生。
撰寫/攝影 |
郭俊廷 |
時間 |
1 ~ 1.5 小時 |
材料表 |
|
難度 |
3(滿分5) |
本文
開始吧,請根據以下步驟來操作
1.安裝ZED SDK
首先一樣先需要在 Jetson AGX Orin 上安裝 ZED SDK,您的 Orin 必須先安裝搭配 NVIDIA Jetpack 5.0最新版本的 ZED SDK,才能接續安裝 ROS 或 ROS2。請點我下載 ZED SDK
開啟終端機並輸入以下指令 ($ 代表本指令輸入於終端機,並非指令本身):
$ chmod +x ZED_SDK_Tegra_L4T<os_ver>_v<sdk_ver>.run
$ ./ZED_SDK_Tegra_L4T<os_ver>_v<sdk_ver>.run
請將上述指令的 <os_ver>
與 <sdk_ver>
換成與您所下載的檔案檔名對應。
本步驟完成之後就可以來安裝 ROS2了。本文所要安裝的ROS2版本是Foxy Fitzroy,細節請參考 ROS 官方網站。
2. 安裝ROS2 Foxy Fitzroy
2.1 設定語系
請輸入以下指令來確認語系,如果之前安裝系統時選擇中文語系,需更改為英文
安裝英文語系
$ sudo apt update && sudo apt install locales
$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
$ export LANG=en_US.UTF-8
確認更改後的設定如果順利設定英文語系會如下圖
2.2 將 ROS2 加入 APT 來源
$ sudo apt update && sudo apt install curl gnupg2 lsb-release
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 更新 APT 來源
$ sudo apt update
如果更新後出現CUDA版本錯誤,請執行以下指令來修復
$ sudo apt --fix-broken install -o Dpkg::Options::="--force-overwrite"
接著安裝 ROS2,根據網路連線狀況需要一點時間來下載並建置
$ sudo apt install ros-foxy-ros-base
# 將設定加入環境變數
$ echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
#套用環境變數設定
$ source ~/.bashrc
# 安裝相依套件
$ sudo apt update && sudo apt install -y build-essential cmake git libbullet-dev python3-colcon-common-extensions python3-flake8 python3-pip python3-pytest-cov python3-rosdep python3-setuptools python3-vcstool wget
完成,請用以下指令來初始化 ROSDEP
$ sudo rosdep init
$ rosdep update
如果出現以下訊息代表初始化成功
3 安裝 ZED ROS2 WRAPPER
3.1 安裝ZED ROS2的相關套件
建立 ROS2 工作區及複製原始碼
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws/src/
$ git clone --recursive https://github.com/stereolabs/zed-ros2-wrapper.git
4 cd ../
3.2 確認相依套件及安裝
$ rosdep install --from-paths src --ignore-src -r -y
$ colcon build --symlink-install --cmake-args=-DCMAKE_BUILD_TYPE=Release
$ echo source $(pwd)/install/local_setup.bash >> ~/.bashrc
$ source ~/.bashrc
4.安裝 ZED 範例
複製原始碼
$ cd ~/ros2_ws/src/
$ git clone https://github.com/stereolabs/zed-ros2-examples.git
$ cd ../
確認相依套件及安裝
$ rosdep install --from-paths src --ignore-src -r -y
$ colcon build --symlink-install --cmake-args=-DCMAKE_BUILD_TYPE=Release
$ source ~/.bashrc
5.執行範例
ROS2 會用一個節點來執行一個功能,如果要開啟範例可能必須開啟多個節點(也就是多個終端機)。本文的範例是開啟ROS2常用的 rviz2 來顯示 ZED 的景深畫面。
首先開啟 zed_wrapper,負責傳送及處理影像
ros2 launch zed_wrapper zed2i.launch.py
接著開啟另外一個終端機,開啟 zed_display_rviz2 ,負責顯示接收到的影像
$ ros2 launch zed_display_rviz2 display_zed2i.launch.py
執行完上述指令之後就會開啟 rviz2 介面,並可看到 ZED 景深攝影機的即時畫面
如果要執行物件偵測範例,請開啟以下路徑的檔案並修改內容 ~/ros2_ws/src/zed-ros2-wrapper/zed_wrapper/config/common.yaml
。將其中的 object_detection - od_enabled
設為 true
, 如下圖 (預設為 false
)
開啟 zed_wrapper,負責傳送及處理影像
$ ros2 launch zed_wrapper zed2i.launch.py
開啟另外一個終端機並輸入以下指令
$ ros2 launch zed_display_rviz2 display_zed2i.launch.py
就會出現如下 rviz2 畫面,並把偵測到的物體以 3D box 框起來:
以上 ZED 景深攝影機的 ROS2 範例,希望大家都能順利執行,希望您喜歡我們的文章喔!
Post Views: 416