iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
自我挑戰組

ROS 筆記:要怎麼叫無人機自己飛系列 第 7

【ROS 筆記:要怎麼叫無人機自己飛】Day 7:透過 TurtleSim 來熟悉 ROS 節點常用指令

  • 分享至 

  • xImage
  •  

上一篇用個簡短的程式來說明 ROS 節點的樣貌,不過只輸出文字距離開發一個機器人軟體還太遙遠了。因此這篇想用 TurtleSim 來進一步介紹節點怎麼控制機器人,模擬機器人軟體在 ROS 系統運作的感覺。

烏龜模擬器(TurtleSim)

TurtleSim 是 ROS 官方提供的一個簡易機器人模擬器套件,它提供一個 2D 環境以及一個可供使用者控制的小型機器人(通常呈現為一個小烏龜的圖像),讓初學者練習基本的 ROS 指令和熟悉 ROS 概念。

安裝和啟動 TurtleSim

TurtleSim 的套件 turtlesim 一般並不會包含在 ROS 標準安裝流程中,因此需要先安裝:

  1. 輸入指令安裝:

    根據自己的版本輸入以下指令安裝 TurtleSim。

    $ sudo apt-get install ros-noetic-turtlesim
    
  2. 啟動 ROS 核心服務:

    $ roscore
    
  3. 啟動 TurtleSim 的主要節點 turtlesim_node

    在啟動主節點之後,另外新開一個終端機視窗,執行啟動 TurtleSim 的指令。

    $ rosrun turtlesim turtlesim_node
    

成功啟動 turtlesim_node 之後就會開啟烏龜模擬器視窗。

turtle_teleop_key 鍵盤控制烏龜移動

在 turtlesim 套件中還提供另一個節點 turtle_teleop_key ,它會監聽鍵盤的方向鍵輸入,並且根據按鍵來控制視窗中的烏龜移動。我們在另一個終端機輸入以下指令,就可以假裝烏龜是遙控車來操控它了。

$ rosrun turtlesim turtle_teleop_key
  • 方向鍵 ↑、 ↓ :控制烏龜往前或倒退一小段距離。
  • 方向鍵 ←、→:控制烏龜往左或右旋轉一個角度。

不過缺點就是這個節點一次只接收一個按鍵輸入,並且會被下一個按鍵輸入覆蓋掉,我自己覺得操作起來的手感滿詭異的,和操控遙控車也是相差甚遠。

ROS 節點相關指令

ROS 的命令列工具(ROS command line tools,也就是 ros 開頭的指令系列)中, rosnode 提供許多當前活躍節點的可用指令。

rosnode list 列出當前活躍 Node

這個指令會列出當前 ROS 系統中所有運作中的節點名稱。

例如現在可以得到兩個節點 /rosout/turtlesim

$ rosnode list
/rosout
/turtlesim
  • /rosout(日誌節點)

    /rosout 是一個特殊的節點,使用啟動指令 roscore 時會一起被建立點,它用於收集和記錄 ROS 系統中其他節點的日誌資訊。

  • /turtlesim

    這是 TurtleSim 應用程序的主要節點,負責定義和呈現烏龜機器人的行為和狀態。

rosnode info 提供特定節點的詳細訊息

這個指令會列出特定節點的現有的訊息(Message)類型,包含話題(Topics)、服務(Services)和一些程序間溝通的資訊。

格式:

rosnode info <node-name>

例如查看 /turtlesim 的資訊,應該會得到與它關聯的話題有 /turtle1/color_sensor/turtle1/pose/turtle1/cmd_vel,服務則有 /clear/kill 等。

$ rosnode info /turtlesim
/turtle1/color_sensor
/turtle1/pose
/turtle1/cmd_vel
/clear
/kill

rosnode kill 終止節點

這個指令會列出當前 ROS 系統中所有活躍節點的名稱,並且詢問要終止哪一個節點。

$ rosnode kill
1. /rosout
2. /turtlesim

Please enter the number of the node you wish to kill.
> 2
killing /turtlesim
killed

到目前為止,雖然不太多,但多少有一點點操控機器人的感覺了吧。
下一篇會繼續利用 TurtleSim 介紹關於節點之間傳遞的訊息,還有話題與服務之間的差異,接著就能嘗試讓這些節點之間通訊溝通,做到更多事情了。


上一篇
【ROS 筆記:要怎麼叫無人機自己飛】Day 6:使用 Python 撰寫 ROS 節點(Node)
下一篇
【ROS 筆記:要怎麼叫無人機自己飛】Day 8:ROS 的話題(Topic)和服務(Service)
系列文
ROS 筆記:要怎麼叫無人機自己飛14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言