[Physical AI W1D2] 톺아보기 — ROS 2 통신·패키지 20문제 완전 풀이

2026. 6. 20. 13:08·피지컬AI

Part 1. 객관식 (1~10)

문제 1. 카메라 읽기·모터 제어처럼 기능 단위로 나누어 실행하는 프로그램은?

  • A) 토픽(Topic) — 데이터가 흐르는 통신 채널일 뿐, 실행 단위가 아님.
  • B) 서비스(Service) — 요청/응답 통신 방식, 실행 단위가 아님.
  • C) 노드(Node) — 하나의 기능을 수행하는 기본 실행 단위. 정답.
  • D) 액션(Action) — 장시간 작업용 통신 방식, 실행 단위가 아님.

✅ 정답: C

💡 로봇 SW를 하나의 거대 프로그램이 아니라 여러 노드로 쪼개 토픽·서비스·액션으로 연결 — 관리·장애격리·재사용에 유리.

문제 2. ROS 2 Python 패키지의 공식 빌드 도구는?

  • A) Catkin — ROS 1의 빌드 시스템.
  • B) CMake — C++ 범용 빌드 시스템(colcon이 내부에서 호출하긴 하지만 "ROS 2 빌드 도구"는 아님).
  • C) Colcon — ROS 2 표준 빌드 도구. 정답.
  • D) Make — 범용 빌드 도구.

✅ 정답: C

💡 워크스페이스 루트에서 colcon build. ROS 1=Catkin / ROS 2=Colcon 이 핵심 대비.

문제 3. 센서 데이터·상태·속도 명령처럼 지속적으로 흐르는 발행/구독 통신은?

  • A) 노드(Node) — 실행 단위.
  • B) 토픽(Topic) — Publisher→Subscriber로 계속 흐르는 데이터. 정답.
  • C) 서비스(Service) — 요청/응답(필요할 때 한 번).
  • D) 액션(Action) — 오래 걸리는 목표 작업.

✅ 정답: B

💡 "계속 흘러가는 데이터인가? → 토픽". 카메라·LiDAR·/cmd_vel·로봇 상태가 대표.

문제 4. 토픽 통신 설명으로 올바르지 않은 것은? ⚠️

  • A) 데이터를 지속적으로 흘려보내는 통신 채널이다. — 맞음(O).
  • B) Publisher 노드와 Subscriber 노드는 서로 직접 연결되어 통신한다. — 틀림(✗).
  • C) 발행자와 구독자는 같은 토픽 이름과 메시지 타입을 기준으로 연결된다. — 맞음(O).
  • D) 1개의 토픽에 여러 발행자·구독자가 연결될 수 있다. — 맞음(O).

✅ 정답: B (올바르지 않은 설명)

💡 토픽의 핵심은 느슨한 연결(decoupling). 발행자는 구독자가 누구인지 몰라도 되고, 둘은 같은 토픽 이름 + 메시지 타입으로만 이어집니다. "직접 연결"이라는 표현이 함정.

문제 5. 설정 변경·계산 요청·상태 조회처럼 요청을 보내고 즉시 응답받는 동기식 통신은?

  • A) 토픽(Topic) — 단방향 스트림(응답 개념 없음).
  • B) 서비스(Service) — Request→Response 동기 통신. 정답.
  • C) 액션(Action) — 오래 걸리는 작업용.
  • D) 파라미터(Parameter) — 노드 설정값(내부적으론 서비스 기반이지만, "요청/응답 동기 통신"의 대표 답은 서비스).

✅ 정답: B

💡 "요청하면 바로 응답받나? → 서비스". 단, 작업이 오래 걸리면 서비스보다 액션이 적절.

문제 6. 오래 걸리고 Feedback·Cancel이 필요한 작업(목표 이동·로봇팔)에 적합한 통신은?

  • A) 토픽(Topic) — 단방향 스트림.
  • B) 서비스(Service) — 응답까지 블로킹, 중간 상황·취소 불리.
  • C) 액션(Action) — Goal·Feedback·Result·Cancel. 정답.
  • D) 노드(Node) — 실행 단위.

✅ 정답: C

💡 "시간이 오래 걸리고 중간 진행이 필요한가? → 액션". 서비스는 끝날 때까지 기다려야 하고 취소가 어렵습니다.

문제 7. 액션 통신의 3가지 핵심 데이터에 포함되지 않는 것은? ⚠️

  • A) Goal(목표) — 포함(O).
  • B) Request(요청) — 포함 안 됨(✗). Request/Response는 서비스의 용어.
  • C) Feedback(피드백) — 포함(O).
  • D) Result(결과) — 포함(O).

✅ 정답: B (포함되지 않는 것)

💡 액션 3요소 = Goal · Feedback · Result (+ Cancel 기능). Request는 서비스 것이라는 점이 함정. 4번처럼 "아닌 것"을 고르는 문제.

문제 8. --build-type ament_python 패키지에서 실행 노드를 등록하려면 수정할 파일은?

  • A) package.xml — 패키지 정보·의존성 기록(실행 등록 아님).
  • B) setup.py — entry_points의 console_scripts에 등록. 정답.
  • C) CMakeLists.txt — C++(ament_cmake) 용 빌드 설정.
  • D) setup.bash — 환경을 불러오는(source) 스크립트(편집 대상 아님).

✅ 정답: B

💡 Python = setup.py의 entry_points, C++ = CMakeLists.txt의 add_executable+install.

문제 9. 노드 생성·토픽·서비스 API를 제공하는 Python 클라이언트 라이브러리는?

  • A) rclpy → ❌ 함정: 정답은 맞지만 이건 C++용이 아니라… 잠깐, A는 rclcpp임. A) rclcpp — C++용.
  • B) rclpy — Python용 ROS 2 클라이언트 라이브러리. 정답.
  • C) std_msgs — 기본 메시지 타입 패키지(라이브러리 아님).
  • D) rosbase — 존재하지 않는 이름(함정).

✅ 정답: B

💡 Python=rclpy, C++=rclcpp. std_msgs는 메시지(String 등) 제공 패키지로 역할이 다릅니다.

문제 10. rclpy 노드가 종료되지 않고 타이머·콜백을 계속 실행하도록 루프를 유지하는 함수는?

  • A) rclpy.init() — ROS 2 초기화(시작 시 1회).
  • B) rclpy.shutdown() — 종료.
  • C) rclpy.spin() — 노드를 계속 살려 콜백·타이머를 처리. 정답.
  • D) rclpy.create_node() — 노드 생성(보통 Node 상속으로 대체).

✅ 정답: C

💡 흐름: init() → 노드 생성 → spin()(여기서 계속 돔) → destroy_node() → shutdown().


Part 2. 단답 · 서술 (11~20)

문제 11. '노드(Node)'의 개념을 간단히 서술하시오.

✅ 답: 노드는 ROS 2에서 하나의 기능을 수행하는 기본 실행 단위다. 센서 처리·인식·계획·제어 같은 기능을 각각 독립적으로 실행하며, 토픽·서비스·액션을 통해 다른 노드와 데이터를 주고받는다.

💡 핵심 키워드: "기능 단위", "독립 실행", "통신으로 연결".

문제 12. 연속 센서 데이터(카메라·LiDAR) 송수신에 주로 쓰는 통신 방식은?

✅ 답: 토픽(Topic)

💡 계속 흐르는 데이터 = 토픽(Pub/Sub).

문제 13. 토픽에서 데이터를 발행하는 주체와 구독하는 주체의 명칭(영어)은?

✅ 답: 발행 = Publisher, 구독 = Subscriber

💡 코드: create_publisher(...) / create_subscription(...).

문제 14. 서비스 통신의 동기식 양방향 두 단계는?

✅ 답: Request(요청) 와 Response(응답)

💡 Client가 Request → Server가 처리 → Response 반환(7번의 액션 Goal/Feedback/Result와 헷갈리지 말 것).

문제 15. 오래 걸리는 작업에서 서비스 대신 액션을 쓸 때의 대표 장점 두 가지는?

✅ 답:

  1. 작업 중간 진행 상황(Feedback) 을 받을 수 있다.
  2. 작업 도중 취소(Cancel) 가 가능하다.

    💡 (보너스) 오래 걸려도 결과를 기다리며 블로킹되지 않고 비동기로 처리된다는 점도 장점.

문제 16. 노드 내부에서 주기적으로 함수를 호출할 때 쓰는 타이머 생성 메서드는?

✅ 답: create_timer() — 예: self.create_timer(1.0, self.publish_message)

💡 첫 인자=주기(초), 둘째=콜백 함수.

문제 17. 현재 실행 중인 활성 노드 목록을 보는 CLI 명령어는?

✅ 답: ros2 node list

💡 특정 노드 상세는 ros2 node info /노드이름.

문제 18. 특정 토픽(/robot_status)의 메시지를 실시간 출력하는 CLI 명령어는?

✅ 답: ros2 topic echo /robot_status

💡 타입 확인은 ros2 topic type, 주기는 ros2 topic hz.

문제 19. 워크스페이스 루트에서 패키지를 빌드하는 Colcon 명령어는?

✅ 답: colcon build (특정 패키지만: colcon build --packages-select <패키지>)

💡 반드시 워크스페이스 루트(~/..._ws)에서 실행.

문제 20. 빌드 후 실행 환경을 현재 셸에 반영하려고 source 하는 파일의 상대 경로는?

✅ 답: install/setup.bash — source install/setup.bash

💡 ROS 2 기본(/opt/ros/humble/setup.bash)을 먼저, 그다음 내 워크스페이스의 install/setup.bash. (ROS 1은 devel/setup.bash였다는 점이 대비 포인트.)


한 장 정리 — 헷갈리면 이것만

구분 핵심
노드 기능 단위 실행 프로그램
토픽 계속 흐르는 데이터(Pub/Sub, 느슨한 연결)
서비스 요청/응답(Request·Response), 동기·즉시
액션 장시간 작업(Goal·Feedback·Result+Cancel)
Python/C++ rclpy / rclcpp
실행 등록 setup.py(entry_points) / CMakeLists.txt
루프 유지 rclpy.spin()
빌드·반영 colcon build → source install/setup.bash

단골 함정 3개: ① 토픽은 "직접 연결"이 아니라 이름·타입으로 느슨하게(4번) ② 액션 3요소에 Request 없음(7번, Request는 서비스) ③ ROS 2 빌드는 Catkin이 아니라 Colcon(2번).

📚 함께 보기 — Week1 Day2 본편

  • 3/6 ROS 2 통신 4종 개념 — 노드·토픽·서비스·액션
  • 4/6 토픽 Pub/Sub 직접 만들기
  • 5/6 서비스·액션 구현
  • 6/6 패키지 빌드 — Python·C++·colcon
저작자표시 (새창열림)

'피지컬AI' 카테고리의 다른 글

[Physical AI W2D2] 2/7 — 운동학 개념 ②: 역운동학·작업공간·자코비안·특이점  (0) 2026.06.21
[Physical AI W2D2] 1/7 — 운동학 개념 ①: 정운동학(링크·관절·자유도·2축 팔·동차변환행렬)  (0) 2026.06.21
[Physical AI W2D1] 6/6 — 좌표 변환 실습: Python 변환 + TF Publisher + RViz  (0) 2026.06.20
[Physical AI W2D1] 3/6 — RViz2 실습: GCP VM 헤드리스 GUI로 센서·TF 시각화  (0) 2026.06.20
[Physical AI W2D1] 5/6 — 좌표계와 동차 변환 행렬 ②: 3D·TF·Quaternion·기구학  (0) 2026.06.20
'피지컬AI' 카테고리의 다른 글
  • [Physical AI W2D2] 2/7 — 운동학 개념 ②: 역운동학·작업공간·자코비안·특이점
  • [Physical AI W2D2] 1/7 — 운동학 개념 ①: 정운동학(링크·관절·자유도·2축 팔·동차변환행렬)
  • [Physical AI W2D1] 6/6 — 좌표 변환 실습: Python 변환 + TF Publisher + RViz
  • [Physical AI W2D1] 3/6 — RViz2 실습: GCP VM 헤드리스 GUI로 센서·TF 시각화
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (342) N
      • 여러가지 (11) N
        • 알고리즘 & 자료구조 (73)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (39)
        • 파이썬 (31)
        • 자바 (3)
        • 스프링부트 (5)
      • 컴퓨터 구조와 운영체제 (3)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (21)
        • 도커 (2)
        • AWS (19)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (2) N
        • 정보처리기사 (0)
        • 정보보안기사 (1)
        • 네트워크관리사 (1) N
      • 재태크 (0)
        • 암호화폐 (0)
        • 기타 (0)
      • 피지컬AI (26)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    celery
    rclpy
    Spring WebFlux
    Python
    운동학
    로봇팔
    항해99
    SAA
    Spring Boot
    동차변환행렬
    완전탐색
    자바
    TF
    역운동학
    ROS2
    docker
    WebFlux
    EC2
    FastAPI
    프로그래머스
    피지컬ai
    moveit
    클라우드
    그리디
    네트워크
    AWS네트워크계층으로읽기
    AWS
    취업리부트
    java
    Redis
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
[Physical AI W1D2] 톺아보기 — ROS 2 통신·패키지 20문제 완전 풀이
상단으로

티스토리툴바