zoukankan      html  css  js  c++  java
  • 参数的用法——利用参数创建节点

    ROS 消息通讯——服务器/客户端的来龙去脉的基础上,对service_server.cpp文件进行修改如下:

     1 #include <ros/ros.h>
     2 #include <ros_tutorials_service/SrvTutorial.h>//服务头文件
     3 
     4 #define PLUS 1
     5 #define MINUS 2
     6 #define MULTIPLICATION 3
     7 #define DIVISION 4
     8 
     9 int g_operator=PLUS;
    10 //如果收到客户端的请求,将执行以下处理,服务请求为req,服务响应为res
    11 bool calculation(ros_tutorials_service::SrvTutorial::Request &req,
    12                 ros_tutorials_service::SrvTutorial::Response &res)
    13 {
    14 //收到请求时,将两数之和保存到服务响应值中
    15 switch(g_operator)
    16 {
    17 case PLUS:
    18 res.result = req.a+req.b;break;
    19 case MINUS:
    20 res.result = req.a-req.b;break;
    21 case MULTIPLICATION:
    22 res.result = req.a*req.b;break;
    23 case DIVISION:
    24 if(req.b==0)
    25 {
    26 res.result =0;break;
    27 }
    28 else
    29 {
    30 res.result = req.a/req.b;break;
    31 }
    32 default:
    33 res.result = req.a+req.b;break;
    34 //显示a,b的值及结果
    35 ROS_INFO("request:x=%ld,y=%ld",(long int)req.a,(long int)req.b);
    36 ROS_INFO("sending back response:%ld",(long int)res.result);
    37 return true;
    38 }
    39 
    40 int main(int argc,char **argv)
    41 {
    42 ros::init(argc,argv,"service_server");//声明服务器节点名称
    43 ros::NodeHandle nh;
    44 nh.setParam("calculation_method",PLUS);//初始化设置参数
    45 //声明服务器,创建一个使用ros_tutorials_service功能包SrvTutorial服务文件的服务器
    46 //ros_tutorial_service_server,服务名称是ros_tutorial_srv,有服务请求,执行calculation函数
    47 ros::ServiceServer ros_tutorials_service_server = nh.advertiseService("ros_tutorial_srv", calculation);
    48 
    49 ROS_INFO("ready srv server!");
    50 ros::Rater(10);
    51 while(1)
    52 {
    53 nh.getParam("calculation_method",g_operator);//获取参数
    54 ros::spinOnce();
    55 r.sleep();
    56 }
    57 
    58 return 0;
    59 }
    • 运行结果对照:查看参数列表,修改参数试验效果

    •  有参数运行实例:git clone https://github.com/ROBOTIS-GIT/ros_tutoruals.git

  • 相关阅读:
    操作系统原理
    Linux三剑客正则表达式
    Linux通配符知识深度实践详解
    Linux文件属性之时间戳及文件名知识详解
    Linux系统文件权限
    date:显示与设置系统时间
    正则表达式--三剑客简单应用
    Linux习题小结
    Linux系统文件属性知识
    Linux系统目录结构知识
  • 原文地址:https://www.cnblogs.com/fuzhuoxin/p/12584992.html
Copyright © 2011-2022 走看看