01_ROS2소개
1. 메타운영체제, 소프트웨어 플랫폼, 프레임워크, 미들웨어에 대하여 설명하라.
● 메타운영체제
애플리케이션과 분산 컴퓨팅 자원 간의 가상화 레이어로 분산 컴퓨팅 자원을 활용하여, 스케쥴링 및 로드, 감시, 에러 처리 등을 실행하는 시스템.
즉, 전통적인 OS가 아닌 기존 OS(Linux, Window, OS-X, Android)의 프로세스 관리 시스템, 파일 시스템, 프로그램 유틸(컴파일러, 스레드 모델 등) 등을 사용하고 있으며, 이에 추가적으로 다수의 이기종 하드웨어 간의 데이터 송수신, 스케쥴링, 에러 처리 등 로봇 응용 소프트웨어 개발을 위한 필수 기능들을 라이브러리 형태로 제공하고 있음.
▷ 분산 컴퓨팅: 여러 컴퓨터 또는 서버의 네트워크를 통해 컴퓨팅 작업을 처리하는 것.
▷ 스케쥴링: 운영체제가 주어진 작업을 프로세스에 자원을 할당하는 동작 기법. ( 다중 프로그래밍을 가능하게 하는 운영 체제의 동작 기법 )
▷ 이기종 하드웨어: 서로 다른 종류의 컴퓨팅 기기와 구성 요소가 협력하여 더 높은 성능과 효율성을 달성하는 환경.
▷ 프로세스: 컴퓨터에서 실행중인 프로그램.
● 소프트웨어 플랫폼
여러 기능을 제공하는 공통 실행환경. ( 하드웨어와 응용 소프트웨어 사이의 중간 계층 )
다양한 하드웨어와 소프트웨어가 상호 작용할 수 있도록 지원
● 프레임워크
특정 유형의 용응 프로그램을 개발하기 위한 표준화된 코드 라이브러리와 도구 세트.
▷ 라이브러리와의 차이점
프레임워크는 다양한 형태의 결과물을 만들기 위한 틀(제공받은 요소와 규약)인 반면에 라이브러리는 특정 기능을 수행하는 코드의 집합.
즉, 프레임워크는 주어진 구조 안에서 코드를 작성하는 것이고,
라이브러리는 코드를 작성하는데 필요에 따라 선택적으로 사용 가능한 코드 집합임.
● 미들웨어
이기종 시스템 간의 상호작용할 수 있도록 돕는 소프트웨어. (ROS2는 DDS라는 미들웨어 표준을 기반으로 설계되었으며, DDS는 분산 시스템에서 데이터를 실시간으로 교환할 수 있도록 지원)
2. ROS를 응용한 제품 또는 연구개발 프로젝트 사례를 3가지 이상 조사하라. 산업계에서 실제로 얼마나 많이 사용하는지 확인해볼 것
● 자율주행 자동차
Waymo는 ROS를 사용하여 자율주행 소프트웨어를 개발하고 있으며, ROS를 통해 센서 데이터 처리, 경로 계획, 장애물 회피 등을 수행함.
● 농업 로봇
딸기 수확 로봇을 개발하는 Agrobot은 ROS를 사용하여 작물의 성장을 모니터링하고, 최적의 수확 시기를 결정하며, 자율적으로 수확 작업을 수행함.
● 학술 연구
NASA는 ROS의 기능을 활용하여 로봇이 자율적으로 탐사하고 데이터를 수집할 수 있도록 하는 우주 탐사 로봇을 개발하고 있음.
02_ROS2개발환경구축
1. ROS2를 설치하고 19, 21, 23페이지의 명령어 실행결과를 첨부하시오.
2. Ubuntu 20.04 리눅스에 대하여 조사하시오. 출시연도, 기능 등
Ubuntu 20.04 LTS (Focal Fossa)는 Canonical에서 개발한 리눅스 배포판으로, 2020년 4월 23일에 출시함. LTS(Long Term Support) 버전으로, 25년 4월까지 5년간의 보안 및 유지 관리 업데이트를 제공. 또한, 안전 부팅(Secure Boot)과 같은 보안 기능이 강화되어 애플리케이션 샌드박싱과 같은 보안 기술을 통해 시스템을 더 안전하게 보호함.
3. ROS2 배포판을 모두 조사하시오. 이름, 출시연도 등
배포판은 알파벳 순서대로 이름이 지어지짐.
LTS 버전은 장기적인 안정성과 지원을 제공하기 위해 설계되었으며, 일반 릴리스보다 더 오랜 기간 동안 유지 보수와 보안 업데이트가 제공됨.
| 이름 | 출시 연도 | 특징 |
| Ardent Apalone | 2017년 12월 | 첫 번째 ROS2 릴리스, 알파 버전 성격 |
| Bouncy Bolson | 2018년 7월 | 개선된 안정성과 기능, 베타 릴리스 |
| Crystal Clemmys | 2018년 12월 | 더 많은 기능과 안정성을 추가, 주요 개선 사항 포함 |
| Dashing Diademata | 2019년 5월 | 첫 번째 LTS(장기 지원) 릴리스, 2년간의 유지 관리 지원 |
| Eloquent Elusor | 2019년 11월 | 새로운 기능과 성능 최적화, 최신 개발 버전 |
| Foxy Fitzroy | 2020년 6월 | LTS 릴리스, 안정성과 장기 지원, 3년간의 유지 관리 지원 |
| Galactic Geochelone | 2021년 5월 | 안정화 및 기능 추가, 1년간의 유지 관리 지원 |
| Humble Hawksbill | 2022년 5월 | LTS 릴리스, 안정성과 장기 지원, 3년간의 유지 관리 지원 |
| Iron Irwini | 2023년 5월 | 최신 기능과 성능 최적화, 1년간의 유지 관리 지원 |
4. 가상머신이란 무엇인가?
호스트 하드웨어에서 별도의 머신처럼 동작하는 격리된 환경. 즉, 독립적으로 작동할 수 있게함으로써 다른 가상 머신이나 호스트 운영체제와 격리되어 실행되기 때문에 동일한 물리적 하드웨어에서 여러 운영체제나 애플리케이션을 동시에 실행할 수 있음.
5. 가상머신의 종류를 조사하시오.
| 가상머신의 종류 | 예시 | 특징 |
| Type 1 하이퍼바이저 (Bare Metal) | VMware ESXi, Microsoft Hyper-V, Xen | 하드웨어 위에 직접 설치, 높은 성능과 안정성 제공 |
| Type 2 하이퍼바이저 (Hosted) | VMware Workstation, Oracle VirtualBox, Parallels Desktop | 호스트 운영 체제 위에서 실행, 사용이 간편하고 데스크탑 환경에 적합 |
| 컨테이너 기반 가상화 | Docker, Kubernetes | 애플리케이션 경량화, 빠른 배포와 높은 밀도 제공 |
6. 가상머신 중에 WSL의 장점은 무엇인가?
● 쉬운 설치 및 설정: 간단한 명령어로 빠르게 설치 가능
● 리소스 효율성: 가상 머신보다 적은 메모리와 CPU 사용
● 개발 환경 통합: Windows와 Linux 도구를 동시에 사용할 수 있음
03_ROS2특징
1. ROS1과 ROS2의 통신방식의 관점에서 차이를 설명하라.
● 중앙 집중식 vs 분산형
ROS1은 중앙 집중식 마스터 구조를 사용하지만, ROS2는 분산형 DDS 기반 구조를 사용
● 통신 미들웨어
ROS1에서는 자체 개발한 TCPROS와 같은 통신 라이브러리를 사용하고 있던 반면, ROS2는 RTPS(Real Time Publish Subscribe) 프로토콜을 지원 하는 통신 미들웨어 DDS를 사용
2. ROS1의 통신 미들웨어인 TCPROS와 ROS2의 통신 미들웨어인 DDS의 차이를 설명하라.
ROS1은 중앙 집중식 ROS Master가 모든 통신을 관리하여 시스템 전체의 의존성이 높기 때문에 ROS Master가 연결이 끊기거나 죽는 경우 모든 시스템이 마비되는 반면,
ROS2는 DDS를 사용해 분산형 구조로 노드들이 직접 서로를 발견하고 연결할 수 있어 더 유연하고 신뢰성이 높음.
3. 실시간 시스템(real time system)의 정의를 조사하라.
실시간 응용 프로그램 기능을 수행하고 예측 가능하며 특정한 시간 제약 내에서 이벤트에 대응할 수 있는 하드웨어 및 소프트웨어 구성 요소를 갖춘 정보 처리 시스템.
4. GPL라이선스와 Apache 2.0 라이선스의 차이를 설명하라.
● GPL 라이센스: 소스 코드를 배포할 때 원본 소스 코드와 수정된 소스 코드 모두를 포함해야 하며, 소스 코드가 공개해야 함.
● Apache 2.0 라이센스: 소스 코드를 배포할 때 원본 저작권 고지와 라이센스 사본, 변경 사항에 대한 공지를 포함해야 하지만, 수정된 소스 코드를 공개할 필요는 없음.
5. 멀티 프로세싱을 설명하라.
컴퓨터 시스템이 두 개 이상의 프로세서를 사용하여 동시에 여러 작업을 처리하는 것.
6. 분산 컴퓨팅을 설명하라.
여러 컴퓨터 또는 서버의 네트워크를 통해 컴퓨팅 작업을 처리하는 것.
▷ 멀티 프로세싱 vs 분산 컴퓨팅 (정리)
1. 하드웨어 구성
멀티 프로세싱은 단일 컴퓨터 내에서 여러 프로세서를 사용하며, 분산 컴퓨팅은 여러 독립된 컴퓨터를 네트워크로 연결
2. 통신 방법
멀티 프로세싱은 공유 메모리를 사용하여 프로세서 간 통신을 수행하지만, 분산 컴퓨팅은 네트워크를 통해 메시지를 주고받음.
7. 네트워크 통신을 설명하라.
두 개 이상의 컴퓨터 또는 장치가 네트워크를 통해 데이터를 주고받는데 다양한 프로토콜과 기술이 사용됨.
▷ 프로토콜: 컴퓨터 네트워크에서 데이터 통신을 위해 정해진 규칙과 절차의 집합.
▷ ROS2에서는 RTPS(Real Time Publish Subscribe) 프로토콜을 지원 하는 통신 미들웨어 DDS를 사용.
▷ 통신 프로토콜로는 RTPS을 채용하여 실시간 데이터 전송을 보장.
04_DDS
1. 미들웨어(middleware)란 무엇인가?
이기종 시스템 간의 상호작용할 수 있도록 돕는 소프트웨어(애플리케이션 계층과 네트워크 계층 사이에 위치하여 두 계층 간의 통신을 관리)
2. 분산컴퓨팅(distributed computing)에 대하여 조사하시오.
단일 컴퓨터 및 프로세서(모놀리식 시스템)가 아닌 여러 컴퓨터 또는 서버의 네트워크를 통해 컴퓨팅 작업을 처리하는 것이다.
3. 네트워크 통신 기술에 대하여 조사하라.
4. RTPS(real-time publish subscribe) 프로토콜에 대하여 조사하시오.
분산 시스템에서 실시간 데이터 통신을 지원하기 위해 설계된 프로토콜이다.
5. DDS의 동적검색(Dynamic Discovery) 기능을 조사하시오.
DDS의 동적 검색 기능은 네트워크 상의 참여자들이 자동으로 서로를 발견하고 통신을 설정하여, 시스템의 확장성과 유연성을 높이는 역할함.
6. ROS1과 ROS2의 통신 방식의 차이를 설명하시오.
ROS1은 주로 중앙 집중식 마스터를 통한 통신 방식을 사용하는 반면, ROS2는 DDS 기반의 분산 네트워크를 통해 노드 간의 직접 통신을 지원함. (이를 통해 향상된 확장성, 신뢰성, 실시간 성능 및 네트워크 유연성 제공)
7. ROS2에서 DDS 기술을 도입한 이유를 설명하라.
● 노드 간의 동적 검색 기능을 지원하고 있어서 각 노드들의 정보를 관리하였던 ROS Master가 없어도 여러 DDS 프로그램 간에 통신이 가능.
● 노드 간의 데이터 통신을 세부적으로 조정하는 QoS(Quality of Service) 를 매개 변수 형태로 설정할 수 있어서 TCP처럼 데이터 손실을 방지함으 로써 신뢰도를 높이거나, UDP처럼 통신 속도를 최우선시하여 사용가능.
● 산업용으로 사용되는 미들웨어인 만큼 DDS-Security도입으로 보안 측면 에도 큰 혜택을 얻을 수 있음에 따라 DDS기술을 도입함.
8. 비슷한 통신 기술인 MQTT와 DDS의 차이를 설명하라.