1. ROS
- 로봇은 모터, 센서, 프로세서 등 다양한 하드웨어가 함께 동작함
- 이때, 여러 하드웨어를 쉽고 효율적으로 운영할 수 있게 해주는 통신 시스템을 ROS(Robot Operating System)이라고 정의함(ROS 만든 애들 기준)
- 매우 간단한 로봇의 경우 모든 하드웨어를 한 사람이 개발할 수 있지만 복잡해지면 복잡해질수록 점차 한 사람이 모든 것을 핸들링하기 어려워짐
- 여러 사람이 하나의 작업을 하게되는 셈인데 이 경우 각자의 스타일이 다르고 어떤 규칙으로 데이터를 주고 받을 것인지 모든 것을 정하는 과정이 매우 험난함
- 따라서 이런 문제를 해결하기 위해 하나의 표준을 제시하는 미들웨어(middleware)로 ROS가 등장함
1.1 ROS 소개
- ROS(Robot Operating System)는 로봇 소프트웨어 개발을 위한 차세대 오픈소스 프레임워크
- plumbing이라는 message-passing system을 이용해 통신을 제공함
- Tools는 실행, 중단, 관측, 디버깅, 로깅, 테스팅 및 가시화 등의 기본 도구를 제공해 로봇 어플리케이션을 구축할 수 있게 함
- Capability는 로봇 개발에 필요한 다양한 라이브러리들을 제공한다는 의미
- Community는 활성화된 많은 유저들이 기여하고 있다는 의미 (개발, 문서화, code integration 등…)
- 결론적으로 로봇의 제어 데이터 처리를 효율적으로 관리하고 개발하기 위한 다양한 도구와 라이브러리 제공
[AI질문] ROS2의 주요 특징은 무엇인가요?
- 분산 노드: 작은 실행 단위(노드)를 여러 장치에 흩어 배치해 확장 가능.
- 다중 통신:
- 토픽: 실시간 단방향 스트리밍
- 서비스: 짧은 요청‑응답
- 액션: 긴 작업의 피드백 지원
- 플러그인 미들웨어: DDS 등 통신 엔진 교체로 성능·보안 최적화.
- 설정·실시간 지원: 파라미터·런치 파일로 관리 편리, RTOS 연동으로 지연 최소화.
[AI질문] ROS2의 주요 구성요소는 무엇인가요?
- 노드(Node): 실행 단위
- 토픽(Topic): 메시지 스트리밍 채널
- 서비스(Service): 동기식 요청‑응답
- 액션(Action): 비동기 작업 + 피드백
- 파라미터(Parameter): 설정 값 주입
- 런치(Launch): 노드 실행 관리
- 메시지(Message): 데이터 구조
- 패키지(Package): 코드·설정 묶음
- RMW 미들웨어: DDS 등 통신 엔진
- ROS의 버전
- ROS 1
- 초기 버전으로 2007년에 개발 시작
- 주요 버전: Kinetic, Melodic, Noetic 등.
- Noetic의 경우 ROS 1의 마지막 LTS(Long Term Support) 버전으로 2025년까지 지원
- ROS 2
- ROS 1의 한계를 보완하기 위해 개발된 차세대 프레임워크
- 주요 버전: Foxy, Galactic, Humble 등
- ROS 1
1.2 ROS2의 주요 개선 사항
[AI질문] ROS2의 주요 개선 사항은 무엇인가요?
- 분산 통신 개선: DDS 기반으로 네트워크 유연성↑
- 실시간 지원: RTOS 연동으로 지연↓
- 보안 기능 내장: 인증·암호화 옵션 제공
- 멀티 언어 지원: C++, Python 외에도 다양한 언어 사용 가능
- 파라미터·런치 강화: 동적 파라미터·모듈식 런치 파일
- 컴포넌트 라이브러리: 노드 라이브러리화로 메모리 절약
- ABI 안정화: 버전 업그레이드 시 호환성 유지