기초 단계

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. 퍼블리셔 돌리기

아래의 내용대로 치면

 

로그 인포로 안녕 세상이 나온다.

 

 

 

이처럼 서브스크라이버도 하면 될꺼같았는데

오타내서 에러만 줄줄이나온다.

 

 

수정하고 다시 하면

 

리스너도 잘 들었다고 인사해준다.

기초 단계

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. 다음에 할께 뭐가 있을까?

 

 

 

 

ROS msg와 srv 만들기

 이번장에서는 msg와 srv 파일을 만들고 빌드하는 법, 그리고 rosmsg, rossrv, roscp 명령어를 쓰자

 

 

msg와 srv 소개

- msg : msg 파일은 ROS 메시지 속성을 정의한 텍스트 파일로  메시지에 대한 소스코드 만들때 사용

- srv : 서비스에 대해서 정의한 서비스 파일로 리퀘스트와 리스폰스 두 파트로 이뤄짐.

- msg 파일은 패키지의 msg 폴더에다가 놓고, srv파일은 srv 폴더에다가 두면 된다!

- msg 파일은 한 줄당 필드 타입과 필드 명으로 이뤄지고, 필드 타입로 이런것들을 쓸수 있다.

  ex) int8/16/32 ..., float32/64, string, time,duration, 다른 msg파일 등

  + 특별한 타입으로 Header가 있는데, 이 헤더타입은 타임스템프와 coordinate frame(?) 정보를 가진다.

 

msg 파일의 예시

Header header
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist

 

srv 설명과 예시

 srv 파일은 msg파일처럼 타입과 타입명으로 한줄한줄 쓰면되고 리퀘스트와 리스펀스는 '---'로 구분해주면 된다.

int64 A
int64 B
---
int64 Sum

 

 

2. msg 사용하기

2.1 msg 만들기

이전에 만든 beginner_tutorial에 가서 만들자

소스코드에 msg 파일을 추가할수 있도록

package.xml 파일에다가 다음 두줄을 또 넣어야한다고 한다.

어떤식으로 반영이 되는지는 아직 모르겠다.

메타 정보를 담는 package.xml에 추가했으니

 

이제 CMakelists.txt도 수정해주자

빌드할때 찾을수 있도록 message_generation을 추가하고

catkin_package에도 

CATKIN_DEPEND message_runtime를 추가하고

그리고 51번 줄쯤가면

add_message_file에다가

FILE

Num.msgs를 주석해제하거나 추가해주자

 

마지막으로 generate_messages 부분에 주석을 해주면 끝

msg파일 만들고 생성하기 진짜 힘드네

 

 

 

 

 3. rosmsg 사용하기

rosmsg show [message type]

따로 catkin_make 같은거 하지도 않았는데 이미 devel/setup.bash를 실행해놔서인지

내가 만든 Num.msg를 찾아서 보여준다.

 

 

4. rossrv 사용하기

이제 서비스 파일을 만들어보자

근데 만들기 번거로우니 roscp로 다른 패키지의 파일을 여기다가 가져오자

 

아까 package.xml에다가 메시지 생성, 런타임 의존 내용 추가했으니 넘어가고

CMakelists.txt에 아래의 파트 주석을 지워주고 저렇게 고치면 된단다.

 

 

 

4.2 rossrv 사용하기

아까 rosmsg 처럼 써보자

rosrv show [service type]

 

 

 

기초 단계

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. 다음에 할께 뭐가 있을까?

 

 

 

rosed 사용하기

rosed [package이름] [파일명]

ex) rosed roscpp Logger.msg

bashrc에다가 설정한 에디터로 그 패키지 파일을 바로 수정할수 있게 켜진다.

 

기초 단계

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. 다음에 할께 뭐가 있을까?

 

 

 

 

 이번 장에서는 디버깅에 사용하는 rqt_console과 rqt_logger_level, 여러 노드를 한번에 시작할때 쓰는 roslaunche를 알아보자

 

 

 

2. rqt_console과 rqt_logger_level

- rqt_console은 노드의 출력을 보여주는 ROS 로깅 프레임워크

- rqt_logger_level로는 노드의 로그 레벨(디버그, 알림, 경고, 에러, 페이탈)을 바꿔줄수 있음

이라는데 뭔가 잘안되서 그냥 패스

 

2.2 roslaunch 사용하기

사용법 : roslaunch [package] [filename.launch]

 

아래의 코드대로 비기너 튜토리얼로가서 런치파일을 만들자

 

group ns는 네임 스페이스를 별개로 두는 태그이고,

이 네임스페이스로 turtlesim 패키지의 turtlesim_node 노드를 sim이란 이름으로 각각 실행

네임스페이스를 둬서 두 터틀심 노드 이름 중복을 막음

이번에는 터틀심의 미믹 노드로 미믹 노드의 input을 turtlesim1/turtle1으로 매핑

ouput을 turtlesim2/turtle1으로 매핑

즉 tutlesim1에 대한 입력을 turtlesim2에 보내 반영시킨다.

 

이번에는 먼저 rostopic 명령어로 먼저 거북이 조작 명령을 퍼블리시하고

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

 

roslaunch 해주면

roslaunch beginner_tutorials turtlemimic.launch

 

 

터틀심 노드가 2개 돌면서 미믹 노드로 터틀심 1에 준 입력이 터틀심2로 매핑되서 똑같이 움직인다. 

 

 

기초 단계

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/UnderstandingServicesParams

 

이번 장에서는 ROS 서비스와 파라미터 그리고 rosservice와 rosparam이라는 커맨드라인 명령어도 배워보자

 

 

1. ROS Service

 ros의 서비스는 노드가 다른 노드랑 통신하는 또 다른 방식으로 서비스로 노드가 요청 request를 보내면 응답 response를 받는 식이다.

 

2. rosservice 사용하기

 rosservice는 ROS 클라이언트와 서비스를 다루는 명령어로 이런 옵션들을 쓸수 있다

- rosservice list  : 동작중인 서비스들 목록 출력

- rosservice call : 매개변수를 줘서 서비스 호출하기

- rosservice type : 서비스의 타입 출력하기

- rosservice find : 서비스 타입으로 서비스 찾기

- rosservice url : 서비스 ROSRPC uri 출력하기

 

2.1 rosservice list

 동작하고 있는 rosservice들을 보여주는데, turtlesim_node를 돌리면 저런 서비스가 나오나보다

 

 

2.2 rosservice type [service]

해당 서비스의 타입을 출력함

 

2.3 rosservice call

해당 서비스를 매개변수를 줘서 호출한다

아래의 경우 /clear 서비스를 호출해서 거북이의 궤적을 클리어함

/spawn 서비스의 경우 x, y, z, theta, name 을 인자로 받는데 한번 써보자

 

 

 

3. rosparam 사용하기

- rosparam은 ros 파라미터 서버에다가 데이터를 담고 다루는 명령어.

- 파라미터 서버는 정수, 실수, 부울 등을 저장

- rospram은 YAML 문법을 따름

- rosparam set : 파라미터 설정

- rosparam get : 파라미터 가져옴

- rospram load : 파일에서 파라미터를 로드

- rosparam dump : 파라미터를 파일에 저장

- rosparam delete : 파라미터 삭제

- rosparam list : 파라미터 이름 목록 출력

3.1 rosparam list

 turtlesim 노드는 background_r/g/b 3 파라미터를 파라미터 서버에 두고있다.

 

 

3.2 rosparam set, rosparam get

rosparam set [param_name]

rosparam get [param_name]

 

배경색 r 파람을 200으로 설정하고 /clear 서비스를 부르니 색상이 바뀌었다.

 

터틀심 배경_g 의 파람을 얻으면 이렇게 나온다

 

 

지금까지 본게

토픽, 서비스, 파람. 전에는 토픽만 알았는데 되게 아리까리하네..

 

 

 

 

기초 단계

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으로는 어느 주제로 퍼블리시 되는 데이터를 시간흐름에 따라 보여주는데 거북이의 위치정보를 한번보자

기초 단계

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. 다음에 할께 뭐가 있을까?

 

 

 

 

1. 선행할거

튜토리얼 설치하는 내용인데 했으니 패스

 

2. ROS 그래프 컨셉 개요!

- 노드 : 다른 노드와 통신이 가능한 단위? 노드? 실행 가능한 프로그램쯤 될거같다.

- 메시지 : ROS의 데이터 타입으로 어느 주제로 퍼블리싱과 서브스크라이빙 할때 씀

- 토픽 : 노드는 한 토픽으로 메시지를 퍼블리시 하고, 메시지를 수신할 수 있음

- 마스터 : ROS의 네임 서비스

- rosout : ros버전 stdout/stderr

- roscore : 마스터 + rosout + 파라미터 서버

 

3. 노드

 ROS 패키지에서 실행하는 파일이며, 다른 노드와 통신할수 있도록 ros client library를 사용함. 이걸로 노드가 어느 토픽/주제로 메시지를 퍼블리시하거나 서브스크라이브 할수있고, 서비스도 제공하거나 쓸수도 있다.

 

4. client libraries

- 노드가 통신하는데 필요

- rospy : 파이썬 클라이언트 라이브러리

- roscpp : c++ 클라이언트 라이브러라

 

5. roscore

- ROS를 사용하려면 실행해야함. 마스터와 rosout, 파라미터 서버가 동작하기 시작한다 (진짜 오랜만이다)

 

 

6. rosnode 사용하기

 원래 쓰던 터미널에는 roscore가 돌고있으니 새 터미널을 열어서 roscore가 뭘하는질 보자 

rosnode list : 실행중인 rosnode 목록

 

rosout 노드만 돌고있는데, 이 노드는  다른 노드들의 디버깅 출력들을 모아서 보여준다.

rosnode info /rosou으로는  rosout 노드의 정보를 보자

 

정보를 보니 /rosout_agg라는 토픽으로 퍼블리시하고있고, /rosout이라는 토픽을 서브스크라이브하고있다.

이건 rostopic을 봐야알듯

 

 

 

 

7. rosrun 사용하기

 이제 ros패키지를 제대로 사용해볼 때가 됬다. rosrun은 아래의 문법으로 패키지에 있는 노드를 실행하는 명령이다. 

rosrun [package_name] [node_name]

 

 turtlesim 패키지의 turtlesim_node를 rosrun으로 실행해보자!

 

거북이 시뮬레이터가 켜졌다.

 

아까 썻던 rosnode list 명령을 주면 turtlesim 노드가 추가된걸 볼수 있다.

rosrun 할대 노드이름을 변경할수도 있나보다.

기초 단계

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. 다음에 할께 뭐가 있을까?

 

 

 

 

지난 글에서 패키지 빌드했는데 이게 또 왠말인가 싶지만 일단 읽어봐야 알거같다.

 

1. 패키지 빌드하기

  패키지가 의존하고 있는 것들을 설치하면 이제 빌드할수 있긴한데 ros 환경 설정파일을 실행/소스 시켜둬야 한다.

나는 이미 bashrc에다가 추가해서 그럴필요는 없지만 해야된다고 한다.

 

 

1.1 catkin_make 사용하기

 catkin 작업 공간을 만들고, 빌드하는 명령어로 3번 글에서 이미 사용했다.

 - 용도 1. catkin 작업공간으로 설정하기 : http://wiki.ros.org/catkin/Tutorials/create_a_workspace

 - 용도 2. catkin 작업공간 빌드하기 : http://wiki.ros.org/ROS/Tutorials/CreatingPackage

 

 

1.2 패키지 빌드하기

여기 내용도 beginner_tutorials 패키지를 생성하고 catkin_make를 할때 나온 내용들이 나와서

그냥 패스해도 될거같다.

 

 

 

 

기초 단계

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. 다음에 할께 뭐가 있을까?

 

 

ROS 패키지 만들기

- 이번 튜토리얼에서는 패키지 만드는 프로그램인 catkin과 rospack으로 의존 관계를 목록화하는걸 다룬다.

 

1. catkin 패키지는 어떻게 구성될까?

여기서 패키지는 catkin 패키지를 말하며 다음의 요소들을 가지고 있어야 한다!

- package.xml : 그 패키지의 메타 정보

- CMakeList.txt : catkin 패키지는 CMakeLists.txt가 있어야 함.

- 그 패키지의 폴더

 

2. catkin 작업 공간 내 패키지

- catkin 패키지들을 catkin 작업 공간에 두고 쓰는걸 추천하며, 각 패키지는 독립적으로도 빌드 할수 있다.

 

* catkin 작업공간 생성하기

- catkin 패키지를 만들기 전에 catkin 패키지들을 빌드할수 있는 작업공간부터 만들자!

ref : http://wiki.ros.org/catkin/Tutorials/create_a_workspace

 

 

위 코드대로 진행하면

홈 디렉토리에다가 catkin_ws 만들고 거기다가 catkin_make 해서 진행하자

 

위 catkin 작업공간 폴더 구조대로 src 폴더내에 CMakeLists.txt가 생성되었다.

 

이제 다시 패키지 생성 페이지로 돌아와서

3. catkin 패키지 만들기

 

위 코드대로 해서 작업 공간 내 src 폴더다가 패키지 생성하자

코드를 보니 이름은  beginner_tutorials, std_msgs, rospy, roscpp를 의존하나보다

패키지 생성 문법도 catkin_create_pkg <package_name> [depend1] [depend2]란다

 

 

실제 실행해보면

앞에서 본 데로 보유자, 라이센스, 의존관계 같은것들이 나온다.

 

 

4. catkin 작업공간 빌드하고, 설정파일 소싱하기

여기 내용대로 진행하면

 

빌드가 잘 진행 된다.

 

 

만든 작업공간을 ROS 환경에다가 추가하도록 source /catkin_ws/devel/setup.bash 명령어를 주자

안하면 등록이 안되서 내가 만든 패키지를 못찾는다.

rosls roscpp를 하면 잘 찾고, 결과도 나오지만 beginner_tutorials는 빌드 했어도 못찾는다.

하지만 위 소싱 명령어를 주면 이제 ros 명령어들이 잘 동작된다.

이 과정이 번거로우면 저거.. ~/ 디렉토리에 어떤 파일에 추가하면 되는데 이름이 기억안나니 pass

 

 

5. 패키지 의존관계

- 아까 catkin_create_pkg 명령으로 beginner_tutorial 패키지를 생성할때 뒤에 의존 패키지들을 추가로 줬었는데, 이 1차적인 의존 패키지들을 rospack으로도 볼수 있다. (해당 패키지 package.xml에서도 볼수있는데 위에서 이미 cat했으니 pass)

 

1차 의존관계라 옵션이 depends1인가 보다.

 

 

 

기초 단계

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/NavigatingTheFilesystem

 

파일 시스템 개요

- 패키지 : ROS 소프트웨어 한 단위로 여러 라이브러리, 실행 파일, 스크립트 등을 포함

- 매니페스트(package.xml) : 패키지 설명에 관한 파일로 이 패키지의 의존관계와 패키지의 버전, 라이센스 등 메타 정보 등을 포함한다.

 

 

파일 시스템 관련 툴

1. rospack(=ros + package) : ros 패키지 관련 정보 표시. rospack find [package명] -> 패키지 경로 반환. help 참조

2. roscd : roscd [패키지] -> 해당 패키지 경로로간다.

3. roscd log : ros log, 로스 로그 파일 위치로 이동

4. rosls : rosls [패키지]  -> 해동 로스 패키지 내 파일 목록 표시

 

내용보다 목차가 더길다 

+ Recent posts