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 명령어이다.
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2024 ROS 스터디] 반제호 #3주차 - ROS 기본 프로그래밍 (0) | 2024.07.22 |
---|---|
[2024 ROS 스터디] 김기태 #3주차 - ROS 기본 프로그래밍 (0) | 2024.07.21 |
[2024 ROS 스터디] 곽우인 #3주차 - ROS 기본 프로그래밍 (1) | 2024.07.17 |
[2024 ROS 스터디] 이연수 #2주차 - ROS 용어 및 도구 (0) | 2024.07.14 |
[2024 ROS 스터디] 김기태 #2주차 - ROS의 중요컨셉&명령어와 도구 (1) | 2024.07.14 |