iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
0
自我挑戰組

ROS自學筆記系列 第 8

Day 08 - ROS Node 常用指令

小妹今天去深坑一間公司面試,真的豪遠啊~~~所以今天就輕鬆寫吧XD

首先要先跟大家說聲抱歉,因為我對python不太熟悉,上次的python教學漏了一些東西,在這邊補上~
回去我們的hello.py檔新增一行執行環境的設定,完整程式碼如下:

#!/usr/bin/env python
import rospy                             # import rospy 模組

rospy.init_node('hello_python_node')     # 初始化 hello_python_node

while not rospy.is_shutdown():           # 在 rospy 還沒結束前,執行下列指令:
    rospy.loginfo('Hello World')         # 印出 Hello World
    rospy.sleep(1)                       # 間隔 1 秒

然後再把這個hello.py檔改成可執行:

$ chmod +x hello.py

這樣就完成囉! 讓我們開始進入正題吧!


rosrun 幫你找出並執行node

大家有沒有覺得很奇怪,用python寫的node被放在/catkin_ws/src/beginner_tutorials/src裡面,但是用c++寫的卻被放在/catkin_ws/devel/lib/beginner_tutorials裡面呢? 這樣要執行的時候要一層一層找真的蠻阿雜的,因此ROS有提供一個快速找到node的指令,也就是rosrun,使用方法是這樣:

$ rosrun <package> <executable>

第一個參數就是我們的package名稱,也就是beginner_tutorials,第二個參數就是node的名稱囉! 善用<tab>鍵就可以輕鬆找出package底下的node啦!
rosrun 執行畫面
可以看出在我們的beginner_tutorials這個package裡面有兩個node,也就是hello.pyhello.exe啦! 是不是很方便呢?

ps: 記得在執行這些指令之前都要先執行我們的master主人大大喔!

rosnode list 列出執行中的node

$ rosnode list

這個指令相信大家應該都會了,前兩篇裡面就用過啦! 我就不再多說啦!

rosnode info 查看特定node資訊

$ rosnode info <node_name>

這個指令就是查看某個node的資訊,包括publicationssubscriptions等等,但大家現在一定都一看三不知、有看沒有懂,因為這些都是我之後才會講到的啦! 現在就知道有這個指令可以查詢就好囉~
rosnode info 執行畫面

rosnode ping 檢查特定node運行狀況

$ rosnode ping <node_name>

這個指令跟我們一般常用的ping打別人的ip位址很像,他會回傳運行的時間戳印,主要應該是用來檢查這個node有沒有成功運行吧!
rosnode ping 執行畫面

rosnode kill 中止特定node

$ rosnode kill <node_name>

這個指令就是rosrun的反義詞啦! 雖然我覺得ctrl+c就已經夠用了XD 但如果有些node是在背景執行的,應該就可以用這個指令來殺掉他吧!
rosnode kill 執行畫面

關於node的指令大概就這些啦! 大家可以試著自己玩玩看~

參考資料

ROS wiki - rosrun
ROS wiki - rosnode


上一篇
Day 07 - 使用C++撰寫ROS Node
下一篇
Day 09 - ROS Topics
系列文
ROS自學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言