小妹今天去深坑一間公司面試,真的豪遠啊~~~所以今天就輕鬆寫吧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
這樣就完成囉! 讓我們開始進入正題吧!
大家有沒有覺得很奇怪,用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
啦!
可以看出在我們的beginner_tutorials
這個package
裡面有兩個node
,也就是hello.py
和hello.exe
啦! 是不是很方便呢?
ps: 記得在執行這些指令之前都要先執行我們的master
主人大大喔!
$ rosnode list
這個指令相信大家應該都會了,前兩篇裡面就用過啦! 我就不再多說啦!
$ rosnode info <node_name>
這個指令就是查看某個node的資訊,包括publications
和subscriptions
等等,但大家現在一定都一看三不知、有看沒有懂,因為這些都是我之後才會講到的啦! 現在就知道有這個指令可以查詢就好囉~
$ rosnode ping <node_name>
這個指令跟我們一般常用的ping打別人的ip位址很像,他會回傳運行的時間戳印,主要應該是用來檢查這個node有沒有成功運行吧!
$ rosnode kill <node_name>
這個指令就是rosrun的反義詞啦! 雖然我覺得ctrl+c
就已經夠用了XD 但如果有些node是在背景執行的,應該就可以用這個指令來殺掉他吧!
關於node的指令大概就這些啦! 大家可以試著自己玩玩看~
ROS wiki - rosrun
ROS wiki - rosnode