기초 단계

1. ROS 설치하고, 설정하기

2. ROS 파일 시스템 살펴보기

3. ROS 패키지 만들기

4. ROS 패키지 빌드하기

5. ROS 노드에 대해서 이해하기

6. ROS Topic을 이해하기

7. ROS 서비스와 파라미터 이해하기

8. rqt_console과 ros launch 사용하기

9. rosed로 파일 수정하기

10. ROS msg와 srv 만들기

11. C++로 간단한 퍼블리셔와 서브스크라이버 작성하기

12. 파이썬으로 간단한 퍼블리셔와 서브스크라이버 작성하기

13. 간단한 퍼블리셔와 서브스크라이버에 대해서 살펴보기

14. 간단한 서비스와 클라이언트 코드 작성하기(C++)

15. 간단한 서비스와 클러이언트 코드 쓰기(파이썬)

16. 간단한 서비스와 클라이언트에 대해서 알아보기

17. 데이터를 녹음하고 재생하기

18. bag file에서 메시지 읽기

19. roswtf 시작하기

20. ROS wiki 살펴보기

21. 다음에 할께 뭐가 있을까?

 

 

슬슬 로스도 질리기 시작한다 얼른 끝내고

쉬었다가 하고싶어질때 urdf나 tf로 넘어가야지

 

 

 

코드 14번째 줄의 rospy.Service의 경우 add_two_ints 라는 이름으로 AddTwoInts라는 서비스 타입 요청을 받으면, handle_add_two_ints 콜백함수를 받아 응답해주는 내용이다.

 

실행권한도 주고 클라이언트로 넘어가자

 

 

 

 

클라이언트 코드 내용이야

 

10번줄은 add_two_ints 서비스 요청 대기하는거고

 

12번은 요청이 오면 'add_two_ints' 서버에다가 AddTwoInts 서비스 타입을 응답해준다는 소린거같고,

13번째 줄에서 함수를 호출하면서 서버에 보내면 응답을 받아 return 하게 되는거같다.

 

 

 

   1 #!/usr/bin/env python
   2 
   3 from __future__ import print_function
   4 
   5 import sys
   6 import rospy
   7 from beginner_tutorials.srv import *
   8 
   9 def add_two_ints_client(x, y):
  10     rospy.wait_for_service('add_two_ints')
  11     try:
  12         add_two_ints = rospy.ServiceProxy('add_two_ints', AddTwoInts)
  13         resp1 = add_two_ints(x, y)
  14         return resp1.sum
  15     except rospy.ServiceException as e:
  16         print("Service call failed: %s"%e)
  17 
  18 def usage():
  19     return "%s [x y]"%sys.argv[0]
  20 
  21 if __name__ == "__main__":
  22     if len(sys.argv) == 3:
  23         x = int(sys.argv[1])
  24         y = int(sys.argv[2])
  25     else:
  26         print(usage())
  27         sys.exit(1)
  28     print("Requesting %s+%s"%(x, y))
  29     print("%s + %s = %s"%(x, y, add_two_ints_client(x, y)))

 

얘도 실행옵션주고,

CMakelists.txt에 추가하자

 

 

 

와 이번에는 에러없이 바로 빌드 잘됬다.

 

 

 

 

http://wiki.ros.org/ROS/Tutorials/ExaminingServiceClient

 

서버를 돌리려했더니

인스톨한 서버 스크립트가 비기너 튜토리얼 모듈을 못찾는데, 오타 였네

 

 

 

오타기도 했지만 빌드 후에 setup.bash를 실행안해줘서 찾지 못하고 있었다.

 

비기너 튜토리얼 모듈 찾는건 해결했지만 이번에는 또 오타.

 

 

 

모든 에러를 다해결해주고서야 이제 서버가 돈다.

 

 

 

클라이언트도 뜨는 에러 다 고쳐주고 매개변수도 잘 주면 원하는데로 동작

 

 

 

 

이제 ROS 기초 튜토리얼은 여기까지 하려고한다

뒤에 녹음 재생하는거 bag 파일 등 남긴했는데,

이제 학교도 며칠안남기도 했고 

 

학기 끝나기 전에는 아트메가 328 회로를 직접 만들어보고 싶어서

그런쪽을 해봐야되겠다 싶다.

 

그래도 오랜만에 ROS 공부하면서 이전에는 있는지도 몰랏거나

영어 실력이 지금보다 많이 부족했고, 책에서 잘 설명하지 않은 내용들을 꽤 봐서

전보다는 ROS를 잘 다룰수 있을 자신도 생겼고

 

 

이정도면 ROS 비기너 튜토리얼 내용에서 중요하다 싶은건 다 정리했다고 봐도 될거같다.

남 보여주려고 하기보다는 그냥 이해되는데로 그냥 적다보니 남들한태는 잘 읽힐지는 모르겠지만

 

 

조만간 기회되면 URDF로 로봇 만들어서 가제보에서 돌려보면서 놀아보고싶다.

+ Recent posts