iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0
自我挑戰組

盯!視覺追蹤機器人 | ROS2打造追蹤機器人系列 第 4 篇

Day 4|「它」眼中的世界:打開 TurtleBot3 的相機視角

  • 分享至 

  • xImage
  •  

今天終於到了週五,想必大家也想好好過個週末時光吧!今天就先做一件簡單的事,實際看看機器人眼中的世界。

昨天透過 ros2 topic list 找到了 /camera/image_raw,也確認這個 Topic 有 Publisher 正在發布資料。不過到目前為止,我只是知道這裡有相機資料,還沒有真正看到機器人相機所看到的畫面。

所以今天的目標很單純:把相機畫面打開來看看。

查看影像前的準備

開發環境沿用昨天的 Ubuntu 22.04、ROS2 Humble、TurtleBot3 Waffle 與 Gazebo Classic。

先依照 Day 3 的方式啟動模擬環境,並且保留執行 Gazebo 的終端機繼續運作。
接著開啟另一個終端機,載入 ROS2 環境:

source /opt/ros/humble/setup.bash

如果有使用自己編譯的工作空間,也需要接著載入該工作空間的 install/setup.bash,路徑依自己的安裝位置而定。以下一樣以 /camera/image_raw 為例。如果昨天找到的相機 Topic 名稱不同,記得換成自己實際使用的名稱。

相機 Topic 裡到底放什麼?

我們在昨天的 ros2 topic info 已經看過訊息型別,今天也可用下面這個指令,單獨查看這一項:

ros2 topic type /camera/image_raw

以這個影像 Topic 為例,會看到:

sensor_msgs/msg/Image

這裡也讓我重新整理了一次 Topic 和 Message Type 的差別:

項目 本例名稱 說明
Topic /camera/image_raw 資料傳遞的頻道名稱
Message Type sensor_msgs/msg/Image 這個頻道傳送資料時使用的訊息格式

如果沿用前面的「聊天室」比喻,Topic 就像聊天室的名稱,而 Message Type 則規定訊息要用什麼格式傳。

打開相機畫面

接著使用 rqt_image_view 查看 ROS2 中的影像 Topic。這是一個可以顯示 ROS 影像的圖形工具。

相關介紹可以參考 ROS Index 的套件說明。

在剛剛載入環境的終端機輸入:

ros2 run rqt_image_view rqt_image_view

開啟後在下拉選單中選擇 /camera/image_raw,就可以看到 TurtleBot3 模擬相機目前看到的畫面。如果選單裡沒有這個名稱,可以回頭用 ros2 topic list 確認實際的相機 Topic,並檢查模擬環境是否仍在執行。

在 Gazebo 視窗裡,我們可以從外部觀察機器人與場景;這裡顯示的畫面,則來自機器人相機本身的位置與朝向,也就是機器人看到的視角。這也接回前面的概念:相機的發布端負責送出影像,rqt_image_view 則訂閱對應的 Topic,接收並顯示畫面。

這一步雖然看起來很簡單,但對我的專題來說很重要。因為後面不管是 OpenCV、目標辨識還是視覺追蹤,最前面的資料來源都是從這裡開始。

重點整理

  • 使用 ros2 topic type 查看 Topic 的訊息型別。
  • Topic 是頻道名稱,Message Type 是傳送資料時使用的訊息格式。
  • 使用 rqt_image_view,選擇相機對應的 Topic,查看機器人的相機視角。

NEXT

到目前為止,已經從前一天的找到相機 Topic,進一步確認它傳送的是影像資料,也實際看到機器人的相機視角。不過,目前只是讓我們看見影像,還沒有加入辨識或追蹤的程式。

接下來會嘗試用 Python 接收 ROS2 的影像,再交給 OpenCV 處理,慢慢接到後續的視覺追蹤。


上一篇
Day 3|機器人看到什麼?查看 ROS2 的相機資料
下一篇
Day 5|從 ROS2 Image 到 OpenCV:讓 Python 讀取相機
系列文
盯!視覺追蹤機器人 | ROS2打造追蹤機器人 共 12 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言