iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0

前言

大家好,昨天介紹了如何建立一個 ROS Node 以及如何執行它,今天我們就來介紹如何用指令來查看當前系統中有哪些 ROS Node 正在被執行吧!

查看執行中的 Node

首先我們先複習一下昨天執行 Node 的過程:

roscd beginner_tutorial/src/
python hello.py

成功執行我們的 Node 之後,可以透過以下指令來看到目前正在運行的 Nodes 有哪些:

rosnode list

https://ithelp.ithome.com.tw/upload/images/20200923/20129807HvPt4PxsV7.png

很遺憾的,在這當中並沒有看到我們剛剛在 hello.py 設置的 Node,由於我們在程式碼當中只讓 Node 發送一次 Hello World,所以 Node 在發送完成後便自動關閉,因此我們要改寫程式碼如下:

#!/usr/bin/env python
import rospy
rospy.init_node(‘hello_node’)
while not rospy.is_shotdown():
  rospy.loginfo(‘Hello World’)
  rospy.sleep(1)

這次在程式碼當中加了一個 rospy.is_shutdown 這個判斷式,目的在於檢查程式是否被關閉、退出。若程式持續執行,則在 Terminal 上印出 Hello World。rospy.sleep(t) 是用來控制程式執行的間隔時間,是在每次執行完 rospy.loginfo(‘Hello World’) 後休息t秒後再執行下一個迴圈。

再次執行 hello.py 後便可以看到 Terminal 上會不斷印出 Hello World,接著我們再透過新增一個 Terminal 輸入 rosnode list,就能看到我們所設置的 [/hello_node] 了:

https://ithelp.ithome.com.tw/upload/images/20200923/20129807HcXPZY4BcX.png

除了以上利用 python <file_name> 開啟檔案的方式之外, ROS 系統也還有一個指令可以執行檔案,便是 rosrun <Package_name> [file_name],使用這個指令的好處就是你可以直接在根目錄下執行 Package 下的檔案,不必再進入到檔案所在的 Package 裡:

https://ithelp.ithome.com.tw/upload/images/20200923/20129807JMgBuBFHy7.png

這次這個錯誤的原因在於我們尚未修改檔案的執行權限,這邊輸入指令 chmod +x hello.py,然後再次執行 python hello.py。權限相關的概念請參考這裡
這麼一來我們就可以在跟目錄下利用 rosrun 快速執行檔案囉!

https://ithelp.ithome.com.tw/upload/images/20200923/20129807vCO8kSxZoY.png

https://ithelp.ithome.com.tw/upload/images/20200923/20129807CFgYIz8H2E.png

結語

是不是很有趣呢?了解了 ROS Node 後,接下來就是ROS Topic 的介紹了,因此明天會大致講解相關內容,請大家敬請期待!!
https://ithelp.ithome.com.tw/upload/images/20200923/2012980766Rg9Tamob.png


上一篇
[DAY 7] ROS架構與Node的基本介紹
下一篇
[DAY 9] Nodes與Topics的關係
系列文
ROS系統控制自走車搭配點雲雷達(隧道檢測裝置)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言