중요 컨셉
1. ROS의 용어
1) 기본 용어
- Node: 최소 단위의 실행 가능한 프로세서. 메시지 통신으로 데이터 주고 받음.
- Package: 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것.
- Message: 노드 간의 데이터를 주고 받는 매체. integer, flaoting point, boolean과 같은 변수 형태. 메시지 안에 메시지가 있는 간단한 데이터 구조, 메시지들의 배열 등이 있는 형태의 구조도 가능.
2) 메시지 방식
- Topic: 연속성을 가진 단방향 통신 방법.(일회성)
Publisher: 메시지를 보내는 것. 같은 메시지를 여러 subscriber에 보낼 수 있음.
Subscriber: 메시지를 받는 것.
- Service: 양방향 통신 방법. 처리 완료 알림.(주고 받음)
Service server: 명령에 맞춰 로봇 동작, 프로세서 처리
Service client: server에게 요청(명령 보냄)
- Action: 복잡한 장시간 작업.
Action server: 피드백 전송, 결괏값 전송
Action client: 명령 전달
2. 메시지 통신 개념(노드 간의 메시지 통신)
1) 마스터: 각 실행되는 노드의 데이터 관리(XML-Remote Procedure Call)
$roscore
2) 서브스크라이버 노드 구동: 노드 실행 후 정보를 마스터에게 전달.(형태 정보, ip 정보, 포트 정보)
$rosrun <package> <node>
3) 퍼블리셔 노드 구동: 노드 실행 후 정보를 마스터에게 전달.(형태 정보, ip 정보, 포트 정보)
$rosrun <package> <node>
4) 퍼블리셔 정보 알림(마스터가 서브스크라이버 노드에게 새로운 퍼블리셔 정보 알림)
5) 퍼블리셔 노드에 접속 요청(TCPROS)
6) 서브스크라이버 노드에 접속 응답(접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호 전송)
7) TCP접속(TCPROS로 퍼블리셔 노드와 직접 연결)
8) 메시지 전송(발행자 노드가 서브스크라이버 노드에게 메시지 전송)
9) 서비스 요청 및 응답(1회 접속, 서비스 요청 및 응답 수행, 접속 해제)
3. 메시지: 토픽, 서비스, 액션, 파라미터(변수를 변경, 프로세스 변경)
- 토픽, 서비스, 액션은 모두 메시지를 사용
- 단순 자료형: 정수(integer), 부동 소수점(floating point), 불(boolean)
- 메시지 안에 메시지를 품고 있는 간단한 데이터 구조
- 메시지들이 나열된 배열과 같은 구조
4. 네임: 노드, 메시지가 가지는 고유의 식별자. ROS는 그래프라는 추상적 데이터 형태 지원
- global: / or 문자 없이 네임을 바로 씀
- private: ~
5. 좌표 변화(TF, transform): 각 조인트(joint)들의 상대 좌표 변환, tree 형태로 조인트들간의 관계도 표시
6. 클라이언트 라이브러리(Client Library): 다양한 프로그래밍 언어 지원
명령어
매우 중요 중요 약간 중요
1. 쉘 명령어:
- roscd(change derectory): 지정된 ROS 패키지의 디렉터리로 이동
- rosls(list files): ROS 패키지의 파일 목록 확인
- rosed(editor): ROS 패키지의 파일 편집
- roscp(copies files): ROS 패키지의 파일 복사
- rospd(pushd): ROS 데렉터리 인덱스에 디렉터리 추가
- rosd(directory): ROS 디렉터리 인덱스 확인
2. 실행 명령어:
- roscore: master(ROS 네임 서비스), rosout(로그 기록), parameter server(파라미터 관리)
- rosrun: 노드 실행
- roslaunch: 노드를 여러 개 실행 및 옵션 설정
- rosclean: ROS 로그 파일을 검사하거나 삭제
3. 정보 명령어:
- rostopic: ROS 토픽 정보 확인
- rosservice: ROS 서비스 정보 확인
- rosnode: ROS 노드 정보 확인
- rosparam(parameter): ROS 파리미터 정보 확인 및 수정
- rosbag: ROS 메시지 기록, 재생
- rosmsg: ROS 메시지 정보 확인
- rossrv: ROS 서비스 정보 확인
- rosversion: ROS 패키지 및 배포 릴리즈 버전 정보 확인
- roswtf: ROS 시스템 검사
4. catkin 명령어:
- catkin_create_pkg: 패키지 자동 생성
- catkin_make: 캐킨 빌드 시스템에 기반을 둔 빌드
- catkin_eclipse: 캐킨 빌드 시스템으로 생성한 패키지를 이클립스에서 사용할 수 있게 변경
- catkin_prepare_release: 릴리즈할 때 사용되는 로그 정리 및 버전 태깅
- catkin_generate_changelog: 릴리즈할 때 CHANGELOG.rst 파일 생성 또는 업데이트
- catkin_init_workspace: 캐킨 빌드 시스템의 작업 폴더 초기화
- catkin_find: 캐킨 검색
5. 패키지 명령어:
- rospack(package): ROS 패키지와 관련된 정보 보기
- rosinstall: ROS 추가 패키지 설치
- rosdep(dependencies): 해당 패키지의 의존성 파일 설치
- roslocate: ROS 패키지 정보 관련 명령어
- roscreate-pkg: ROS 패키지 자동 생성(구 rosbuild 시스템에서 사용)
- rosmakd: ROS 패키지를 빌드(구 rosbuild 시스템에서 사용)
ROS 도구
1. 다양한 개발 도구:
1) Rviz(ROS Visualization Tool)
- 센서 및 로봇 관련 데이터 시각화가 매우 간단.
- ROS의 3D시각화 툴(센서 데이터의 시각화, 레이저 거리 센서의 거리 데이터, Depth Camera의 포인트 클라우드 데이터, 카메라의 영상 데이터, IMU 센서의 관성 데이터 등)
- 로봇 외형의 표시와 계획된 동작을 표현(URDF)
- 내비게이션
- 매니퓰레이션
- 원격제어ROS
- 3D 뷰, 디스플레이, 메뉴, 툴, 뷰 형태, 시간
2) RQT
- 플러그인 방식의 ROS의 종합 GUI 툴
- 액션(Action), 구성(Configuration), 내성(Introspection), 로깅(Logging), 다양한 툴(Miscellaneous Tools), 로봇(Robot), 로봇툴(Robot Tools)
3) Gazebo
- 로봇 개발에 필요한 3차원 시뮬레이션을 위한 로봇, 센서, 환경 모델 등을 지원하고 물리 엔진(ODE)을 탑재하여 실제와 근사한 결과를 얻을 수 있는 3차원 시뮬레이터
- 시뮬레이션에 유리
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2025 ROS 스터디] 전예림 #3주차 - ROS 기본 프로그래밍 (0) | 2025.05.01 |
---|---|
[2025 ROS 스터디] 한상민 #2주차-ROS의 중요 컨셉, 명령어, 도구 (0) | 2025.04.30 |
[2025 ROS 스터디] 김승현 #3주차-ROS 기본 프로그래밍 (0) | 2025.04.29 |
[2025 ROS 스터디] 김승현 #2주차-ROS의 중요컨셉, 명령어, 도구 (0) | 2025.04.22 |
[2025 ROS 스터디] 조원영 #2주차- ROS 용어, 명령어, 도구 (0) | 2025.04.15 |