NVIDIA® Jetson AGX Orin™ 執行ROS2作業系統,使用ZED景深攝影機進行物件偵測

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 設定語系

請輸入以下指令來確認語系,如果之前安裝系統時選擇中文語系,需更改為英文

$ locale

安裝英文語系

$ 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

確認更改後的設定如果順利設定英文語系會如下圖

$ locale

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 範例,希望大家都能順利執行,希望您喜歡我們的文章喔!

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *