asysbang
标题:
<3>ROS编译
[打印本页]
作者:
admin
时间:
2019-11-18 11:41
标题:
<3>ROS编译
有两套编译命令
1.catkin
2.rosbuild
先写publisher和subscriber 两个例子(python 和 C++)
再写service和client的例子(python 和 C++)
service需要srv文件,和发布订阅的区别是,client可以直接拿到service处理的结果,而且client不会出现在
如果用系统默认的srv(SetBool)
//client.cpp
int main(int argc, char **argv)
{
ros::init(argc, argv, "add_two_ints_client");
ros::NodeHandle n;
ros::ServiceClient client = n.serviceClient<std_srvs::SetBool>("add_two_ints");
std_srvs::SetBool srv;
//srv =
srv.request.data= true;
if(client.call(srv)) {
//ROS_INFO("=====res : %s",srv.response.message);
std::cout<< srv.response.message << std::endl;
}
return 0;
}
//////service.cpp
bool add(std_srvs::SetBool::Request &req, std_srvs::SetBool::Response &res)
{
ROS_INFO("Service rec");
if (req.data == true) {
res.success = true;
res.message = "msg-ok";
} else if (req.data == false) {
res.success = false;
res.message = "msg-false";
}
return true;
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "add_two_ints_server");
ros::NodeHandle n;
ros::ServiceServer service = n.advertiseService("add_two_ints", add);
ROS_INFO("Service Ready");
ros::spin();
return 0;
}
node列表里面
欢迎光临 asysbang (http://www.asysbang.com/)
Powered by Discuz! X2.5