728x90
* 본 강의는 2018년 강의
Ch1. 로봇 소프트웨어 플렛폼
- Hardware Module + OS + App(Service) + User : Echo System의 4대 요소
- 위의 내용들이 로봇 분야에도 그대로 적용됨
- 2018년 기준으로 40여개의 로봇 OS 존재. 그중 ROS를 가장 많이 사용
Ch2. 로봇 운영체제 ROS
- ROS란?
- ROS(Robot Operating System)는 로봇용 Open Source Meta-Operating System으로써 Open Source 기반의 Robot Programming에 필요한 여러 기능, 도구들과 library들의 모음이다
- 이름과는 달리 OS가 아니라 Library나 Framework 혹은 Middleware(서로 다른 Application이 통신하는데 사용되는 Software)에 더 가까움
- 로봇 간 / 로봇과 센서 간의 통신을 연결하거나 Open source와 연결시켜주는 도구
-ROS의 특징
1) Communication Infra
- Node간 data 통신 제공. Process간 통신으로 sensor의 data를 이용하여 작업 수행 가능
- Node간 message 교환 방법으로 복잡한 프로그램을 잘게 나눠 공동 개발 가능
- Node간 data 교환시 message를 사용하기 때문에 각 node는 서로 다른 언어로 작성 가능
- Message Passing
- 특정한 protocol을 사용하여 message를 동기화 시키는 기술로써, process들이 동일한 주소 공간을 공유하지 않고도 통신과 동기화를 할 수 있게 함
- 통신하는 process들이 서로 다른 computer에 있고 그 computer들이 서로 network를 통해 연결된 환경에서 유용
- Message의 기록 및 재생
- 전송된 정보를 통해 2차 작업을 수행하는 도중 그 data를 가로챔
- 현재 robot이 받아들이고 있는 각종 sensor나 device의 상태 기록, 그리고 그 기록을 필요할 때 재생할 수 있음
- 알고리즘 개발 시 자주 사용
- Ex) Navigation 개발 시 test 환경이 계속 달라지면 algorithm과 function에 대한 monitoring이 어려움
- Robot 구동 시 각종 sensor의 상태값들을 message로 주고 받고 저장 후 추후 algorithm 수정 시 robot을 구동시키는 것이 아닌 그 저장한 data들을 재생시켜 algorithm에 대한 monitoring 가능
2) Various Functions about Robot
- Robot의 표준 message 정의
- Robot Geometry Library : Robot, sensor등의 상대적 좌표를 트리화 시키는 TF 제공
- Robot의 physical characteristic을 설명하는 XML 문서 기술
- XML (Extensible Markup Language) : 특수한 목적을 가지는 mark-up 언어 개발시 사용되는 다목적 mark- up 언어. 많은 다른 종류의 데이터들을 tag를 통해 구분하여 기술 가능
- Mark Up 언어 : Tag등을 사용하여 문서/데이터를 명기하는 언어능
- HTML과 비슷한 형식을 가지나 데이터 표시용인 HTML과 달리 XML은 데이터를 저장하고 전송하는데 사용한다
- Robot의 상태를 한눈에 파악할 수 있는 진단 system 제공
- Sensor driver, sensing.recognition level의 library 제공
- Navigation : Robot의 pose(위치/자세) 추정, 지도상의 자기 위치 추정 제공
- Mapping에 사용되는 SLAM, map 내에서 복적지를 찾아가는 Navigation library 제공
- Manipulation (Robot 조작을 의미) : Various Manipulation library 제공, GUI 형태의 Manipulation tool(Movelt) 제공
3) Various Development Tools
- Command-Line Tools
- GUI 없이 ROS 명령어로만 거의 모든 ROS의 기능 구현 가능
- Rviz
- ROS에서 제공하는 3D 시각화 도구로써, laser, camera 등의 sensor data를 시각화
- Robot 외형과 계획된 동작 표현
- RQT
- GUI 개발에 쓰이는 Qt framework 기반의 ROS sofrware framework
- Gazebo
- 3D simulation을 위한 robot, sensor, environment model등을 지원하고 물리 엔진을 탑제하여 실제와 근사한 결과를 얻을 수 있는 3D Simulator
- Robotics에서 많이 사용되는 modeling, sensing, recognition, navigation, manipulation 기능 지원
- Robotics 생태계 형성 : Community 의견을 중점적으로 개발/운영됨
- ROS는 Meta-Operating System
- Meta-Operating System이란 로봇 제어에 필요한 기능들을 제공해주는 framework로써 기존 OS의 기능들을 사용하며 추가적으로 로봇 개발에 필요한 필수 기능들을 라이브러리 형태로 제공하며
- 이기종 디바이스 간의 통신 또한 지원한다(Robot의 Hardware가 다양하여 필요한 기능. 단일 OS를 만들지 않고 Meta-Operating System을 선택한 이유)
-개발환경
- OS는 Linux 추천 (ROS의 개발, 배포 환경이 Linux)
- Windows도 가능은 하나 개발환경 구축이 정말 어렵고 ROS관련 packages를 모두 사용할 순 없음
- Virtualbox 또한 느려서 비추천(대신 Dual Booting 사용)
- LTS(Long Term Support)를 지원하는 ubuntu, ROS 사용다
- Linux : Unix 계열의 Open Source 기반의 OS로, 여러 version들이 존재하며 Virtual box, Docker 등의 다양한 곳에 설치하여 사용 가능하다.
주로 terminal로 작동되는 CLI(Command Line Interface)를 기반으로 사용한다. ex) Shell Script
- Shell : 사용자가 문자를 입력헤 computer에 명령할 수 있도록 하는 program. OS의 system call을 통해 terminal 창에서 사용자가 입력한 문자열 형태의 command를 실행
- Shell Script : 여러 shell command가 조합된 file로, 특정 command들을 모아놓고 원하는 시점에 이 file을 불러와 실행시킴 .'.sh'의 확장자를 가지며 bash/sh file_name.sh 명령어를 통해 실행할 수 있다
- Terminal : Shell을 실행하기 위해 prompt로 문자로 구성된 command를 입력받아 computer에 전달
- 사용자가 command (실행할 program 이름 + 실행 인자) 입력
- Shell이 file system에서 해당 program의 위치 탐색 후 'fork()' system call을 통해 새로운 child process를 생성
- child process에서 다양한 system call들을 통해 command를 수행
- sheel은 위의 child process가 종료될 때 까지 대기하다가 wait()로부터 정상적으로 값을 return받을 시 prompt에 출력
- shell은 새로운 command를 기다림
- Shell의 종류
- sh : 최초의 shell
- bash : Linux 표준 shell
- zsh : MaxOS에서 사용하는 shell
- Hostname : Network에 연결된 device에 부여되는 고유한 이름으로, 여기서는 computer network에 접속한 device에 할당된 이름. IP 대신 읽기 쉬운 문자열로 저장
https://www.youtube.com/watch?v=ot_D9N-H4lQ&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw
https://www.youtube.com/watch?v=KcIUl3WH-C8&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=2
'Study_ROS > [ROBOTIS ROS Courses]' 카테고리의 다른 글
[ROBOTIS ROS Courses] Ch8. 로봇, 센서, 모터 ~ Ch10. 모바일 로봇 (0) | 2023.01.24 |
---|---|
[ROBOTIS ROS Courses] Ch7. ROS 기본 프로그래밍 (0) | 2022.09.17 |
[ROBOTIS ROS Courses] Ch6. ROS 도구(RViz, rqt, Gazebo) (0) | 2022.09.17 |
[ROBOTIS ROS Courses] Ch5. ROS 명령어 + 용어 정리 (0) | 2022.09.10 |
[ROBOTIS ROS Courses] Ch3. ROS 개발환경 구축 ~ Ch4. ROS의 중요 컨셉 (0) | 2022.09.10 |