4.1 如果之前沒裝, 快點裝la
包含一個模擬器
sudo apt-get install ros-indigo-ros-tutorials
4.2 名詞介紹
- Nodes: 一個node為ROS package中的executable, 透過ROS client library來與其他nodes溝通, node可publish/subscribe to a Topic, 也可以provide/use a service.
- Messages: subscribe/publish a topic時所使用的data type
- Topics: nodes send/receive messages by publish/subscribe to a topic
- Master: helps nodes find each other
- rosout: ROS中的stdout/stderr
- roscore: Master + rosout + parameter server (後會詳述)
- ros client: 針對不同語言編寫的client library, 目前有rospy和roscpp
4.3 一些命令介紹
- roscore: 啟動maser + rosout + parameter server
- rosnode: 執行與node相關的指令
- rosrun: 可以利用package名稱來運行當中的node, 而不用知道絕對路徑
4.4 運行rosnode
首先, 在任何ROS project執行之前
要先啟動roscore
roscore
接下來我們來看一下目前有哪些node正在運作中
rosnode list
輸出/rosout
這代表目前只有/rosout這個node在執行, 由於/rosout的任務在於收集和紀錄node的輸出訊息, 因此在roscore執行後此node會一直處於運行狀態
接著來看一下/rosout這個node的資訊
rosnode info /rosout
透過rosrun, 我們再另外運行一個node
現在應該有一個terminal正在執行roscore, 另外再開一個terminal執行
rosrun turtlesim turtlesim_node
此時你會看到一隻🐢
在roscore和rosrun執行node後
你會發現這兩個terminal都處於busy的狀態
如果要關掉roscore/node, 由ctrl+c退出
我們再開另一個terminal來看現在的資訊
rosnode list
輸出 /rosout /turtlesim
我們也可以把/turtlesim這個default的名稱改為我們想要的
首先關閉turtlesim的視窗或是利用ctrl+c退出, 接著輸入
rosrun turtlesim turtlesim_node __name:=my_turtle
並在可執行命令的terminal中輸入
4 nodes, topicsrosnode list
此時會看到輸出如 /rosout /my_turtle
注意, 你仍可能看到/turtlesim在列表當中, 可以透過
rosnode cleanup
來清除rosnode list
我們可以利用ping來確認一個node是否正常回應
rosnode ping my_turtle