간략하게 정리한 부분
2021.06.07 - [분류 전체보기] - [ROS] Topic, Publisher, Subscriber
Point
Topic통신 메세지를 만들어 현재 시간을 나타내본다.
2021.06.08 - [분류 전체보기] - [ROS]Package 생성
만든 패키지로 이동한 후
$ cd ~/catkin_ws/src/yh_tutorial
메세지를 위한 폴더를 생성한다.
$ mkdir msg
메세지 폴더로 들어가 파일을 생성한다.
$ cd msg
$ gedit {파일명}.msg
내가 만든 파일은 yh_msg_tutorial.msg
파일에 보낼 메세지의 정보를 입력한다.
만약 service 혹은 action을 만든다면 이런식으로~
만약 service 혹은 action을 만든다면 이런식으로~
패키지 파일의 src파일로 위치를 변경한 후
$ cd ../src
노드명을 입력 한 후 파일을 작성한다.
$ gedit {노드 명}.cpp
내가 만든 Publisher노드 명은 pub_test.cpp
위와 같은 위치에서 새로운 노드를 생성하고, 작성한다.
$ gedit {노드 명}.cpp
내가 만든 Subscriber 노드명은 sub_tes.cpp
위치를 패키지로 변경한다.
$ cd ~/catkin_ws/src/yh_tutorial
이 위치에 있는 CMakeLists.txt파일을 수정할 것이다.
이 파일은 노드들의 설명서라고 생각하면 된다.
$ gedit CMakeLists.txt
10번 째 줄에는 패키지를 설정했을 때의 의존성 패키지들이 들어가 있다.
Topic통신에서 사용하는 세개의 패키지를 남겨두고, 정리를 해주었다.
49번 째 줄 밑을 확인해 보면 'msg', 'srv', 'action'의 메세지 폴더들이 보이는데
topic을 사용하기 위해 msg쪽의 주석을 풀고 내 메세지 폴더에 만든 파일의 이름을 넣어 주었다.
70번째 줄에서는 주석을 풀고 msg가 사용하는 의존성 패키지를 넣었다.
(msg파일에서 time stamp를 사용하기 위한 의존성 패키지)
104번째 줄에서는 현재는 include를 사용하지 않으니 주석으로 처리를 하고,
노드 파일을 실행하기 위한 의존성 패키지를 넣어준다.
message_generation은 사용하지 않으니 제거 해주었다.
117번째 줄확인
굵은 글씨는 변수할당이 되어있음을 의미한다.
135번째 줄에서 실행시킬 노드를 설정해준다.
publisher, subscribe노드를 실행해야 하기 때문에 2개로 만들어 설정한다.
144번째의 줄에서 2개의 노드를 넣어준다.
130번재의 줄에도 똑같은 add_dependencies 문장이 있는데 이것은 메타패키지를 이용할 때 쓰는 문장이다.
마지막으로 149번째의 줄에서 노드들을 추가해주면 완성이다.
위치를 catkin_ws로 이동한다.
$ cd ~/catkin_ws
명령어 실행
$ catkin_make
만약 오류가 나는 경우 어디에서 오류가 났는지 친절하게 알려주므로 그 무엇이 틀렸는 지 알 수 있다.
터미널을 3창을 띄워야 한다.
1. Master용
$ roscore
2. pub용
$ rosrun {프로젝트 이름} {publisher노드 이름}
3. sub용
$ rosrun {프로젝트 이름} {publisher노드 이름}
이렇게 잘 돌아가는 topic통신을 확인할 수 있다.
http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics
[ROS]Service 통신 실습 (0) | 2021.06.09 |
---|---|
[ROS]Package 생성 (0) | 2021.06.08 |
[ROS] ROS 용어 정리 (0) | 2021.06.07 |
[ROS] Action, Action server, Action client (0) | 2021.06.07 |
[ROS] Service, Service server, Service client (0) | 2021.06.07 |