:이 문서에서 제공 http://wiki.ros.org/ROS/Tutorials/WritingServiceClient%28c%2B%2B%29
- 서비스 노드를 작성합니다.
에서 메시지 서비스를 만들어 , 우리는 노드 기능의 실현을 위해, 메시지 AddTwoInts.srv을 만들었습니다, 우리는 또한 적절한 코드를 작성해야합니다.
- 코드가되는
패키지 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을 반환; }
- 클라이언트 (고객) 노드
다음과 같은 코드가 (중국어 주석의 설명 참조)
(긴 INT) srv.response.sum); } 다른 { ROS_ERROR은 ( "서비스 add_two_ints를 호출하지 못했습니다"); 1을 반환; } 0을 반환; }
- 컴파일하고 코드를 실행
다음 코드 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
클라이언트 노드를 시작하고 패스 매개 변수가
나타납니다 :서버 노드가 나타납니다 :
제대로 작동.
- 코드가되는