問題描述:
在使用ros的服務通信時需求:先啟動客戶端,不要直接拋出異常,而是掛起,等服務器啟動后,再正常請求。
解決方案:ros中內置了相關函數,使客戶端啟動后掛起,等待服務器啟動。
client.waitForExistence();
//或
ros::service::waitForservice("服務話題");
編寫好程序程序后,在終端中輸入以下指令后,遇到的問題如圖所示:

第一次運行:正常
第二次運行:出現異常,沒有任何輸出
發現問題:
在終端中輸入命令:
rosnode list
輸出:
/service_node
/client_node
/rosout
原因:
“ctrl+z”並沒有將相關節點關閉,只是將其暫時掛起。
解決方案:
使用“ctrl+c”,關閉節點。

2021.7.27 ghb
