로보쌤

Topic 실습 연습문제 정답

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

정답을 보기 전에

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

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

1. Topic이 Service보다 Sensor Data에 적합한 이유를 설명하세요.

정답과 해설

Sensor Data는 계속 생성되는 Stream이며 응답을 기다리지 않고 여러 Consumer가 동시에 받아야 합니다. Topic은 비동기 one-to-many 통신에 적합하지만 Service는 짧은 Request마다 한 Response가 필요한 작업에 적합합니다.

2. Publisher와 Subscriber가 연결되기 위한 세 조건은 무엇인가요?

정답과 해설

같은 최종 Topic 이름, 같은 Message Type, 호환되는 QoS입니다. 하나라도 맞지 않으면 상대를 발견해도 Data Callback이 실행되지 않을 수 있습니다.

3. Publisher count가 1인데 Callback이 실행되지 않을 때 어떤 항목을 확인해야 하나요?

정답과 해설

Subscription Type, Topic의 최종 Namespace·Remap, QoS 호환성, spin() 실행 여부, Subscription 객체 보관, ROS Domain과 Callback이 다른 작업에 막혔는지 확인합니다.

4. ros2 topic hz 결과가 Publisher 내부 주기와 다를 수 있는 이유는 무엇인가요?

정답과 해설

이 명령은 자신이 만든 Subscriber에서 실제 수신한 간격을 측정합니다. Publisher Scheduling, CPU 부하, Network 유실, QoS, Queue와 CLI 자체 처리 시간이 결과에 영향을 줍니다.

5. ros2 topic info --verbose에서 확인할 수 있는 정보를 네 가지 쓰세요.

정답과 해설

Topic Type, Publisher·Subscription 수, Endpoint의 Node 이름·Namespace, GID, Reliability·Durability·History·Depth 같은 QoS Profile을 확인할 수 있습니다.

6. 상대 Topic 이름이 Multi-robot System에서 유리한 이유는 무엇인가요?

정답과 해설

같은 Node Code에 /robot_01, /robot_02 Namespace를 적용해 서로 다른 최종 Topic을 만들 수 있습니다. 절대 이름을 Code에 고정하면 Namespace가 적용되지 않아 충돌하기 쉽습니다.

7. Reliable Subscriber가 Best Effort LiDAR Publisher를 받지 못할 때 어떻게 진단하고 수정하나요?

정답과 해설

ros2 topic info /scan --verbose로 Endpoint QoS를 비교하고 Subscriber를 Sensor Data QoS 또는 Best Effort로 변경합니다. CLI는 --qos-reliability best_effort로 시험할 수 있습니다.

8. Queue Depth를 1000으로 크게 설정하는 것이 제어 Topic에 위험한 이유는 무엇인가요?

정답과 해설

처리 속도가 입력보다 느릴 때 오래된 속도 명령이 대량으로 쌓여 Robot이 과거 명령을 늦게 실행할 수 있습니다. 제어에는 누락보다 낮은 지연과 최신 값이 더 중요할 수 있습니다.

9. Subscription Callback에서 무거운 Image 처리를 하면 /cmd_vel 처리에 어떤 영향이 생기나요?

정답과 해설

Single-threaded Executor에서는 Image Callback이 Thread를 점유하는 동안 속도 Callback과 Safety Timer가 실행되지 않습니다. 명령이 지연·유실되고 정지 반응도 늦어질 수 있습니다.

10. cmd_vel_filter에서 구독 Callback과 20 Hz 출력 Timer를 분리한 이유는 무엇인가요?

정답과 해설

구독 Callback은 최신 입력과 시각만 저장해 빠르게 끝내고, Timer가 입력 주기와 무관한 일정한 주기로 Timeout·장애물·속도 제한을 검사해 출력하기 위해서입니다. 입력이 끊겨도 Timer는 정지 명령을 계속 만듭니다.

11. Deadman Timeout과 Emergency Stop의 역할 차이는 무엇인가요?

정답과 해설

Deadman은 정상 Command Stream의 단절을 감지해 Software 또는 Controller가 정지하도록 합니다. Emergency Stop은 Software·Network 고장까지 고려해 위험 에너지를 제어하는 독립적인 Safety 기능이며 위험 분석에 따라 설계합니다.

12. 여러 Node가 /cmd_vel에 직접 발행할 때 생기는 문제와 해결 구조를 설명하세요.

정답과 해설

Navigation, Joystick과 UI Message가 도착 순서대로 섞여 명령 Source가 결정적이지 않습니다. 각 Source를 별도 Topic에 발행하고 Velocity Mux가 Priority·Timeout으로 하나를 선택한 뒤 Safety Filter와 Driver로 보냅니다.

13. /odom Message에서 값 외에 Frame과 Timestamp를 확인해야 하는 이유는 무엇인가요?

정답과 해설

Pose가 어느 기준 Frame의 값인지와 어느 시점의 추정인지 알아야 다른 Sensor·TF와 결합할 수 있습니다. 오래된 Stamp나 잘못된 Frame은 수치가 정상처럼 보여도 위치 추정과 제어를 틀리게 합니다.

14. 실제 Robot이 연결된 상태에서 /cmd_vel이 든 Bag을 재생할 때 필요한 안전 조치는 무엇인가요?

정답과 해설

Motor Driver를 비활성화하거나 Robot을 물리적으로 격리하고, Command Topic을 안전한 이름으로 Remap하거나 Bag에서 제외합니다. Emergency Stop을 준비하고 낮은 속도부터 별도 승인 절차로 검증합니다.

15. Topic이 안 보이는 문제를 Application, QoS, Network 순서로 분리해 진단하는 절차를 설명하세요.

정답과 해설

먼저 같은 Computer에서 Node 실행·Log·최종 이름·Type과 spin()을 확인합니다. 다음 info --verbose로 Endpoint와 QoS를 비교합니다. 그 뒤 같은 Domain인지, Multicast·Firewall·VPN·Container와 DDS 설정이 Discovery를 막는지 Network를 조사합니다.

학습 마무리

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

← 강의로 돌아가기

Topic 실습 연습문제 정답과 해설 | 로보쌤