본문 바로가기

FOSCAR-(Autonomous Driving)/ROS 스터디

[2024 ROS 스터디] 변수양 #3주차 - ROS 기본 프로그래밍

반응형

ROS 강의 Chapter7. ROS 기본 프로그래밍 - YouTube

 
ROS 강의 Chapter7. ROS 기본 프로그래밍
 
1) ROS 프로그래밍 전에 알아둬야 할 사항(공개된 패키지를 사용할 때 등등..)
2) 퍼블리셔와 서브스크라이버 노드 작성 및 실행
3) 서비스 서버와 클라이언트 노드 작성 및 실행
4) 액션 서버와 클라이언트 노드 작성 및 실행
5) 파라미터 사용법
6) Roslaunch 사용
 
- 표준 단위 (SI 사용)
- 좌표 표현 방식(x; forward, y; left, z; up)
- 프로그래밍 규칙 

 
* 메시지 통신의 종류
- 토픽(연속성, 단방향; 퍼블리셔 -> 서브스크라이버)  
- 서비스(서비스 서버 ->(응답) (요청)<- 서비스 클라이언트) 
- 액션(액션 서버 -> (액션 피드백, 결과 전달) (액션 목표 전달) <- 액션 클라이언트 )
- 매개변수(노드1<->파라미터 서버(ROS master); 쓰기 &읽기 <->노드 2))
 
- 토픽
- 패키지 생성

- 패키지 설정 파일 수정

- 빌드 설정 파일 수정

 
- 메시지 파일 작성

- 퍼블리셔 노드 작성, 서브스크라이버 노드 작성
- ROS 노드 빌드
$ cd ~/catkin_ws ; catkin 폴더로 이동
$ catkin_make ; catkin 빌드 실행
 
- 퍼블리셔 실행
$ rosrun ros_tutorials_topic topic_publisher

이렇게 나와야 됨

 

실행화면이 이렇게 떠서 해결방법을 찾다가 일단 아직 못 찾아서 동영상 속 결과물로 대체
해결하면 수정할 예정(2/13~)
 
- 서브스크라이버 실행
$ rosrun ros_tutorials_topic topic_subscriber
$ rostopic info /ros_tutorial_msg
 
- 실행된 노드 통신 확인
$ rqt_graph

- 소스코드
토픽에서 사용되는 퍼블리셔와 서브스크라이버 노드를 작성하고 이를 실행해서 노드간 토픽 통신 방법에 쓰이는 코드

https://github.com/ROBOTIS-GIT/ros_tutorials/tree/master/ros_tutorials_topic

>> 바로 적용하려면 catkin_ws/src 폴더에서

$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/ros_tutorials.git
$ cd ~/catkin_ws
$ catkin_make
위 명령어로 소스코드를 클론한 뒤 빌드를 실행

$ rosrun ros_tutorials_topic topic_publisher
$ rosrun ros_tutorials_topic topic_subscriber
그 뒤 이 노드 실행
 
- 서비스
요청이 있을 때만 응답하는 서비스 서버와 요청하고 응답받는 서비스 클라이언트로 나뉨
토픽과는 달리 일회성 메시지 통신, 요청과 응답이 완료되면 두 노드 접속 끊김

 
 
* 하나의 노드는 복수의 퍼블리셔 서브 스크라이버, 서비스 서버, 서비스 클라이언트 역할을 할 수 있음
 
- 파라미터
service_server.cpp 소스를 수정하여 사칙 연산 할 수 있도록 파라미터 활용
>> 파라미터는 노드 외부로부터 노드의 흐름이나 설정, 처리 등을 바꿀 수 있음
 
- roslaunch 사용 > 변경 후의 실행된 노드들의 모습

이전에 작성한 노드의 이름을 바꾸어 퍼블리쉬 노드와 서브스크라이버 노드 각각 두개씩 구동하여 서로 별도의 메시지 통신을 하도록 함

 
roslaunch는 rosrun과 달리 하나 이상의 정해진 노드를 실행시킬 수 있음
실행 명령어 : roslaunch [패키지명] [ roslaunch 파일]
 
 

반응형