본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 김기태 #3주차 - ROS 기본 프로그래밍

반응형

#ROS 프로그래밍 전 알아둘 것

표준단위 - SI단위 (각도/Radian, 주파수/Hz, 힘/N, 전력/W, 길이/m, 무게/kg, 등..)

좌표 표현 방식 - x:forward, y:left, z:up , 회전 = 오른손 법칙

프로그래밍 규칙 - http://wiki.ros.org/CppStyleGuide에서 확인가능

 

#Topic/Service 작성

1. Topic Publisher/Subscriber

1) 패키지 생성

패키지를 구성할때 가장 기본적인 폴더와 파일들을 볼 수 있다.

2) 패키지 설정 파일 (package.xml) 수정 - ROS 필수 설정 파일중 하나, 패키지 이름, 저작자, 라이선스, 의존성 패키지 등이 담김

기존 패키지 설정 파일
수정한 패키지 설정 파일

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

4) 메시지 파일 작성 - time과 int32 외에도 boot, int8, int16, float32, 등... 메시지 기본 타입과 ROS에서 많이 사용되는 메시지를 모아놓은 common_msgs 등도 있다.

5) 퍼블리셔 노드 작성

6) 서브스크라이버 노드 작성

7) ROS노드 빌드

8) 퍼블리셔 실행

9) 서브스크라이버 실행

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

2.Service Server/client

1)패키지 생성

2) 패키지 설정파일 수정

3) 빌드 파일 수정

4) 서비스 파일 작성 ('---' 요청과 응답을 구분하는 구분자)

5) 서비스 서버 노드 작성

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

7) ROS 노드 빌드

8) 서비스 서버 실행

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

10) rqt 실행으로 확인

 

 

*하나의 노드는 복수의 퍼블리셔, 서브스크라이버, 서비스서버, 서비스클라이언트 역할도 할 수 있다.

 

#Parameter

1) 파라미터를 활용한 노드 작성

중간에 루프를 통해서 외부에서 변경된 것을 확인

2) 노드 빌드 및 실행

parameter를 통해 사칙연산을 바꾸고 있다.

#roslaunch

rosrun - 하나의 노드를 실행하는 명령어

roslaunch - 하나 이상의 정해진 노드를 실행

1)roslaunch 활용

roslaunch ros_tutorials_topic union.launch --screen

 

 

원래 의도와 다르게 서로의 메시지를 모두 서브스크라이브 하고있음

2) 수정

3) launch 태그

arg 많이 씀.

 

반응형