问题描述:
在使用ros的服务通信时需求:先启动客户端,不要直接抛出异常,而是挂起,等服务器启动后,再正常请求。
解决方案:ros中内置了相关函数,使客户端启动后挂起,等待服务器启动。
client.waitForExistence();
//或
ros::service::waitForservice("服务话题");
编写好程序程序后,在终端中输入以下指令后,遇到的问题如图所示:
第一次运行:正常
第二次运行:出现异常,没有任何输出
发现问题:
在终端中输入命令:
rosnode list
输出:
/service_node
/client_node
/rosout
原因:
“ctrl+z”并没有将相关节点关闭,只是将其暂时挂起。
解决方案:
使用“ctrl+c”,关闭节点。
2021.7.27 ghb