CLI 완전정복 연습문제 정답
시행일·최종 수정일: 2026년 9월 1일
정답을 보기 전에
먼저 각 문제에 자신의 말로 답해본 뒤 해설과 비교해 보세요. 표현이 달라도 핵심 개념과 계산 과정이 맞으면 정답으로 볼 수 있습니다.
1. ros2 <목적어> <동사> [대상] [옵션] 구조를 예와 함께 설명하세요.
정답과 해설
ros2 topic info /scan --verbose에서 topic은 목적어, info는 동사, /scan은 대상, --verbose는 옵션입니다. 각 단계에 --help를 붙여 설치된 Version의 Verb와 Option을 확인할 수 있습니다.
2. CLI 진단 전에 기록해야 할 ROS Environment와 Network Context를 쓰세요.
정답과 해설
ROS Distribution, Domain ID, Discovery Range·Localhost 설정, RMW, Namespace, Security Context와 실제 ros2 경로를 기록합니다. 여러 Computer라면 IP·Subnet·Route·Firewall·Clock과 Container Network도 포함합니다.
3. node list, node info, rqt_graph가 각각 보여 주는 범위를 비교하세요.
정답과 해설
node list는 발견된 Node 이름, node info는 한 Node의 Publisher·Subscription·Service·Action 연결을 보여 줍니다. rqt_graph는 여러 Node와 Topic 관계를 시각화하지만 QoS·Data 값과 준비 상태는 별도 확인해야 합니다.
4. topic echo, hz, bw, delay, info --verbose가 답하는 질문을 설명하세요.
정답과 해설
echo는 실제 Field 값, hz는 수신 주기, bw는 CLI가 받은 Data 대역폭, delay는 Stamp와 수신 시각 차이를 봅니다. info --verbose는 Endpoint 수와 QoS Profile을 비교합니다.
5. topic hz 결과가 System 전체의 절대 발행률이 아닐 수 있는 이유는 무엇인가요?
정답과 해설
현재 CLI Subscription이 받은 Sample 기준이므로 QoS 비호환·Loss·CPU 부하로 놓칠 수 있습니다. 여러 Publisher가 합쳐질 수도 있고 CLI Window와 Terminal 부하도 영향을 주므로 Endpoint·QoS·측정 조건을 함께 기록합니다.
6. Service를 호출하기 전에 이름·Type·Interface를 확인하는 명령 순서를 쓰세요.
정답과 해설
service list -t로 이름과 Type, service type으로 대상 Type, interface show로 Request·Response Field를 확인합니다. interface proto가 지원되면 YAML 뼈대를 만든 뒤 제한된 값으로 call합니다.
7. Action Goal의 수락·Feedback·Result·Cancel을 CLI에서 확인할 때 주의할 점은 무엇인가요?
정답과 해설
Action info와 Type을 먼저 확인하고 --feedback으로 진행을 봅니다. CLI Process 중단이 Goal Cancel·Robot 정지를 자동 보장한다고 가정하지 말고 Server Goal 상태, Cancel 정책과 별도 Safe Stop을 확인합니다.
8. Parameter 변경 명령이 성공해도 Robot 동작이 바뀌지 않을 수 있는 이유를 설명하세요.
정답과 해설
Node가 Parameter 요청은 수락했지만 Algorithm이 생성 시 내부 변수에 한 번만 복사하고 변경 Event를 반영하지 않을 수 있습니다. set 후 get, Log와 출력 Topic을 함께 확인하고 이전값과 Rollback을 준비합니다.
9. Lifecycle Node가 node list에 보이는 것과 Application Ready의 차이를 설명하세요.
정답과 해설
Node 존재는 Process와 Graph 참가를 뜻할 뿐입니다. Lifecycle Active, Hardware 연결, 첫 Sensor Data, Diagnostics와 품질 조건까지 만족해야 Application Ready이므로 lifecycle get과 Data·Health를 함께 확인합니다.
10. TF 문제를 Frame·Tree·QoS·Time 순서로 진단하는 명령을 쓰세요.
정답과 해설
tf2_echo로 Frame 쌍, view_frames로 Tree 연결을 봅니다. topic info /tf /tf_static --verbose로 Endpoint·QoS를 확인하고 Header Stamp, /clock과 use_sim_time을 대조합니다.
11. Bag 재생에서 실제 /cmd_vel 대신 안전 Namespace로 Remap해야 하는 이유를 설명하세요.
정답과 해설
과거 Command가 현재 위치·장애물과 무관하게 실제 Driver로 전달되면 Robot이 움직일 수 있습니다. /replay/cmd_vel 같은 격리 Topic으로 보내 Algorithm 관찰부터 하고 Mux·Watchdog·E-stop을 검증합니다.
12. Daemon 재시작으로 해결할 수 있는 문제와 해결할 수 없는 문제를 구분하세요.
정답과 해설
CLI Daemon 상태나 이전 Environment에서 유지된 Graph 조회 문제는 재시작으로 갱신될 수 있습니다. Domain·Discovery Range, Network·Firewall, RMW·Security, QoS 비호환과 Node 미발행은 바뀌지 않으므로 별도 진단합니다.
13. 다른 Computer의 Node가 보이지 않을 때 Network부터 DDS까지 확인 순서를 쓰세요.
정답과 해설
IP·Subnet·Route와 Wi-Fi Isolation, Firewall 및 Multicast를 확인합니다. 그다음 Domain ID, Discovery Range·Static Peer, RMW·DDS 설정, Security Enclave·Certificate를 비교하고 최소 Talker·Listener로 검증합니다.
14. CLI 출력을 장기 Monitoring Parser로 사용할 때 생기는 위험과 대안을 설명하세요.
정답과 해설
사람용 Text는 ROS Version, Locale과 Option에 따라 형식이 바뀌어 grep Parser가 깨질 수 있습니다. Structured Output이 있으면 사용하고 장기 운영은 Diagnostics·Metric 또는 rclpy·rclcpp의 안정된 Program API로 구현합니다.
15. 실제 Robot에 CLI로 Command를 발행하기 전·중·후 안전 절차를 작성하세요.
정답과 해설
전에는 물리 격리, Command 경로·제한값, Watchdog와 E-stop을 확인합니다. 중에는 최소 속도·시간으로 Operator가 즉시 정지 가능하게 관찰합니다. 후에는 명시적 정지, Publisher 종료, Mode·Parameter 원복과 Bag·Log 확인을 수행합니다.
학습 마무리
틀린 문제는 강의의 관련 장을 다시 읽고, 용어뿐 아니라 각 개념이 실제 로봇에서 어떤 역할을 하는지 설명해 보세요.