꾸준하고 즐겁게

ROS의 Service 통신 방식 - [2 of 2] 본문

Hardware/ROS

ROS의 Service 통신 방식 - [2 of 2]

wj9183 2021. 6. 15. 18:32
728x90

https://gradient-descent.tistory.com/71

이전 글에서 이어지는 내용이다.

 

 

 

 

 

 

 

 

 

 

5. CMakelist 파일 수정하기

vim CMakeList.txt

gedit CMakeList.txt

글 편집하는데 너무 없어보여서 vim 편집기를 사용했다.

하지만 실제로 편집하는데엔 gedit 편집기가 훨씬 편한 것 같다...

 

 

먼저 패키지 명이 프로젝트명에 입력되어있는 걸 확인했다.

서비스 실행 함수의 주석을 풀고, 서비스 파일을 알려주었다.

오타났다.

add_executable 함수에 srv_server src/srv_client.cpp가 아니라 srv_server.cpp 여야한다.

위처럼 내용을 수정해주었다.

사실 한 번에 될 지는 잘 모르겠다.

해보고 안되면 디버깅하자.

저장하고 창을 닫는다.

 

 

 

 

 

 

6. 빌드 & 디버깅 & 실행

cd ../..

경로를 이동한다.

catkin_make

빌드 명령어를 입력한다.

 

 

이전에 공부할 때 만든 패키지랑 클라이언트 이름을 똑같이 지었나보다.

이름을 바꿔주고, 다시 catkin 워크스페이스 경로로 돌아와서 catkin_make 했다.

 

 

거의 다 왔다.

 

이 부분 주석을 풀어주지 않았던 것이다...

 

이제 해결됐다.

 

 

source ~/.bashrc

변경 사항을 적용시켜준다.

 

 

터미널을 3분의 1 갈죽 해주었다.

앞서서 썼어야했는데, 잊어버렸다.

sudo apt-get install terminator

이걸 설치하고 사용하면 터미널을 이렇게 사용할 수 있다.

마스터 실행하고, 서버 실행하고, 클라이언트 실행하려면 3개의 화면이 필요하다.

터미널을 따로따로 열면 열 때마다 source ~/.bashrc를 해주어야해서 번거롭다.

 

rospack profile

명령어를 입력해주었다.

 

roscore

마스터를 실행했다.

 

 

명령어 입력할 때 탭 키 눌러서 자동완성이 좍좍 떠야한다.

그렇게 안되면 거의 대부분 문제가 있었다.

 

rosrun wj_tuto_service wj_srv_server
rosrun wj_tuto_service wj_srv_client

각각 서버와 클라이언트를 실행하는 명령어이다.

 

코딩했던 대로 숫자를 두 개 주면, 덧셈해서 돌려준다.

서비스는 동기 소통 방식을 가지고 있으므로, 요청을 하고 답을 돌려받으면 연결이 끝난다.

728x90