본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 초라핀스카 베로니카 #3주차 - ROS 기본 프로그래밍

반응형

 

ROS 프로그래밍 전에 알아둬야 할 사항

 

표준 단위 - SI 단위 사용

 

 

좌표 표현 방식

  • x: forward, y: left, z: up
  • 오른손 법칙

 

프로그래밍 규칙

 

 

퍼블리셔와 서브스크라이버 노드 작성 및 실행
- 토픽
- 서비스
- 액션
- 매개변수

 

  • Topic / Publisher / Subscriber

1. 패키지 생성

 

2. 패키지 설정 파일(package.xml) 수정

$ gedit package.xml

 

3. 빌드 설정 파일(CMakeLists.txt) 수정

$ gedit CMakeLists.txt

 

4. 메시지 파일 작성

$ mkdir msg

$ cd msg

$ gedit MsgTutorial.msg

$ cd ..

 

5. 퍼블리셔 노드 작성

$ cd src

$ gedit topic_publisher.cpp

 

 

6. 서브스크라이버 노드 작성
$ roscd ros_tutorials_topic/src
$ gedit topic_subscriber.cpp

 

7. ROS 노드 빌드

$ cd ~/catkin_ws $ catkin_make

 

8. 퍼블리셔 실행

$ rosrun ros_tutorials_topic topic_publisher

 

 

9. 서브스크라이버 실행

$ rosrun ros_tutorials_topic topic_subscriber

 

 

10. 실행된 노드들의 통신 상태 확인

$ rqt_graph

  • Service / Service server / Service client

1. 패키지 생성

$ cd ~/catkin_ws/src

$ catkin_create_pkg ros_tutorials_service message_generation std_msgs roscpp

$ cd ros_tutorials_service

$ ls

 

2. 패키지 설정 파일(package.xml) 수정

 

 

3. 빌드 설정 파일(CMakeLists.txt) 수정

$ gedit CMakeLists.txt

 

 

4. 서비스 파일 작성

$ roscd ros_tutorials_service
$ mkdir srv
$ cd srv
$ gedit SrvTutorial.srv

 

int64 (메시지 형식), a, b (서비스 요청: request), result (서비스 응답: response),
‘---’ (요청과 응답을 구분하는 구분자)

5. 서비스 서버 노드 작성

$ roscd ros_tutorials_service/src
$ gedit service_server.cpp

 

 

6. 서비스 클라이언트 노드 작성

$ roscd ros_tutorials_service/src

$ gedit service_client.cpp

 

8. 서비스 서버 실행

 

9. 서비스 클라이언트 실행

 

파라미터

1.  파라미터를 활용한 노드 작성
$ roscd ros_tutorials_service/src
$ gedit service_server.cpp

 

2. 노드 빌드 및 실행

$ cd ~/catkin_ws && catkin_make

$ rosrun ros_tutorials_service service_server

 

3. 매개변수 목록 보기

$ rosparam list

 

4. 파라미터 사용 예

calculation method:

1 - 덧셈

2 - 뺄셈

3 - 곱셈

4 - 나눗셈

 

roslaunch 사용법

- rosrun이 하나의 노드를 실행하는 명령어하는 명령어 이다.
- roslaunch는 하나 이상의 정해진 노드를 실행시킬 수 있다.
그 밖의 기능으로 노드를 실행할 때 패키지의 매개변수나 노드 이름 변경, 노드 네임스페이스 설정, ROS_ROOT 및 ROS_PACKAGE_PATH 설정, 환경 변수 변경 등의 옵션을 붙일 수 있는 ROS 명령어이다.

반응형