Chapter 7) ROS 기본 프로그래밍
Contents
- 퍼블리셔, 서브스크라이버 노드 작성
- 서비스 섭버와 클라이언트 노드 작성
- 파라미터 사용법
- Roslaunch를 통해 복수의 노드 실행 또는 각 노드의 옵션 변경 방법
1. ROS 프로그래밍 기본사항
A. 표준단위
• SI단위로 통합
B. 좌표 표현 방식
• X: forward, y: left , z: up
• 오른손 법칙
C. 프로그래밍 규칙
2. 메시지 통신의 종류
• 토픽 : 퍼블리셔가 서브스크라이버 노드한테 메시지 전송(단방향, 연속성)
• 서비스 : 클라이언트가 서비스 서버한테 요청에 대한 결과값을 서비스 클라이언트한테 전송(양방향, 일회성)
• 액션 : 서비스랑 비슷하나, 중간 결과물을 피드백 전달
Ros 패키지 생성 후 패키지 설정 파일 수정
1) 패키지 생성
- $cd~/catkin_ws/src
- $catkin_create_pkg ros_tutorials_topic message_generation std_msgs roscpp
- $cd ros_tutorials_topic
- $ls > List 파일 확인 가능 후
- $Gedit package.xml
패키지 설정파일 수정 (패키지 이름, 저작자, 라이선스, 의존성 패키지 등 기술)
가장 심플한 메모장 gediter에서 기본 세팅을 수정
2) 빌드 설정 파일 수정
- $gedit CMakeLists.txt
3) 메시지 파일 작성
- $roscd ros_tutorials_topic > 패키지 폴더 이동
- $mkdir msg > 패키지에 msg라는 메시지 폴더를 신규 작성
- $cd msg > 작성한 msg 폴더로 이동
- Gedit MsgTutorial.msg > MsTutorial.msg 파일 신규 작성 및 내용 수정
> 형식 + 데이터 : 메시지를 전송할 때 시각과 데이터를 보내기 위함
퍼블리셔 노드와 서브스크라이버 노드 작성 후
퍼블리셔 실행
- 노드실행 전 roscore 실행하기!
- $rosrun ros_tutorials_topic topic_publisher
노드를 생성하고 다양하게 rosrun을 접근하였지만 topic_publisehr을 찾을 수 없다는 에러… 시간 날 때 다시 해보겠습니다 ㅜㅜ..
Roslaunch
- 이전 까지 rosrun으로 하나의 노드를 실행했따면 하나 이상의 정해진 노드를 실행할 수 있다.
- $roscd ros_tutorials_topic
- $mkdir launch
- $cd launch
- $gedit union.launch
<옵션>
- Pkg 패키지의 이름
- Type 실제 실행할 노드의 이름
- Name 위 type 해당 노드가 실행 될 때 이름
<실행>
- $ roslaunch ros_tutorials_topic union.launch—screen
<해결방안>
- $roscd ros_tutorials_service_launch
- $gedit union.launch
union.launch를 통해서 별도의 그룹으로 <launch>태그 안의 내용들을 수정 가능
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2024 ROS 스터디] 안선영 #3주차 - ROS 기본 프로그래밍 (1) | 2024.02.13 |
---|---|
[2024 ROS 스터디] 민경서 #3주차 - ROS 기본 프로그래밍 (0) | 2024.02.13 |
[2024 ROS 스터디] 이상혁 #2주차 - ROS 명령어 및 도구 (0) | 2024.02.13 |
[2024 ROS 스터디] 변수양 #3주차 - ROS 기본 프로그래밍 (0) | 2024.02.13 |
[2024 ROS 스터디] 성창엽 #4주차 - SLAM과 내비게이션 (0) | 2024.02.13 |