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
開啟終端機並輸入以下指令 ($ 代表本指令輸入於終端機,並非指令本身):
[pastacode lang=”bash” manual=”%24%20chmod%20%2Bx%20ZED_SDK_Tegra_L4T%3Cos_ver%3E_v%3Csdk_ver%3E.run%0A%0A%24%20.%2FZED_SDK_Tegra_L4T%3Cos_ver%3E_v%3Csdk_ver%3E.run” message=”” highlight=”” provider=”manual”/]請將上述指令的 <os_ver> 與 <sdk_ver> 換成與您所下載的檔案檔名對應。
本步驟完成之後就可以來安裝 ROS2了。本文所要安裝的ROS2版本是Foxy Fitzroy,細節請參考 ROS 官方網站。
2. 安裝ROS2 Foxy Fitzroy
2.1 設定語系
請輸入以下指令來確認語系,如果之前安裝系統時選擇中文語系,需更改為英文
[pastacode lang=”bash” manual=”%24%20locale” message=”” highlight=”” provider=”manual”/]安裝英文語系
[pastacode lang=”bash” manual=”%24%20sudo%20apt%20update%20%26%26%20sudo%20apt%20install%20locales%0A%24%20sudo%20locale-gen%20en_US%20en_US.UTF-8%0A%24%20sudo%20update-locale%20LC_ALL%3Den_US.UTF-8%20LANG%3Den_US.UTF-8%0A%24%20export%20LANG%3Den_US.UTF-8″ message=”” highlight=”” provider=”manual”/]確認更改後的設定如果順利設定英文語系會如下圖
[pastacode lang=”bash” manual=”%24%20locale” message=”” highlight=”” provider=”manual”/]2.2 將 ROS2 加入 APT 來源
[pastacode lang=”bash” manual=”%24%20sudo%20apt%20update%20%26%26%20sudo%20apt%20install%20curl%20gnupg2%20lsb-release%0A%0A%24%20sudo%20curl%20-sSL%20https%3A%2F%2Fraw.githubusercontent.com%2Fros%2Frosdistro%2Fmaster%2Fros.key%20-o%20%2Fusr%2Fshare%2Fkeyrings%2Fros-archive-keyring.gpg%0Aecho%20%22deb%20%5Barch%3D%24(dpkg%20–print-architecture)%20signed-by%3D%2Fusr%2Fshare%2Fkeyrings%2Fros-archive-keyring.gpg%5D%20http%3A%2F%2Fpackages.ros.org%2Fros2%2Fubuntu%20%24(source%20%2Fetc%2Fos-release%20%26%26%20echo%20%24UBUNTU_CODENAME)%20main%22%20%7C%20sudo%20tee%20%2Fetc%2Fapt%2Fsources.list.d%2Fros2.list%20%3E%20%2Fdev%2Fnull%0A%0A%23%20%E6%9B%B4%E6%96%B0%20APT%20%E4%BE%86%E6%BA%90%0A%24%20sudo%20apt%20update” message=”” highlight=”” provider=”manual”/]如果更新後出現CUDA版本錯誤,請執行以下指令來修復
[pastacode lang=”bash” manual=”%24%20sudo%20apt%20–fix-broken%20install%20-o%20Dpkg%3A%3AOptions%3A%3A%3D%22–force-overwrite%22″ message=”” highlight=”” provider=”manual”/]接著安裝 ROS2,根據網路連線狀況需要一點時間來下載並建置
[pastacode lang=”bash” manual=”%24%20sudo%20apt%20install%20ros-foxy-ros-base%0A%0A%23%20%E5%B0%87%E8%A8%AD%E5%AE%9A%E5%8A%A0%E5%85%A5%E7%92%B0%E5%A2%83%E8%AE%8A%E6%95%B8%0A%24%20echo%20%22source%20%2Fopt%2Fros%2Ffoxy%2Fsetup.bash%22%20%3E%3E%20~%2F.bashrc%0A%0A%23%E5%A5%97%E7%94%A8%E7%92%B0%E5%A2%83%E8%AE%8A%E6%95%B8%E8%A8%AD%E5%AE%9A%0A%24%20source%20~%2F.bashrc%0A%0A%23%20%E5%AE%89%E8%A3%9D%E7%9B%B8%E4%BE%9D%E5%A5%97%E4%BB%B6%0A%24%20sudo%20apt%20update%20%26%26%20sudo%20apt%20install%20-y%20build-essential%20cmake%20git%20libbullet-dev%20python3-colcon-common-extensions%20python3-flake8%20python3-pip%20python3-pytest-cov%20python3-rosdep%20python3-setuptools%20python3-vcstool%20wget” message=”” highlight=”” provider=”manual”/]完成,請用以下指令來初始化 ROSDEP
[pastacode lang=”bash” manual=”%24%20sudo%20rosdep%20init%0A%24%20rosdep%20update” message=”” highlight=”” provider=”manual”/]如果出現以下訊息代表初始化成功
3 安裝 ZED ROS2 WRAPPER
3.1 安裝ZED ROS2的相關套件
建立 ROS2 工作區及複製原始碼
[pastacode lang=”bash” manual=”%24%20mkdir%20-p%20~%2Fros2_ws%2Fsrc%0A%24%20cd%20~%2Fros2_ws%2Fsrc%2F%0A%24%20git%20clone%20–recursive%20https%3A%2F%2Fgithub.com%2Fstereolabs%2Fzed-ros2-wrapper.git%0A4%20cd%20..%2F” message=”” highlight=”” provider=”manual”/]3.2 確認相依套件及安裝
[pastacode lang=”bash” manual=”%24%20rosdep%20install%20–from-paths%20src%20–ignore-src%20-r%20-y%0A%24%20colcon%20build%20–symlink-install%20–cmake-args%3D-DCMAKE_BUILD_TYPE%3DRelease%0A%24%20echo%20source%20%24(pwd)%2Finstall%2Flocal_setup.bash%20%3E%3E%20~%2F.bashrc%0A%24%20source%20~%2F.bashrc” message=”” highlight=”” provider=”manual”/]4.安裝 ZED 範例
複製原始碼
[pastacode lang=”bash” manual=”%24%20cd%20~%2Fros2_ws%2Fsrc%2F%0A%24%20git%20clone%20https%3A%2F%2Fgithub.com%2Fstereolabs%2Fzed-ros2-examples.git%0A%24%20cd%20..%2F” message=”” highlight=”” provider=”manual”/]確認相依套件及安裝
[pastacode lang=”bash” manual=”%24%20rosdep%20install%20–from-paths%20src%20–ignore-src%20-r%20-y%0A%24%20colcon%20build%20–symlink-install%20–cmake-args%3D-DCMAKE_BUILD_TYPE%3DRelease%0A%24%20source%20~%2F.bashrc” message=”” highlight=”” provider=”manual”/]5.執行範例
ROS2 會用一個節點來執行一個功能,如果要開啟範例可能必須開啟多個節點(也就是多個終端機)。本文的範例是開啟ROS2常用的 rviz2 來顯示 ZED 的景深畫面。
首先開啟 zed_wrapper,負責傳送及處理影像
[pastacode lang=”bash” manual=”ros2%20launch%20zed_wrapper%20zed2i.launch.py” message=”” highlight=”” provider=”manual”/]接著開啟另外一個終端機,開啟 zed_display_rviz2 ,負責顯示接收到的影像
[pastacode lang=”bash” manual=”%24%20ros2%20launch%20zed_display_rviz2%20display_zed2i.launch.py” message=”” highlight=”” provider=”manual”/]執行完上述指令之後就會開啟 rviz2 介面,並可看到 ZED 景深攝影機的即時畫面
如果要執行物件偵測範例,請開啟以下路徑的檔案並修改內容 ~/ros2_ws/src/zed-ros2-wrapper/zed_wrapper/config/common.yaml。將其中的 object_detection - od_enabled 設為 true, 如下圖 (預設為 false )
開啟 zed_wrapper,負責傳送及處理影像
[pastacode lang=”bash” manual=”%24%20ros2%20launch%20zed_wrapper%20zed2i.launch.py” message=”” highlight=”” provider=”manual”/]開啟另外一個終端機並輸入以下指令
[pastacode lang=”bash” manual=”%24%20ros2%20launch%20zed_display_rviz2%20display_zed2i.launch.py” message=”” highlight=”” provider=”manual”/]就會出現如下 rviz2 畫面,並把偵測到的物體以 3D box 框起來:
以上 ZED 景深攝影機的 ROS2 範例,希望大家都能順利執行,希望您喜歡我們的文章喔!










