ROS의 연구는 단순한 서비스와 클라이언트 (C ++ 버전)을 작성 11- 노트

:이 문서에서 제공 http://wiki.ros.org/ROS/Tutorials/WritingServiceClient%28c%2B%2B%29

  1. 서비스 노드를 작성합니다.
    에서 메시지 서비스를 만들어 , 우리는 노드 기능의 실현을 위해, 메시지 AddTwoInts.srv을 만들었습니다, 우리는 또한 적절한 코드를 작성해야합니다.
    1. 코드가되는
      패키지 beginner_tutorials의 add_two_ints_server.cpp에서 만든, 다음 (중국어 설명 참고)를 입력 :
      사용법 #include "ROS / ros.h" 
      사용법 #include "beginner_tutorials / AddTwoInts.h"//服务头文件
      부울 추가 (beginner_tutorials :: AddTwoInts :: 요청 및 REQ, // 요청,作为输入
               beginner_tutorials :: AddTwoInts :: 응답 및 고해상도) // 응답作为输出
      { 
        res.sum = req.a req.b +; 
        ROS_INFO (: (긴 INT) req.a ( "요청 X = %의 LD는, y는 %의 LD를 ="긴 INT) req.b); 
        ROS_INFO는 ( "응답을 되돌려 보내는 [%의 LD를]"(긴 INT) res.sum); 
        true를 반환; 
      } 
      
      int 주 (int argc, 문자 ** ARGV) 
      { 
        ROS : 초기화 (는 argc, argv를, "add_two_ints_server"); //初始化节点名
        ROS : NodeHandle N; 
      
        ROS : ServiceServer 서비스 = n.advertiseService ( "add_two_ints"추가) // 게시 서비스, 서비스가주기를 출시, 그래서 무한 루프를하지 않기 때문에. 
        ROS_INFO ( "두 가지의 int를 추가 할 준비가 .");
        ROS : 스핀 (); 
      
        0을 반환;
      }
      
    2. 클라이언트 (고객) 노드
      다음과 같은 코드가 (중국어 주석의 설명 참조)
      (긴 INT) srv.response.sum); 
      
      
        }
        다른
        { 
          ROS_ERROR은 ( "서비스 add_two_ints를 호출하지 못했습니다"); 
          1을 반환; 
        } 
      
        0을 반환; 
      }
      
    3. 컴파일하고 코드를 실행
      다음 코드 CMakeLists.txt에 추가를 :
      add_executable (add_two_ints_server의 SRC / add_two_ints_server.cpp) 
      target_link_libraries (add_two_ints_server의 $ {catkin_LIBRARIES}) 
      add_dependencies (add_two_ints_server beginner_tutorials_gencpp) 
      
      add_executable (add_two_ints_client의 SRC / add_two_ints_client.cpp) 
      target_link_libraries (add_two_ints_client의 $ {catkin_LIBRARIES}) 
      add_dependencies (add_two_ints_client의 beginner_tutorials_gencpp)
      

      그런 다음 catkin_make 컴파일 실행할
      roscore 열린 중앙 노드를 사용하여.
      달리기

      rosrun begginner_tutorials add_two_ints_server
      

      서비스 노드를 시작합니다.
      달리기

      rosrun beginner_tutorials 1 3 add_two_ints_client
      

      클라이언트 노드를 시작하고 패스 매개 변수가
      나타납니다 :

       

      서버 노드가 나타납니다 :

       

       제대로 작동.

추천

출처www.cnblogs.com/spyplus/p/11613288.html