asysbang

 找回密码
 立即注册
查看: 3146|回复: 0
打印 上一主题 下一主题

<3>ROS编译

[复制链接]

520

主题

2

好友

6551

积分

管理员

Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

最佳新人 活跃会员 热心会员 推广达人 宣传达人 灌水之王 突出贡献 优秀版主 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2019-11-18 11:41:24 |只看该作者 |倒序浏览
有两套编译命令

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列表里面
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|aSys-帮 ( 京ICP备13033689号 )

GMT+8, 2026-1-28 22:57 , Processed in 0.039997 second(s), 19 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部