小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
求助:救救孩子。服务通信中,colcon build 客户端节点时,报错了一个莫名其妙的错误
-
关键就在17行this->client_ = this->create_client<AddInts>("add_ints");
不知道为什么,注释掉这行就不报错了,留着就报错。
卡了好几天了,不知道咋解决。代码
include "rclcpp/rclcpp.hpp"
include "base_interfaces_demo/srv/add_ints.hpp"
using base_interfaces_demo::srv::AddInts;
using namespace std::chrono_literals;class AddIntsClient:public rclcpp::Node{
public:
AddIntsClient():Node("addintsclient_node_cpp"){
RCLCPP_INFO(this->get_logger(),"客户端节点实现!!!");
/*
3-1、创建客户端
模板:服务接口
参数:服务话题接口
返回值:服务对象指针
/
this->client_ = this->create_client<AddInts>("add_ints");
}
//3-2、连接服务器(对于服务通信而言,如果客户端连接不到服务器,那么不能发送请求);
/
连接服务器实现,如果连接成功返回true,否则返回false
*/
bool connect_server(){
// 在指定时间内连接服务器,如果连接上了,那么返回true,否则,返回false
// 以1s每次的循环去连接服务端,直到连接成功
while(!client_->wait_for_service(1s)){
RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"服务器连接中...");
}
return true;
}private:
rclcpp::Client<AddInts>::SharedPtr client_;
};int main(int argc,char** argv){
if(argc!=3){
RCLCPP_ERROR(rclcpp::get_logger("rclcpp"),"请提交两个整形数字");
return 1;
}
rclcpp::init(argc,argv);
auto client = std::make_shared<AddIntsClient>();
//调用客户端对象的连接服务器功能
bool flag = client->connect_server();
//根据连接结果做进一步处理
if(!flag){
RCLCPP_WARN(rclcpp::get_logger("rclcppp"),"服务器连接失败!!!");
return 0;
}
//执行后续操作rclcpp::shutdown(); return 0;
}