기초 단계

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 wifi 살펴보기

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

 

 

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

 

원래 오늘  5장 까지만 하려했는데, 생각보다 중간에 짧은게 많아서 1 ~ 2개 더하려고한다.

이 속도라면 2 ~ 3정도면 비기너 레벨은 다 훑어볼수 있을거같네 가 아니라

지금 11시인데 기구 설계하는걸 있었다.

이번 장은 조금 긴데 오늘 ros는 여기까지만 해야겠다.

 

1. 설정

1.1 roscore

이거야 뭐 roscore(master:네임서버 + rosout +  파라미터 서버) 그냥 실행하면되고

 

1.2 turtlesim

아까 roscore와 같이 실행해두었다.

 

1.3 거북이 키보드로 이동시키기

turtle_teleop_key 노드를 실행해서 거북이를 움직여보자

rosrun turtlesim turtle_teleop_key

 

 

 

 

2. ROS Topic

 turtlesim_node와 turtle_teleope_key 노드는 ROS Topic으로 통신하고 있다.

turtle_teleop_key는 키 입력을 어느 토픽으로 퍼블리싱하고, turtlesim은 같은 토픽을 받아서 거북이를 이동시키는걸 보여준다.

 

 

2.1 rqt_graph

rqt_graph로는 동적인 그래프를 만들어서 시스템이 어떻게 돌아가는지 볼수 있는데, rqt 패키지에 있다.

rosrun rqt_graph rqt_graph 로 실행해서 볼수 있다.

 

보니까 /teleop_turtle이란 노드가 /turtle1/cmd_vel이란 토픽으로 퍼블리시하고, 이걸 /turtlesim이 받아들이고 있다.

 

2.2 rostopic 소개

rostopic은 ROS의 어느 토픽/주제에 대한 정보를 얻거나 활용하는 도구로 다음과 같은 옵션 명령들이 존재함

- rostopic bw : 토픽이 사용하는 대역폭 표시

- rostopic echo : 스크린에다가 토픽 메시지 표시

- rostopic hz : 토픽의 퍼블리시 주기

- rostopic list : 현재 동작중인 토픽 정보들을 출력

- rostopic pub :어느 토픽으로 데이터 퍼블리시

- rostopic type : 토픽 타입을 출력

 

 

 

2.3 rostopic echo

rostopic echo로 퍼블리시 되고있는 데이터를 볼수 있다.

한번 turtle_teleop_key에서 어떻게 퍼블리시하나 아래 명령으로 보면

rostopic echo /turtle1/cmd_vel

 

키 입력을하면 거기에 따라 선속도, 각속도가 나온다.

 

3. ROS 메시지

 토픽/주제를 이용해서 통신을 할때는 노드간에 ROS 메시지를 보내면서 이뤄진다. 이때 ROS 토픽의 타입은 메시지를 퍼블리시하는 노드, 퍼블리셔가 보내는 메시지의 타입이 곧 토픽의 타입이 되며 다음 명령으로 해당 토픽의 메시지 타입을 볼 수 있다.

 

rostopic type [topic]

지금하고 있는 예제서 rostopic type /turtle1/cmd_vel 을하면 대략적인 메시지 타입을

rosmsg show geometry_msgs/Twist를 하면 해당 메시지를 자세히 보여준다.

 

 

4. rostopic 계속 진행해서 보자

4.1 rostopic pub

rostopic pub는 rosrun으로 퍼블리셔를 동작시킬필요엇이 해당 토픽으로 값을 퍼블리시하는 명령어다.

형식 : rostopic pub [topic] [msg_type] [args]

 

아까 본 cmd_vel을 linear x는 2, angular z 1.8로 퍼블리시 하면 다음과같이 동작한다.

* 아래의 옵션으로 명령을 줬을때 메시지가 1번만 간다고 한다

 

 

아래와 같이 -r [주파수]를 추가하면 해당 주파수로 계속 메시지가 퍼블리시된다. 여기서는 1Hz 로 가나보다

 

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

1초마다 계속 저 메시지를 던져주니 거북이가 계속 빙글빙글돈다.

 

이 다음에 hz 명령어도 나오긴 한데 귀찬으니 넘어간다.

 

5. rqt_plot 사용하기

rqt_plot으로는 어느 주제로 퍼블리시 되는 데이터를 시간흐름에 따라 보여주는데 거북이의 위치정보를 한번보자

+ Recent posts