ROS節點與執行
阿新 • • 發佈:2019-02-01
首先,先明確一下與節點相關術語的含義:
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 。。)會出現在終端裡。