1. 程式人生 > >ROS節點與執行

ROS節點與執行

首先,先明確一下與節點相關術語的含義:

Nodes:節點,一個節點即為一個可執行程式,它可以通過ROS與其他節點通訊,另外,一個catkin程式包裡可以有很多節點。

Messages:訊息,訊息是一種ROS資料型別,用於訂閱或釋出到一個話題,是一個載體。

Topics:話題,節點可以向話題釋出訊息或可以向話題訂閱訊息,像通訊中轉站一樣。

Master:節點管理器,ROS名稱服務。

rosout:相當於std::cout

roscore:是在執行所有ROS程式前首先要執行的命令。

執行ros節點的方法:

一般有兩種:

第一種:使用rosrun,在設定完環境變數後,可以使用包名來直接執行一個包內的節點。

用法:

$rosrun  [package_name]  [node_name]
注意:這種方法需要新開啟一個終端 執行
$roscore

第二種:使用roslaunch

用法:

$roslaunch  [package]  [fliename.launch]

launch是個檔案,用launch檔案來執行程式相對於rosrun的優點有兩個

<1>可以向程式傳參

<2>可以同時執行多個節點

launch檔案結構

<launch>
 <!--第1個節點-->
 	<node pkg="" type="" name="">
   	<!--註釋內容-->
    		<para name="程式中的數值或布林引數" value="" />
		<para name="程式中的字串引數" value=" " type="str" />
		...
 	<node>
	...
 <!--第n個節點-->
	<node pkg="" type="" name="">
  	 <!--註釋內容-->
    		...
	 <node>
</launch>
注意:

<1>pkg:應該填寫實際工程中的包名

<2>type:填寫程式碼裡初始化的名字

即:

int main (int argc, char **argv)

{

 ros::init(argc,argv,"初始化化名字");

}

<3>name:這個隨便寫,只要符合ros命名規則就行,這個名字在執行時(roslunch  。。)會出現在終端裡。