기초 단계
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. 다음에 할께 뭐가 있을까?
퍼블리셔/서브스크라이버, 서비스/클라이언트 등 c++ 구현도 있긴한데 부담스러워서 패스하고 파이썬만 끄적여야지
http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29
좀 쉬었고 이제 퍼블리셔, 서브스크라이버 시작해보자
내용 보면 beginner_tutorials 패키지에다가 scripts 폴더 만들고
wget으로 이미 작성된 코드 받으라고하는데,
연습삼아서 직접 작성하고 실행권한을 주자
그 뒤에 CMakelists.txt다가 추가해야한다고하는데, 전에는 이거 안해도 잘썻던거같은데 install 하는데 필요한가보다
어짜피 코드 짧으니 금방 작성하자
맨 위의 #! 주석문은 파이썬 스크립트로 실행한다는 의미고
import야 rospy와 std_msgs.msg 에서 String 타입을 가져오고
7 번 줄에서 Publisher를 생성해서 'chatter'라는 토픽으로 문자를 보낸다, queue_size는 최대 10, 섭스크라이버가 못받으면 10개까지만 보관한다고 이해하면 될까 싶다.
그 외는 그냥 넘어가도 괜찮을거같네
설명할 필요가 없을거같긴한데
listner 함수에서 리스너 노드 초기화하고, anonymous는 노드를 익명으로 해서(이름이 안겹치게) 여러 리스너가 동시에 동작할수 있게 하는 의미인거같다.
그리고 서브스크라이버초기화하고, 콜백 함수 등록, 스트링을 받는다.
그리고 스핀 함수로 종료시킬때까지 안꺼지게 유지하기
그 다음에는 CMakelists.txt에 catkin_install_python 에다가 방금 쓴 파일들을 추가하자
주석보니 목적지(캣킷 패키지 바이너리)에다가 실행가능한 스크립트를 옮기는건가 싶다.
이제 catkin_make로 빌드해주면 되긴한데
중간에 오타나 빠트린걸로 오류뜨면 고쳐주자
나는 CMakelists.txt와 package.xml에 잘못쓴게 있어서 고쳐줬다.
또 보니 위 스크립트를 scripts 폴더다가 안넣어둿네
내가 오타낸게 꽤 많다.
아까 catkin_install_python이 어디가나 했는데 devel 폴더 밑으로 가는건가보다
http://wiki.ros.org/ROS/Tutorials/ExaminingPublisherSubscriber
이제 퍼블리셔, 서브스크라이버 스크립트 짜고, 빌드랑 인스톨까지 다했으니 이제 써보자
1. 퍼블리셔 돌리기
아래의 내용대로 치면
로그 인포로 안녕 세상이 나온다.
이처럼 서브스크라이버도 하면 될꺼같았는데
오타내서 에러만 줄줄이나온다.
수정하고 다시 하면
리스너도 잘 들었다고 인사해준다.
'로보틱스' 카테고리의 다른 글
robotics - 1. 로봇센서와 신호처리 (0) | 2022.09.05 |
---|---|
ROS기초튜토리얼(끝) - 15, 16. 간단한 서비스,클라이언트 코드 쓰기 + 사용하기 (0) | 2022.06.24 |
ROS기초튜토리얼 - 10. ROS msg와 srv 만들기 (0) | 2022.06.23 |
ROS기초튜토리얼 - 9. rosed로 파일 수정하기 (0) | 2022.06.23 |
ROS기초튜토리얼 - 8. rqt_console과 ros launch 사용하기 (0) | 2022.06.23 |