개발환경 구축 연습문제 정답
시행일·최종 수정일: 2026년 9월 1일
정답을 보기 전에
먼저 각 문제에 자신의 말로 답해본 뒤 해설과 비교해 보세요. 표현이 달라도 핵심 개념과 계산 과정이 맞으면 정답으로 볼 수 있습니다.
1. Native Ubuntu, Docker, WSL2와 Virtual Machine을 실제 Robot 개발 관점에서 비교하세요.
정답과 해설
Native Ubuntu는 USB·GPU·Network와 Timing 접근이 가장 직접적입니다. Docker는 User Space 재현성이 좋지만 Host Kernel·Driver·Device 설정이 필요합니다. WSL2는 학습에 편하지만 USB·Network에 추가 계층이 있고 VM은 격리가 좋지만 3D·I/O 성능 부담이 큽니다.
2. ROS 2 Distribution과 Ubuntu Version을 선택할 때 확인해야 할 기준을 설명하세요.
정답과 해설
공식 지원 조합과 EOL, 제품 유지 기간, Security Update, CPU Architecture, 필요한 Sensor Driver·Nav2·MoveIt·GPU Package 지원과 팀 Test 결과를 확인합니다. 선택 근거와 확인 날짜를 환경 문서에 고정합니다.
3. 설치 전에 작성할 환경 명세 항목과 각각의 목적을 쓰세요.
정답과 해설
OS Version·Architecture는 Binary 선택, ROS Distribution·Variant는 API와 Package 기준, RMW·Domain·Discovery는 통신 재현, GPU·Driver는 Simulation·Perception 호환, Workspace Commit과 Device ID는 Code·Hardware 복원을 위해 기록합니다.
4. Desktop과 ROS Base 설치 Variant의 차이와 선택 기준을 설명하세요.
정답과 해설
Desktop은 RViz와 Demo 등 GUI 개발 도구를 포함해 개발 PC에 적합합니다. ROS Base는 GUI 없는 Robot Computer, CI와 최소 Container에 적합하며 Simulation·Nav2·MoveIt·Driver는 필요에 따라 별도 설치합니다.
5. Apt Source 등록에서 오래된 Blog 명령보다 공식 설치 문서를 사용해야 하는 이유는 무엇인가요?
정답과 해설
Repository Key, Source Package와 보안 권장 방식은 바뀔 수 있고 ROS Distribution·Ubuntu Codename 조합도 정해져 있습니다. 오래된 apt-key나 잘못된 Repository를 사용하면 Signature 오류와 Supply-chain 위험이 생길 수 있습니다.
6. Underlay와 Overlay의 Source 순서가 Package 선택에 미치는 영향을 설명하세요.
정답과 해설
먼저 ROS Underlay, 뒤에 Project Overlay를 Source하면 Overlay의 같은 Package가 앞 Prefix보다 우선합니다. 여러 Workspace를 겹치면 예상하지 않은 Version이 선택될 수 있으므로 깨끗한 Shell에서 필요한 순서만 적용하고 ros2 pkg prefix로 확인합니다.
7. 최소 Package 생성·rosdep·colcon·ros2 run이 각각 검증하는 계층은 무엇인가요?
정답과 해설
Package 생성은 Template·CLI, rosdep은 Metadata와 OS Dependency Database, colcon은 Compiler·Python Packaging과 Build System, setup Source는 Package Index, ros2 run은 Entry Point와 Runtime 환경을 검증합니다.
8. Docker가 재현하는 범위와 자동으로 해결하지 못하는 Host 의존성을 설명하세요.
정답과 해설
Container는 OS User Space, ROS Package와 Dependency를 Image로 고정합니다. Host Kernel, CPU Architecture, GPU Driver, USB Permission, Display Server, Network·Clock과 Real-time 특성은 Host에 의존하므로 별도 검증이 필요합니다.
9. ROS 2 Container에서 --privileged를 기본 해결책으로 사용하면 안 되는 이유는 무엇인가요?
정답과 해설
Container에 광범위한 Device와 Kernel Capability를 노출해 격리와 최소 권한 원칙을 약화시킵니다. 필요한 Device, Group, Capability와 Network만 명시적으로 전달하고 요구 사항을 문서화해야 합니다.
10. IDE의 Import Error와 실제 Runtime 환경이 다를 때 진단하는 방법을 설명하세요.
정답과 해설
IDE와 Terminal의 Python Interpreter, sys.path, ROS·Overlay Source 상태와 Package Prefix를 비교합니다. ROS 환경이 적용된 Shell에서 IDE를 실행하고 전역 PYTHONPATH를 임의 추가하기보다 실제 Build·Runtime과 같은 Interpreter를 선택합니다.
11. USB Serial Device에 안정된 udev Symbolic Link를 만드는 기준을 쓰세요.
정답과 해설
실제 udevadm 속성에서 Subsystem, Vendor ID, Product ID와 가능하면 고유 Serial을 사용합니다. 최소 Group·Mode를 적용하고 고정 Symlink를 만들며 Rule 문법과 기존 Rule 충돌을 Test합니다.
12. ROS_DOMAIN_ID와 Discovery Range의 역할 차이를 설명하세요.
정답과 해설
Domain ID는 같은 DDS Domain 참가자를 논리적으로 구분합니다. Discovery Range는 Localhost, Subnet 또는 명시적 Peer처럼 어디까지 자동 발견할지를 제한합니다. 안전한 격리에는 두 정책과 Robot Namespace·Command Safety를 함께 설계합니다.
13. 다른 Computer의 Node가 보이지 않을 때 Network부터 DDS까지 진단 순서를 쓰세요.
정답과 해설
IP·Route·Subnet과 Wi-Fi Isolation·Firewall을 확인하고 Multicast 시험을 합니다. 그다음 Domain ID, Discovery Range·Static Peer, RMW와 DDS 설정을 비교하고 CLI Daemon을 갱신한 뒤 최소 Talker·Listener로 검증합니다.
14. Clock 동기화가 TF, Sensor Fusion과 Log 분석에 필요한 이유는 무엇인가요?
정답과 해설
Computer Clock이 다르면 TF가 미래·과거 Data로 판단되고 서로 다른 Sensor 측정이 잘못 결합됩니다. Log 사건 순서도 뒤집힐 수 있으므로 NTP·chrony 또는 요구 정확도에 따라 PTP·Hardware Timestamp를 사용합니다.
15. 설치 검증 Report에 포함할 정보와 외부 공유 전에 제거할 정보를 설명하세요.
정답과 해설
OS·Architecture, ROS Distribution, RMW·Domain·Discovery, 명령 경로, ros2 doctor, Network·Disk와 정확한 Error를 포함합니다. Token, Password, 내부 주소, 사용자 이름, Device Serial과 조직 기밀은 공유 범위에 맞게 가립니다.
학습 마무리
틀린 문제는 강의의 관련 장을 다시 읽고, 용어뿐 아니라 각 개념이 실제 로봇에서 어떤 역할을 하는지 설명해 보세요.