반응형
https://youtube.com/playlist?list=PLX-Ur4rl2-qwNB3cD5UAGo-RPe5IBw1pu&feature=shared
2주차에는 위 강의들을 보고 진행을 하였다.
2주차 강의들은 Chapter4. ROS의 중요컨셉, Chapter5. ROS 명령어, Chapter6. ROS 도구로 이루어져 있다
Chapter4. ROS의 중요컨셉
1. ROS 용어
- Node : 최소 단위의 실행 가능한 프로세서. 각 노드는 메시지 통신으로 데이터를 주고 받는다.
- Package : 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것.
- Message : 메시지를 통해 노드간의 데이터를 주고받게 된다. (형태 : integer, floating, point, boolean)
- Topic : 단방향, 연속성을 가진 통신방법 중 하나
- Publisher : 메세지를 보낸다.
- Subscriber : 메세지를 받는다.
- Service : 양방향, 일회성 통신방법
- Service server : 서비스 응답
- Service client : 서비스 요청
- Action : 중간 피드백이 있다. 주로 복잡한 테스크를 할 때, action을 사용함
- Action server : 액션 피드백(중간결과) 전달, 액션 결과 전달
- Action client : 액션 목표 전달
2. 메시지 통신 개념
---------------------
- 마스터 : 노드 정보 관리 / 마스터 구동 -> $ roscore
- 서브스크라이버 노드 : 정보 구독 / 서브스크라이버 노드 구동 -> $ rosrun 패키지이름 노드이름
- 퍼블리셔 노드 : 정보 발행 / 퍼블리셔 노드 구동 -> $ rosrun 패키지이름 노드이름
- 퍼블리셔 정보 알림 : 마스터는 서브스크라이버 노드에게 새로운 퍼블리셔 정보를 알린다.
- 퍼블리셔 노드에 접속 요청 : 마스터로부터 받은 퍼블리셔 정보를 이용하여 TCPROS 접속을 요청
- 서브스크라이버 노드에 접속 응답 : 접속 응답에 해당되는 자신의 TCP URI 주소와 포트번호를 전송
- TCP 접속 : TCPROS를 이용하여 퍼블리셔 노드와 직접 연결
- 메시지 전송 : 발행자 노드는 서브스크라이버 노드에게 메시지를 전송 (토픽)
- 서비스 요청 및 응답 : 1회에 한해 접속, 서비스 요청 및 서비스 응답이 수행되고 서로간의 접속을 끊는다.
- ex) turtlesim 패키지
1주차에서 한 turtlesim 실습을 예시로 보면 위 그림과 같다.
3. ROS 메시지
- 토픽, 서비스, 액셕은 모두 메시지를 사용
- 단순 자료형
- 메시지 안에 메시지를 품고 있는 간단한 데이터 구조
- 메시지들이 나열된 배열과 같은 구조
4. Name
- 노드, 메시지 가지는 고유의 식별자
- 글로벌(global) : 문자 없이 네임을 바로 쓰거나 네임 앞에 슬래쉬(/)를 붙인다
- 프리베이트(private) : 네임 앞에 틸트(~)를 붙인다
Chapter5. ROS 명령어
1. ROS 셸 명령어
- roscd : 지정한 ROS 패키지의 디렉터리로 이동
- rosls : ROS 패키지의 파일 목록 확인
- rosed : ROS 패키지의 파일 편집
- roscp : ROS 패키지의 파일 복사
- rospd : ROS 디렉터리 인덱스에 디렉터리 추가
- rosd : ROS 디렉터리 인덱스 확인
2. ROS 실행 명령어
- roscore : master(ROS 네임 서비스), rosout(로그 기록), parameter sever(파라미터 관리)
- rosrun : 노드 실행
- roslaunch : 노드를 여러 개 실행 및 실행 옵션 설정
- rosclean : ROS 로그 파일을 검사하거나 삭제
3. ROS 정보 명령어
- rostopic : ROS 토픽 정보 확인
- rosservice : ROS 서비스 정보 확인
- rosnode : ROS 노드 정보 확인
- rosparam : ROS 파라미터 정보 확인, 수정
- rosbag : ROS 메시지 기록, 재생
- rosmsg : ROS 메시지 정보 확인
- rossrv : ROS 서비스 정보 확인
- rosversion : ROS 패키지 및 배포 릴리즈 버전 정보 확인
- roswtf : ROS 시스템 검사
4. ROS catkin 명령어
- catkin_create_pkg : 패키지 자동 생성
- catkin_make : 캐킨 빌드 시스템에 기반을 둔 빌드
- catkin_eclipse : 캐킨 빌드 시스템으로 생성한 패키지를 이클립스에서 사용할 수 있게 변경
- catkin_prepare_release : 릴리즈할 때 사용되는 로그 정리 및 버전 태깅
- catkin_generate_changelog : 릴리즈할 때 CHANGELOG.rst 파일 생성 또는 업데이트
- catkin_init_workspace : 캐킨 빌드 시스템의 작업 폴더 초기화
- catkin_find : 캐킨 검색
5. ROS 패키지 명령어
- rospack : ROS 패키지와 관련된 정보 보기
- rosinstall : ROS 추가 패키지 설치
- rosdep : 해당 패키지의 의존성 파일 설치
- roslocate : ROS 패키지 정보 관련 명령어
- roscreate-pkg : ROS 패키지 자동 생성
- rosmake : ROS 패키지를 빌드
Chapter6. ROS 도구
1. Rviz
- ROS의 3D 시각화툴
- 로봇 외형의 표시와 계획된 동작을 표현
- 내비게이션
- 매니퓰레이션 받을 수 없습니다. 아마도 apt-get update를 실행해야 하거나 --fix-missing 옵션을 줘서 실행해야 할 것입니다.
ahnsunyoung@ahnsunyoung-ThinkPad-X1-Carbon-Gen-8:~$ - 원격 제어
- Rviz 설치 : $ sudo apt-get install ros-noetic-rviz (나는 noetic 버전이여서 noetic으로 설치를 진행하였다)(이미 설치되어 있음)
- Rviz 실행 : 한쪽 터미널에 $ roscore 를 실행하고, 다른 터미널에 $ rviz를 실행한다.
2. RQT
- 플러그인 방식의 ROS의 종합 GUI 툴
- 대표적인 플러그인 : rqt_image_view, rqt_graph, rqt_plot, rqt_bag
- RQT 설치 : $ sudo apt-get install ros-noetic-rqt ros-noetic-rqt-common-plugins (설치가 안된다면 sudo apt-update를 해보자)(이미 설치되어 있음)
- RQT 실행 : $ rqt
- RQT 플러그인
- 액션 : Action 타입의 데이터 구조를 확인
- 구성
- Dynamic Reconfigure : 노드들에서 제공하는 설정값 변경을 위한 GUI 설정값 변경
- Launch : roslaunch의 GUI 버전
- 내성
- Node Graph : 구동중인 노드들의 관계도 및 메시지의 흐름을 확인 가능한 그래프 뷰
- Package Graph : 노드의 의존 관계를 표시하는 그래프 뷰
- Process Monitor : 실행중인 노드들의 CPU 사용률, 메모리 사용률, 스레드 수 등을 확인
- 로깅
- Bag : ROS 데이터 로깅
- Console : 노드들에서 발생하는 경고, 에러 등의 메시지를 확인
- Logger Level : ROS의 Debug, Info, Warn, Error, Fatal 로거 정보를 선택하여 표시
- 다양한 툴
- Python Console : 파이썬 콘솔 화면
- Shell : 쉘 구동
- Web : 웹 브라우저를 구동
- 로봇
- 사용하는 로봇에 따라 계기판 등의 플러그인을 이곳에 추가
- 로봇툴
- Controller Manager : 컨트롤러 제어에 필요한 플로그인
- Diagnostic Viewer : 로봇 디바이스 및 에러 확인
- Moveit! Monitor : 로봇 팔 계획에 사용되는 Moveit! 데이터 확인
- Robot steering : 로봇 조정 GUI 툴, 원격 조정에서 이 GUI 툴을 이용하여 로봇 조종
- Runtime Monitor : 실시간으로 노드들에서 발생되는 에러 및 경고를 확인
- 서비스
- Service Caller : 구동중인 서비스 서버에 접속하여 서비스를 요청
- Service Type Browser : 서비스 타입의 데이터 구조 확인
- 토픽
- Easy Message Publisher : 토픽을 GUI 환경에서 발행
- Topic Publisher : 토픽을 생성하여 발행
- Topic Type Browser : 토픽 타입의 데이터 구조 확인
- Topic Monitor : 사용자가 선택한 토픽의 정보 확인
- 시각화
- Image View : 카메라의 영상 데이터 확인
- Navigation Viewer : 로봇 네비게이션의 위치 및 목표지점 확인
- Plot : 2차원 데이터 플롯 GUI 플로그인, 2차원 데이터의 도식화
- Pose View : 현재 TF의 위치 및 모델의 위치 표시
- RViz : 3차원 시각화 툴인 RViz 플러그인
- TF Tree : tf 관계를 트리로 나타내는 그래프 뷰
- rqt 실습 - rqt_graph
3. Gazebo
- 물리 엔진을 탑재하여 실제와 근사한 결과를 얻을 수 있는 3차원 시뮬레이터
이렇게 ROS 명령어 및 도구에 대해 알아보았다.
다음 시간에는 ROS 프로그래밍에 대해 공부할 것이다.
반응형
'FOSCAR-(Autonomous Driving) > ROS 스터디' 카테고리의 다른 글
[2024 ROS 스터디] 성창엽 #2주차 - ROS 명령어 및 도구 (0) | 2024.02.04 |
---|---|
[2024 ROS 스터디] 변수양 #2주차 - ROS 명령어 및 도구 (0) | 2024.02.03 |
[2024 ROS 스터디] 이하람 #1주차 - ROS 소개 및 설치하기 (0) | 2024.01.31 |
[2024 ROS 스터디] 이강욱 #1주차 - ROS 소개 및 설치하기 (1) | 2024.01.29 |
[2024 ROS 스터디] 손희문 #1주차 - ROS 소개 및 설치하기 (0) | 2024.01.29 |