大家好,昨天介紹了如何建立一個 ROS Node 以及如何執行它,今天我們就來介紹如何用指令來查看當前系統中有哪些 ROS Node 正在被執行吧!
首先我們先複習一下昨天執行 Node 的過程:
roscd beginner_tutorial/src/
python hello.py
成功執行我們的 Node 之後,可以透過以下指令來看到目前正在運行的 Nodes 有哪些:
rosnode list
很遺憾的,在這當中並沒有看到我們剛剛在 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]
了:
除了以上利用 python <file_name>
開啟檔案的方式之外, ROS 系統也還有一個指令可以執行檔案,便是 rosrun <Package_name> [file_name]
,使用這個指令的好處就是你可以直接在根目錄下執行 Package 下的檔案,不必再進入到檔案所在的 Package 裡:
這次這個錯誤的原因在於我們尚未修改檔案的執行權限,這邊輸入指令 chmod +x hello.py
,然後再次執行 python hello.py
。權限相關的概念請參考這裡。
這麼一來我們就可以在跟目錄下利用 rosrun
快速執行檔案囉!
是不是很有趣呢?了解了 ROS Node 後,接下來就是ROS Topic 的介紹了,因此明天會大致講解相關內容,請大家敬請期待!!