로보쌤

ROS 1과 ROS 2 연습문제 정답

시행일·최종 수정일: 2026년 9월 1일

정답을 보기 전에

먼저 각 문제에 자신의 말로 답해본 뒤 해설과 비교해 보세요. 표현이 달라도 핵심 개념과 계산 과정이 맞으면 정답으로 볼 수 있습니다.

← 강의와 연습문제로 돌아가기

1. ROS 2를 ROS 1의 호환 Upgrade가 아니라 별도 Platform으로 봐야 하는 이유는 무엇인가요?

정답과 해설

Node·Topic·Package 철학은 계승하지만 Discovery, Wire Protocol, Client API, Parameter, Build, Launch와 실행 Model이 다시 설계되어 ROS 1 Binary나 Source를 단순 재Compile하는 것으로 호환되지 않기 때문입니다.

2. ROS 1 Master의 역할과 실제 Topic Data 경로를 설명하세요.

정답과 해설

Master는 Node 이름, Topic과 Service 위치의 등록·조회 및 연결 협상을 돕습니다. 연결 뒤 실제 Topic Message는 일반적으로 Publisher와 Subscriber 사이에서 직접 전달되며 Master가 Data Router로 중계하지 않습니다.

3. ROS 2에서 중앙 Master가 사라져도 Network 설정 문제가 남는 이유를 설명하세요.

정답과 해설

분산 Discovery가 Multicast, Firewall, VPN, Container Network, Domain ID와 Middleware 설정에 의존하기 때문입니다. 중앙 URI 설정은 없어졌지만 Discovery Packet이 서로 도달하고 정책이 맞아야 합니다.

4. RMW 계층이 특정 Middleware Vendor 종속성을 줄이는 방법은 무엇인가요?

정답과 해설

Application과 Client Library가 공통 RMW Interface를 사용하고 그 아래에서 Fast DDS, Cyclone DDS 같은 구현을 선택하도록 분리합니다. 따라서 사용자 API를 크게 바꾸지 않고 구현을 교체할 수 있습니다.

5. ROS 1의 Queue·Latch와 ROS 2의 QoS Policy 관계를 설명하세요.

정답과 해설

ROS 1 queue_size는 ROS 2 History·Depth와, Latched Publisher는 Transient Local Durability와 유사합니다. ROS 2는 여기에 Reliability, Deadline, Lifespan과 Liveliness 등 더 많은 전달 정책을 명시합니다.

6. Reliable Subscriber와 Best Effort Publisher가 연결되지 않을 수 있는 이유는 무엇인가요?

정답과 해설

Request vs Offered Model에서 Subscriber가 요구한 최소 Reliability를 Publisher가 제공하지 못하기 때문입니다. 반대로 Best Effort Subscriber는 Reliable Publisher가 제공하는 Data를 받을 수 있습니다.

7. rospy의 전역 Node 방식과 rclpy의 Node 객체 방식 차이를 설명하세요.

정답과 해설

rospy.init_node()는 Process 전역 Node 상태를 만들지만, rclpy에서는 Node가 명시적 객체이고 Publisher·Timer 등이 그 객체에 속합니다. 여러 Node 객체와 Executor 구성이 가능해집니다.

8. MultiThreadedExecutor를 사용해도 Deadlock이 생길 수 있는 이유는 무엇인가요?

정답과 해설

Callback Group이 상호 배타적이거나 Callback 안에서 같은 Group의 Response를 동기적으로 기다리면 필요한 Callback이 실행되지 못할 수 있습니다. Lock 순서와 공유 자원도 별도로 설계해야 합니다.

9. ROS 1 전역 Parameter를 ROS 2로 옮길 때 반드시 결정해야 할 것은 무엇인가요?

정답과 해설

어느 Node가 Parameter를 선언하고 소유할지, Type·범위를 어떻게 검증할지, 여러 Node가 공유해야 하는 값은 어떤 명시적 Interface나 설정 배포 방식으로 전달할지 결정해야 합니다.

10. catkin, ament와 colcon의 역할 차이를 설명하세요.

정답과 해설

catkin은 ROS 1의 CMake 기반 Build System입니다. ament_cmake·ament_python은 ROS 2 Package의 Build·Install Convention이고, colcon은 다양한 Build Type의 여러 Package를 의존 순서로 실행하는 Meta Build Tool입니다.

11. ROS 1 Nodelet과 ROS 2 Composition의 공통 목적과 차이를 설명하세요.

정답과 해설

둘 다 같은 Process에서 Component를 실행해 직렬화와 복사 비용을 줄이는 목적이 있습니다. ROS 1은 일반 Node와 Nodelet API가 달랐고, ROS 2는 Component Code의 Process 배치를 배포 시점에 더 일관되게 선택하도록 설계했습니다.

12. Lifecycle Node가 ‘Process가 실행됨’과 ‘운전 준비 완료’를 어떻게 구분하나요?

정답과 해설

Process가 살아 있어도 Node는 unconfigured 또는 inactive일 수 있습니다. Parameter 검증과 Hardware 연결을 마치고 명시적으로 active Transition에 성공해야 실제 발행과 구동을 시작하도록 구분합니다.

13. ROS 2가 Security와 Real-time을 자동 보장하지 않는 이유는 무엇인가요?

정답과 해설

Security는 Keystore, 인증서와 권한 정책을 구성·활성화해야 합니다. Real-time은 RT OS, Executor, Memory, Lock, Network, User Code와 Hardware 전체가 Deadline을 만족하도록 설계하고 측정해야 합니다.

14. ros1_bridge에서 Custom Interface와 Ubuntu Version이 문제가 되는 이유를 설명하세요.

정답과 해설

Custom Type은 양쪽 정의와 Mapping이 Build 시 보여야 하므로 Bridge 재Build가 필요합니다. 또한 같은 환경에 ROS 1과 ROS 2를 설치·Build해야 하는데 ROS 1 EOL과 Ubuntu 24.04의 ROS 1 미지원으로 가능한 조합이 제한됩니다.

15. Migration에서 기존 동작의 동등성 확보와 ROS 2 신기능 도입을 분리해야 하는 이유는 무엇인가요?

정답과 해설

Porting 차이와 QoS·Lifecycle·Composition 같은 동작 변경을 동시에 적용하면 문제가 발생했을 때 원인을 구분하기 어렵습니다. 먼저 같은 입력에 허용 범위 내 같은 결과를 확인한 뒤 기능을 별도 변경으로 도입해야 Rollback과 검증이 쉽습니다.

학습 마무리

틀린 문제는 강의의 관련 장을 다시 읽고, 용어뿐 아니라 각 개념이 실제 로봇에서 어떤 역할을 하는지 설명해 보세요.

← 강의로 돌아가기

ROS 1과 ROS 2 연습문제 정답과 해설 | 로보쌤