Ros node啟動與關閉


 

1. ros運行單位:

Ros程序運行的單位是ros node。

 

2. ros 節點的啟動:

(1)初始化ros節點:通過調用ros::init()接口實現;可以通過參數指定默認節點名字,之所以是默認,是因為在命令行執行程序時,是可以修改節點名字的。

(2)啟動ros節點:通過調用ros::NodeHnadle創建NodeHnadle實例nh實現,第一次創建實例時,會調用ros::start(),此時啟動本節點。

 

3. ros節點關閉:

(1)通過調用ros::shutdown()接口,關閉ros節點,此接口會關閉訂閱話題、發布話題、請求服務以及提供服務。

(2)在最后一個ros::NodeHnadle對象銷毀時,會自動調用ros::shutdown(),以此關閉ros節點。

 

4. 檢測ros節點是否已經關閉:

(1)ros::ok()接口:返回false,說明節點已經關閉。

(2)ros::isShuttingDown()接口:返回true,說明ros::shutdown()被調用,但是節點比一定結束。

注:所以一般使用ros::ok()判斷,但是在不會結束的節點,例如“ prolonged service callback”中,則只能使用ros::isShuttingDown(),因為此節點不會關閉,疑惑這是什么節點?

 

5. 中斷:

1)在ros::init()選項中,有一選項ros::init_options::NoSigintHandler,決定是否安裝默認SIGINT處理函數,若不帶此參數,則安裝,程序在收到SIGINT信號(ctrl+c)時,ros::ok()返回false,節點可以走關閉流程。若帶此參數,需要自己安裝SIGINT處理函數,以保證節點可以結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM