GitHub

https://github.com/steeze1213

로보테크AI

융합_로보테크 AI 자율주행 로봇 개발자 과정-26/07/03

steezer 2026. 7. 3. 18:30

면접 대비 기술 정리

포트폴리오 기준 면접 대비용 정리 문서
각 항목: ① 정의 → ② 특징/종류(하위 개념 포함) → ③ 프로젝트 연결 → ④ 꼬리질문 대비
⚠️ 표시 = 실제로 깊게 다루지 않은 것

작성 범위

  1. ROS2 핵심
  2. 자율주행 · SLAM · 경로 · 측위
  3. 컴퓨터비전 · 딥러닝
  4. 임베디드 · 하드웨어 · 통신
  5. 언어 · CS 개념
  6. ML · 데이터 · NLP
  7. 웹 · DB · GUI · 수집 · 환경

1. ROS2 핵심

개념 뼈대

ROS2 (Humble Hawksbill)

  • 정의: 로봇 SW 제작용 프레임워크(미들웨어). OS라는 이름과 달리 실제 OS 아님. 우분투 등 OS 위에서 도는 도구 모음.
  • 특징: 기능별로 잘게 쪼갠 '노드'들이 메시지로 협력하는 구조. Humble은 우분투 22.04용 LTS(장기지원) 버전명.
  • 프로젝트: 공기청정 로봇 · YOLOv8 비상정지 · PACK 모두 Humble.
  • 꼬리질문: "왜 ROS를 쓰나요?" → 통신·센서·구동 코드 재작성 불필요, 표준 노드·토픽 구조와 검증된 패키지(Nav2 등) 재사용 가능.

rclpy

  • 정의: ROS2의 파이썬용 API 라이브러리.
  • 특징: 노드 생성·토픽 발행/구독을 전부 파이썬으로. C++용은 rclcpp. 둘 다 내부적으로 rcl(C 라이브러리) 공유(그래서 rcl+py, rcl+cpp).
  • 프로젝트: ROS2 노드 전부 rclpy 작성. rclpy.init()Node 상속 → create_publisher/create_subscriptionrclpy.spin() 패턴.

노드 (Node)

  • 정의: ROS2의 독립 실행 단위(프로그램 하나).
  • 특징: 기능별 분리로 하나가 죽어도 전체 정지 방지. 노드 간 직접 함수 호출 아닌 메시지 소통.
  • 비유: 회사의 부서 하나. 각자 일하고 서류(메시지)로 소통.
  • 프로젝트: 공기청정 로봇 노드 14개 분리(경로탐색·FSM·MQTT 브리지·센서 수신 등).
  • 꼬리질문: "왜 14개나?" → 기능 분리로 디버깅·재사용 용이, 한 노드 오류의 전체 전파 방지.

Topic / Service / Action (노드 간 통신 3방식)

가장 자주 나오는 질문. 셋의 명확한 구분이 핵심.

  • Topic: 단방향 지속 발행, 응답 안 기다림(예: 센서값·위치·속도 명령).
    • 발행자(Publisher)·구독자(Subscriber) 구성. 1:N, N:N 가능.
    • 비유: 라디오 방송(송출, 듣든 말든).
  • Service: 요청 → 응답 1회, 짧게 종료(예: "지금 위치 알려줘").
    • 클라이언트(요청)·서버(응답) 구성. 1:1.
    • 비유: 전화 문의(묻고 바로 답).
  • Action: 장시간 작업 + 중간 피드백 + 취소 가능(예: "저기까지 이동해").
    • Goal(목표)/Feedback(진행률)/Result(최종결과) 3부분.
    • 비유: 택배 배송(주문 → 추적 → 도착).
  • 프로젝트: PM 값·로봇 위치는 Topic 지속 발행, Nav2 목표 이동은 Action 처리.

DDS (Data Distribution Service)

  • 정의: ROS2가 노드 간 데이터를 실제로 주고받는 통신 표준(배관).
  • 특징: ROS1/ROS2 최대 차이. ROS1은 중앙 마스터(roscore) 필수 → 마스터 사망 시 전체 마비. ROS2는 DDS 기반 마스터 없는 노드 직접 통신(분산 구조).
  • 하위 개념:
    • RMW (ROS Middleware): ROS2와 DDS 사이 중간 계층. 코드 변경 없이 DDS 구현체 교체용 어댑터.
    • DDS 구현체 종류: Fast DDS(Humble 기본값), Cyclone DDS(가볍고 안정적), Connext(상용). 환경변수 RMW_IMPLEMENTATION으로 변경.
    • 자동 탐색(Discovery): 같은 네트워크 노드끼리 자동 발견 → IP 일일이 지정 불필요.
  • 프로젝트: DDS 직접 조작 경험 없음. "ROS2 사용 = DDS 기반" 개념만 인지, ROS1/ROS2 차이 설명용.
  • 꼬리질문: "DDS 구현체 바꿔봤나요?" → 기본값(Fast DDS)만 사용, 개념만 설명.

QoS (Quality of Service)

  • 정의: 토픽 통신의 '품질 정책'. 메시지 도착 보장 수준·저장 방식 설정.
  • 종류(하위 개념):
    • Reliability: RELIABLE(도착 보장, 유실 시 재전송) vs BEST_EFFORT(빠르지만 유실 허용 — 카메라·라이다 등 최신값 우선 데이터에 적합).
    • Durability: VOLATILE(현재 이후 메시지만) vs TRANSIENT_LOCAL(늦게 접속한 구독자에게도 마지막 메시지 전달 — 맵 데이터에 적합).
    • History: KEEP_LAST(최근 N개) vs KEEP_ALL(전부).
    • Depth: KEEP_LAST 시 보관 개수(큐 크기).
  • 비유: 택배의 "안심배송(도착 보장) vs 일반배송(빠름)" 선택.
  • ⚠️ 프로젝트: QoS 깊은 튜닝 경험 없음. 개념만 인지, "센서 데이터는 BEST_EFFORT가 적합" 정도만 답변.

표준 메시지 타입 (std_msgs / geometry_msgs)

  • 정의: ROS2 사전 정의 메시지 형식. 노드 간 동일 형식 사용 필수.
  • 종류:
    • std_msgs: 기본형(Bool·String·Int32·Float64 등). 예) 비상정지 신호 = Bool.
    • geometry_msgs/Twist: 로봇 속도 명령 전용. linear.x(전진), angular.z(회전).
    • (참고) sensor_msgs/Image: 카메라 이미지, nav_msgs/OccupancyGrid: 맵 데이터.
  • 프로젝트: 비상정지 신호 = std_msgs/Bool, 로봇 주행 = Twist/cmd_vel로 발행.

빌드 · 실행 도구

colcon

  • 정의: ROS2 패키지 빌드 도구(코드를 실행 가능 상태로 변환).
  • 핵심 명령: colcon build --packages-select <패키지명> --symlink-install
  • 하위 개념:
    • --packages-select: 특정 패키지만 빌드(전체 빌드는 느림).
    • --symlink-install: 파이썬 파일 수정 즉시 반영(재빌드 불필요).
  • 프로젝트: 매번 colcon buildsource install/setup.bash.
  • 꼬리질문: "빌드 후 왜 source?" → 빌드 결과 경로를 현재 셸에 등록해야 ros2 run이 패키지 인식.

launch 파일

  • 정의: 여러 노드 일괄 실행용 실행 대본(파이썬, .launch.py).
  • 특징: 노드 다수를 명령 하나로 기동. 파라미터·리매핑도 지정.
  • 프로젝트: 공기청정 로봇 14노드+6브리지 단일 launch 통합 기동. 강점 어필 소재.

TimerAction

  • 정의: launch에서 "몇 초 뒤 실행"으로 노드 지연 기동시키는 기능.
  • 필요 이유: 노드별 준비 시간 차이로 순서 어긋나면 뒤 노드가 앞 노드 못 찾고 사망.
  • 프로젝트: YOLOv8 비상정지에서 Gazebo → 웹캠 → YOLO → 주행 순차 기동 보장("초기화 순서 보장").

토픽 리매핑 (remapping)

  • 정의: 노드 코드 수정 없이 실행 시점에 토픽 이름 교체.
  • 비유: 코드 유지, 배관 연결만 변경.
  • 프로젝트: 비상정지에서 기존 주행 노드 무수정, /cmd_vel/cmd_vel_raw → (필터 노드) → /cmd_vel 리매핑으로 중간에 정지 필터 삽입. "기존 코드 무수정 기능 추가" = 실무 감각 어필 최고 소재.

ROS2 CLI

  • 정의: 터미널에서 ROS2를 다루는 명령어들.
  • 자주 쓰는 것:
    • ros2 run <패키지> <노드>: 노드 1개 실행.
    • ros2 launch <패키지> <런치>: 런치 실행.
    • ros2 topic list(목록), echo <토픽>(값 확인), hz <토픽>(발행 주파수).
    • ros2 node list: 노드 목록.
  • 프로젝트: 디버깅 시 echo로 값 확인, hz로 발행 주파수 확인.

RQt

  • 정의: ROS2 상태 시각화 GUI 도구 모음.
  • 특징: rqt_graph로 노드·토픽 연결 관계 시각화. 통신 오류 진단용.
  • 프로젝트: 노드 다수 시 연결 구조 확인용.

turtlesim

  • 정의: ROS2 학습용 거북이 시뮬레이터(연습용 장난감).
  • 특징: 실물 없이 토픽 발행 연습. ROS2 입문 필수 코스.
  • 프로젝트: 웹-ROS 연동 실습에서 roslibjs로 브라우저에서 /turtle1/cmd_vel 발행, 거북이 조종.

연동 라이브러리

cv_bridge

  • 정의: OpenCV 이미지 ↔ ROS2 이미지 메시지 변환 다리.
  • 필요 이유: OpenCV 형식(numpy 배열)과 ROS2 형식(sensor_msgs/Image) 상이.
  • 프로젝트: 웹캠 영상 → ROS2 토픽 발행, YOLO 입력 전 변환(비상정지).

camera_ros

  • 정의: 카메라 영상 → ROS2 토픽 발행 노드 패키지.
  • 프로젝트: PACK 로봇팔에서 Pi Camera 영상 ROS2 수신.

rosbridge_server

  • 정의: ROS2 ↔ 웹 브라우저(JavaScript)를 WebSocket으로 연결하는 서버.
  • 필요 이유: 브라우저는 ROS2 직접 불가 → rosbridge가 통역사(기본 9090 포트).
  • 프로젝트: 웹 대시보드(roslibjs/ros2djs)에서 로봇 제어·맵 시각화. "PyQt 의존 없는 브라우저 제어"의 핵심.

비교용

ROS1 vs ROS2

  • 정의: ROS1은 ROS2의 이전 세대.
  • 차이 요약:
    • ROS1: 중앙 마스터(roscore) 필수 → 마스터 사망 시 전체 마비.
    • ROS2: DDS 기반 분산 → 마스터 불필요, 안정적. 실시간성·보안 강화, 멀티 로봇 유리.
  • 프로젝트: 초기 TurtleBot3 관제 GUI 실습에서 ROS(1) 접함. "ROS1 개념 인지, 실무는 ROS2 중심"으로 답변.

2. 자율주행 · SLAM · 경로 · 측위

내비게이션 프레임워크

Nav2 (Navigation2)

  • 정의: ROS2 표준 자율주행 패키지 모음. "출발지→목적지 자율 주행" 담당.
  • 하위 구성(Nav2 내부 요소):
    • Planner(경로계획기): 목적지까지 전체 경로 생성(기본 A* 계열).
    • Controller(추종기): 경로 추종용 바퀴 속도 명령 생성(DWB 등).
    • Costmap(비용지도): 맵에 장애물 위험도를 점수화. 벽 근처 비용↑.
    • BT Navigator(행동트리): 전체 주행 흐름 트리 관리(막힘 시 복구 등).
    • Recovery(복구행동): 막힘 시 제자리 회전·후진 등 탈출 시도.
  • 프로젝트: 공기청정 로봇에서 웹 명령 기반 이동은 Nav2 Action 처리. 단, 자동 출동 주행은 A*+Pure Pursuit 직접 구현으로 Nav2 의존 최소화(차별점).
  • 꼬리질문: "Nav2 두고 왜 A* 직접?" → 경로계획 로직 직접 이해·제어 목적, FSM과 긴밀 연동 필요.

AMCL (Adaptive Monte Carlo Localization)

  • 정의: 기존 맵 위에서 "로봇의 현재 위치" 추정 알고리즘.
  • 원리(하위 개념):
    • 파티클 필터(MCL): 위치 후보(파티클) 수백 개를 맵에 뿌리고, 라이다값과 맵이 맞는 파티클에 높은 점수 → 실제 위치로 수렴.
    • Adaptive: 확신 높으면 파티클 축소, 헷갈리면 증가 → 효율↑.
  • 비유: 낯선 건물에서 창밖 풍경(라이다)과 지도(맵) 대조로 위치 좁혀가기.
  • 프로젝트: 공기청정 로봇 SLAM 맵 위 위치추정. 초기 위치는 auto_initial_pose 노드로 자동 발행.

Cartographer (SLAM)

  • 정의: 구글 SLAM 라이브러리. 로봇 주행하며 맵 최초 생성 도구.
  • SLAM이란: Simultaneous Localization And Mapping. "지도 생성 + 동시에 위치 파악". 지도·GPS 없는 실내 필수.
  • AMCL과 차이(중요): Cartographer/SLAM = 맵 생성 단계, AMCL = 기존 맵 위 위치 파악 단계. 순서: SLAM 맵 생성 → 저장 → 이후 AMCL 주행.
  • 프로젝트: 최초 1회 Cartographer로 맵 생성, map_saver_cli로 저장, 이후 AMCL 주행.

map_saver_cli

  • 정의: SLAM 생성 맵을 이미지(.pgm)+설정(.yaml)으로 저장하는 명령.
  • 프로젝트: ros2 run nav2_map_server map_saver_cli -f ~/map으로 맵 저장.

Navigation Stack / MoveBase

  • 정의: ROS1 시절 자율주행 패키지(Nav2의 전신). MoveBase가 핵심 노드.
  • ⚠️ 프로젝트: 커리큘럼 개념 학습만, 실제는 Nav2(ROS2). "MoveBase = Nav2의 ROS1 버전" 수준만 인지.

경로계획 · 추종

A* 알고리즘

  • 정의: 출발점→목적지 최단 경로 탐색 대표 알고리즘.
  • 원리(하위 개념 — 면접 단골):
    • 지점별 비용 = g + h. g=출발점부터 실제 비용, h=목적지까지 예상 비용(휴리스틱).
    • f = g + h 최소 지점 우선 탐색(우선순위 큐).
    • 휴리스틱(h) 종류: 맨해튼 거리(격자 4방향), 유클리드 거리(직선), 대각선 거리(8방향).
    • 다익스트라 + "목적지 방향 힌트(h)" = A*. 그래서 더 빠름.
  • 비유: 미로에서 전체 탐색(다익스트라)이 아닌 "출구가 저쪽" 감을 더한 탐색(A*).
  • 프로젝트: 공기청정 로봇에서 SLAM 맵 기반 최단 경로 A* 직접 계산. 장애물 팽창(inflation)으로 벽 밀착 방지.
  • 꼬리질문: "시간복잡도?" → 휴리스틱에 따라 상이, 최악은 다익스트라 유사. "휴리스틱 뭐 썼나요?" 답변 준비(격자 기반이면 맨해튼/유클리드).

Pure Pursuit

  • 정의: 정해진 경로를 부드럽게 추종하는 제어 기법.
  • 원리(하위 개념):
    • 경로 위 로봇 앞쪽 일정 거리의 점(lookahead point)을 목표로 곡선 추종.
    • lookahead distance(전방 주시 거리): 짧으면 밀착하되 흔들림↑, 길면 부드럽되 코너 안쪽 잘림. 튜닝이 핵심.
  • 비유: 운전 시 바로 앞 범퍼 아닌 저 앞을 보고 핸들 부드럽게 조작.
  • A*와 역할 분담(중요): A* = "경로 생성", Pure Pursuit = "그 경로 추종용 핸들·속도 생성". 상호보완.
  • 프로젝트: A* 생성 경로를 Pure Pursuit 추종. lookahead distance(0.30m)·최대 회전속도 튜닝에 시간 소요(아쉬운 점).

Safety Cost Map (안전 비용지도)

  • 정의: 장애물 근접도에 따라 '비용'을 높게 매긴 지도. 경로계획 시 위험 구역 회피용.
  • 프로젝트: A*가 이 비용 반영 → 장애물 근접 시 비용↑ → 안전 경로 생성.

장애물 팽창 (inflation)

  • 정의: 맵의 장애물을 로봇 반경만큼 부풀려 표시.
  • 이유: 로봇을 점으로 계산하되 장애물을 키우면, 벽 충돌 없는 경로 자동 생성.
  • 프로젝트: inflation_radius 파라미터 조정. 좁은 통로에서 이 값·로봇 크기 균형 조정 난항(아쉬운 점).

웨이포인트 주행

  • 정의: 여러 목표점(waypoint)을 순서대로 경유하는 주행.
  • 프로젝트: 순찰 모드 node1 → node2 → node3 → home 순환. PACK 추종 차량 웨이포인트 복구 탐색.

측위 · 마커

ArUco 마커

  • 정의: 흑백 사각형 패턴 인식용 마커(QR코드 단순 버전). 카메라로 위치·방향·ID 판독.
  • 하위 개념:
    • 딕셔너리: 마커 규격. 예) DICT_4X4_50 = 4x4 격자, 50개 ID. 격자 클수록 ID 많고 인식 까다로움.
    • 각 마커는 고유 ID 보유. 검출 시 ID + 4모서리 좌표 반환.
  • 프로젝트(두 곳):
    • 공기청정 로봇: 홈 복귀 시 DICT_4X4_50, ID 0 마커로 정밀 도킹.
    • PACK: 벽면 50여 개 마커 맵으로 추종 차량 위치추정, 앞차 후면 마커(ID 98/97) 추적.

solvePnP (멀티마커 측위)

  • 정의: 카메라에 보이는 점들의 2D 위치로 카메라(로봇)의 3D 공간 위치 역산하는 OpenCV 함수.
  • PnP란: Perspective-n-Point. "n개 점으로 관점(카메라 위치) 풀기".
  • 결과물: 회전 벡터(rvec)+이동 벡터(tvec) = 카메라 자세·위치.
  • 프로젝트: PACK 추종 차량에서 다수 ArUco를 solvePnP로 풀어 절대 위치 획득. 재투영오차 기반 이상치 제거로 튀는 값 필터링.

엔코더 오도메트리

  • 정의: 바퀴 회전수(엔코더 틱)로 로봇 이동/회전량 추정.
  • 한계: 바퀴 미끄러짐 누적 시 오차 지속 증가(마커·라이다 보정 필요).
  • 프로젝트: PACK에서 마커 미검출 시 엔코더 추측항법(dead reckoning). 마커 재검출 시 위치 보정.

차동구동 적분 (differential drive)

  • 정의: 좌/우 바퀴 속도차로 로봇 이동·회전 계산(2바퀴 로봇 기본 운동학).
  • 원리: 양 바퀴 동속=직진, 속도차=회전. 시간 적분 시 위치 산출.
  • 프로젝트: PACK 4WD 차량에서 바퀴 둘레 0.21m, 트랙 0.23m, 3600 cnt/rev 기준 위치 적분.

센서 퓨전 (마커 + 엔코더)

  • 정의: 2개 이상 센서 정보 결합으로 정확도 향상.
  • 이유: 마커는 정확하나 간헐적 미검출, 엔코더는 상시 가능하나 오차 누적. 결합 시 상호 보완.
  • 프로젝트: PACK에서 마커 검출 시 마커 우선, 미검출 시 엔코더 보완. 마커 개수별 신뢰도 가중.

EMA 필터링 (지수이동평균)

  • 정의: 값 튐을 부드럽게 다듬는 필터. 새 값과 이전 평균의 가중 평균.
  • 공식: 평균 = α × 새값 + (1-α) × 이전평균. α 크면 민감, 작으면 부드러움.
  • 비유: 온도계 순간 튐도 "대충 이 정도"로 완만 반영.
  • 프로젝트: 공기청정 로봇 ArUco 도킹에서 프레임별 마커 위치 튐을 EMA로 안정화, 도킹 정밀도 확보.

FSM (유한상태기계, Finite State Machine)

  • 정의: 시스템을 몇 개 '상태'로 나누고, 조건 충족 시 다음 상태로 전이하는 설계.
  • 구성 요소: 상태(State)·전이(Transition)·이벤트/조건.
  • if문과 차이: if문 수십 개는 흐름 꼬임·디버깅 난항. FSM은 "현재 상태" 명확 → 흐름 파악·확장 용이.
  • 프로젝트: 공기청정 로봇 자동 출동 로직을 FSM 설계 — IDLE → GO_TO_ZONE → CLEANING → RETURN. PACK 추종 제어도 FSM.
  • 꼬리질문: "상태 꼬임 처리?" → 타임아웃/안전정지 상태로 예외 시 안전 정지(실제 구현).

재투영오차 기반 이상치 제거

  • 정의: 추정 3D 위치를 다시 2D 이미지로 되돌렸을 때 원 관측점과의 오차(재투영오차)로 잘못된 마커 필터링.
  • 프로젝트: PACK에서 다수 마커 동시 처리 시 오차 큰 마커 제거로 위치 튐 방지.

3. 컴퓨터비전 · 딥러닝

딥러닝 프레임워크 · 백본

PyTorch

  • 정의: 딥러닝 모델 제작·학습용 대표 프레임워크(메타 제작).
  • 특징: 파이썬 친화적·직관적. 연구·실무 표준급. 텐서(다차원 배열) 연산 + 자동미분이 핵심.
  • 프로젝트: 졸업논문 이미지 모델(EfficientNet-B2) 학습.

timm (PyTorch Image Models)

  • 정의: 유명 이미지 모델 수백 개 사전 구현 라이브러리. 한 줄 호출 사용.
  • 프로젝트: EfficientNet-B2 백본을 timm으로 호출.

EfficientNet-B2

  • 정의: 적은 연산으로 높은 정확도 목표의 이미지 분류 모델(구글).
  • 하위 개념:
    • Compound Scaling: 깊이·너비·해상도를 균형 있게 동시 확장(EfficientNet 핵심 아이디어).
    • B0~B7: 크기 등급. 숫자 클수록 정확하나 무거움. B2는 중간급.
    • 백본(backbone): 이미지 특징 추출 몸통. 뒤에 분류기 부착해 용도별 사용.
  • 프로젝트: 졸업논문 가짜뉴스 이미지 판별 백본. 입력 300x300, Fine-tuning.
  • 꼬리질문: "왜 B2?" → Colab T4 GPU(16GB) 환경에서 정확도·학습속도 균형. 더 큰 모델은 메모리·시간 부담.

객체 탐지 (YOLO 계열)

YOLO 기본 개념 (v3, v8 공통)

  • 정의: You Only Look Once. 이미지 1회 관찰로 객체 위치(박스)+종류 동시 탐지하는 실시간 모델.
  • 하위 개념(면접 핵심):
    • One-stage vs Two-stage: YOLO는 원스테이지(위치+분류 동시) → 빠름. Faster R-CNN 등은 투스테이지(후보 추출 → 분류) → 느리나 정밀.
    • Bounding Box: 객체 감싸는 사각형. (x1,y1,x2,y2) 또는 (중심+너비높이).
    • Confidence(신뢰도): 박스 내 객체 존재 확률. 임계값(0.5) 미만 제거.
    • NMS (Non-Maximum Suppression): 한 객체에 박스 다수 겹칠 때 최고 신뢰도만 남기고 제거.
    • IoU (Intersection over Union): 두 박스 겹침 정도(교집합/합집합). NMS 중복 판정 기준(0.4 등).
  • 프로젝트: 여러 프로젝트 사용(버전별 하기).

YOLOv3

  • 특징: OpenCV cv2.dnn 모듈로 직접 로드. 가중치(.weights)+설정(.cfg)+클래스명(.names) 필요.
  • 핵심 코드: cv2.dnn.readNetblobFromImage(전처리) → forward(추론) → NMSBoxes(중복 제거).
  • 프로젝트: COCO 80클래스 사전학습 모델로 이미지·웹캠 객체 검출 실습.

YOLOv8 (n/s/m)

  • 특징: ultralytics 라이브러리로 간편. YOLO("yolov8n.pt") 한 줄. 뒤 글자는 크기(n=nano 초경량, s=small, m=medium).
  • 프로젝트:
    • 비상정지: YOLOv8n(경량)으로 스마트폰(cell phone) 실시간 검출 → 검출 시 로봇 정지.
    • 커스텀: Roboflow 라벨링 동물 6종 데이터셋을 YOLOv8s로 직접 학습.
  • ⚠️ 주의: 비상정지·동물 프로젝트는 사전학습 추론 또는 간단한 커스텀 학습 수준. "YOLO 밑바닥 설계·개선" X. "사전학습 모델 활용 + 커스텀 데이터 학습 경험"이 정확한 표현.

ultralytics

  • 정의: YOLOv8 제공 회사/라이브러리. 학습·추론·검증을 명령 한 줄로.
  • 프로젝트: yolo detect train ...으로 커스텀 동물 모델 학습.

Roboflow

  • 정의: 이미지 라벨링(박스 그리기)·데이터셋 관리 온라인 툴.
  • 프로젝트: 동물 6종 데이터셋 직접 라벨링 후 YOLOv8 학습.

OpenCV · 영상처리

OpenCV (cv2)

  • 정의: 이미지·영상 처리 표준 라이브러리. 읽기·변환·검출 등 대부분 지원.
  • 프로젝트: HSV 색검출·ArUco 인식·카메라 캘리브레이션·영상 전처리 등 광범위 사용.

cv2.dnn (readNet / blobFromImage / forward)

  • 정의: OpenCV 내 딥러닝 실행 모듈. 학습 모델 로드 후 추론만 가능(학습 불가).
  • 하위 함수: readNet(모델 로드)·blobFromImage(입력 규격 전처리·정규화)·forward(추론 실행).
  • 프로젝트: YOLOv3 구동.

NMS (NMSBoxes)

  • 정의: 상기 YOLO 개념 참고. 겹친 박스 중복 제거. cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4).
  • 프로젝트: YOLOv3 결과에서 신뢰도 0.5 미만 + 겹침 0.4 이상 박스 제거.

HSV 색검출

  • 정의: 색을 색상(Hue)·채도(Saturation)·명도(Value)로 표현해 특정 색만 추출.
  • RGB 대신 HSV 이유: RGB는 조명 변화에 값 크게 흔들림, HSV는 색상(H)이 조명 변화에 상대적 강함 → 색 검출 유리.
  • 프로젝트: PACK 로봇팔에서 주황 물건 HSV 검출, 16Hz 안정 동작. 색 블롭 중심(cx) 추출 후 파지.

비주얼 서보잉 (eye-in-hand)

  • 정의: 카메라 영상 정보로 로봇 실시간 제어. eye-in-hand = 카메라를 로봇 손(집게)에 장착.
  • 프로젝트: PACK 로봇팔에서 집게 안쪽 카메라로 물건 중심 추출, 베이스 회전 정렬 후 파지(전환 시도 중, 진척도 50%).
  • ⚠️ 주의: "시도 중/미완성"으로 완성이란 말은 자제.

카메라 캘리브레이션

  • 정의: 카메라 렌즈 왜곡·초점 특성(내부 파라미터) 측정·보정 과정.
  • 필요 이유: 렌즈는 이미지를 미세 왜곡. solvePnP 등 정밀 측위에 보정 필수.
  • 프로젝트: PACK에서 타 팀원이 주 담당. 나는 결과(camera_calibration.yaml) 측위 활용. "팀원이 캘리브레이션, 나는 활용"으로 구분.

학습 기법 · 보정 (졸업논문 이미지 모델)

TTA (Test-Time Augmentation)

  • 정의: 추론 시 이미지를 여러 방식 변형(예: 좌우반전) 후 예측 평균. 정확도 소폭 향상.
  • 프로젝트: 이미지 모델 추론 시 수평 반전(hflip) 평균 적용.

Temperature Scaling

  • 정의: 모델의 과도한 확신 경향을 완화해 확률을 실제 정확도에 맞게 보정.
  • 이유: 딥러닝 모델은 "99% 확신" 후 오답 빈번. 이를 현실적으로 완화.
  • 프로젝트: 이미지 모델 확률 출력 보정(Abstain 판정 신뢰도 목적).

데이터 증강 (Data Augmentation)

  • 정의: 학습 데이터 인위 변형으로 양·다양성 확보. 과적합 방지.
  • 종류(사용분): Random Flip(반전)·Color Jitter(색 변화)·Cutout(일부 가림)·JPEG 압축(화질 저하 흉내).
  • 프로젝트: 졸업논문 이미지 모델 학습 시 적용, 일반화 성능↑.

CLAHE

  • 정의: 이미지 대비를 국소 향상시키는 기법(어두운 부분 부분적 밝힘).
  • 프로젝트: PACK 마커 검출에서 마커 흐릴 때 다단계 검출(NORMAL → CLAHE → SHARP)의 한 단계로 사용.

3D 센서 (참고)

LiDAR

  • 정의: 레이저 발사로 거리 측정하는 센서. 주변을 점으로 스캔해 장애물·벽 파악.
  • ⚠️ 프로젝트: TurtleBot3에 LDS-03 라이다 장착됨, SLAM·AMCL이 활용. 단, 라이다 데이터 직접 가공 코드는 미작성. "SLAM/Nav이 라이다 사용" 개념 수준.

PCL (Point Cloud Library)

  • 정의: 3D 점 데이터(포인트 클라우드) 처리 라이브러리.
  • ⚠️ 프로젝트: 커리큘럼(AI 센서퓨전) 개념 학습만, 프로젝트 직접 사용 없음.

(4~7묶음 + 부록은 다음 단계에서 이어서 명사구로 추가됩니다.)


4. 임베디드 · 하드웨어 · 통신

통신 프로토콜 기본기 (하드웨어 간 대화 3대 방식)

I2C/SPI/UART는 목록엔 없으나, PCA9685(I2C)·시리얼(UART) 사용으로 통신 질문시 등장 가능

UART (시리얼 통신)

  • 정의: 두 장치가 선 2개(TX 송신·RX 수신)로 1:1 데이터 교환하는 가장 기본 통신.
  • 특징: 간단·범용. 통신 속도(baudrate, 예 9600·115200)를 양쪽 일치 필요.
  • 비유: 두 사람의 무전기 1:1 대화. 말 속도(baudrate) 일치 필요.
  • 프로젝트: 라즈베리파이 ↔ 아두이노(PACK 로봇팔), PMS7003 ↔ 아두이노 모두 USB 시리얼(UART). pyserial로 파이썬 제어.

I2C

  • 정의: 선 2개(SDA 데이터·SCL 클럭)로 여러 장치를 하나의 버스에 연결하는 통신. 장치별 고유 주소 보유.
  • 특징: 선 2개로 다수 장치 연결(주소로 구분). 속도는 UART보다 빠르고 SPI보다 느림.
  • 비유: 한 회의실(버스)에 여러 명, 이름(주소) 호출로 특정인과 대화.
  • 프로젝트: PCA9685(서보 드라이버)·LCD를 I2C로 아두이노 연결.

SPI

  • 정의: 선 4개로 고속 통신. 마스터-슬레이브 구조.
  • 특징: 셋 중 최고속. 대신 선 다수 필요.
  • ⚠️ 프로젝트: 직접 사용 기억 불명확. "I2C보다 빠르나 선 많은 방식" 개념만.

MCU · 보드

Arduino Uno R3

  • 정의: 대표 MCU(마이크로컨트롤러) 보드. 센서·모터 등 하드웨어 직접 제어하는 초소형 제어기.
  • 특징: OS 없이 코드(펌웨어) 직접 실행. 정해진 작업 실시간 반복에 특화.
  • 프로젝트: PACK 로봇팔 서보 제어, 보조안전모듈 Board1, 장애물 회피 로봇 모두 아두이노 우노.

ESP8266 (ESP-01)

  • 정의: WiFi 내장 초소형 MCU 모듈. IoT에 다수 사용.
  • 하위 개념 — AT 명령:
    • AT 명령: 모듈에 문자로 명령하는 방식(예: AT+CWJAP=WiFi 접속, AT+CIPSTART=연결 시작). 원래 모뎀 제어용 명령 체계.
    • 통상 외부 WiFi 라이브러리 사용, 본인은 AT 명령 직접 구현으로 WiFi 통신 구성.
  • 프로젝트: 보조안전모듈에서 ESP-01로 센서 데이터 UDP 전송. 외부 라이브러리 없이 AT 명령 시퀀스 직접 구현 = 저수준 이해 어필 소재. 공기청정 로봇은 ESP01+PMS7003으로 MQTT 발행.
  • 꼬리질문: "왜 라이브러리 없이 AT 직접?" → 통신 흐름 정확 제어·디버깅 목적.

Raspberry Pi

  • 정의: 리눅스 OS 구동 소형 컴퓨터(SBC, 싱글보드컴퓨터). 아두이노보다 강력.
  • MCU와 차이(중요): 아두이노는 OS 없는 '제어기'(실시간 단순 반복), 라즈베리파이는 OS 있는 '컴퓨터'(무거운 연산·카메라·네트워크).
  • 프로젝트: PACK 로봇팔에서 라즈베리파이가 카메라 영상 처리·MQTT 명령 수신 → 시리얼로 아두이노 전달하는 상위 두뇌. "판단은 라즈베리파이, 구동은 아두이노" 역할 분담이 핵심 설명 포인트.

구동 · 액추에이터

PWM 제어

  • 정의: 전원 On/Off 비율(듀티 사이클)로 출력 세기 조절하는 방식.
  • 하위 개념 — 듀티 사이클: 한 주기 중 켜진 비율. 50%면 절반 출력. LED 밝기·모터 속도·서보 각도 조절.
  • 비유: 전등 스위치를 초고속 On/Off 시 켠 시간 비율만큼 밝기 조절.
  • 프로젝트: RGB LED 밝기(거리 비례)·서보 각도 제어 모두 PWM.

PCA9685

  • 정의: I2C 제어 16채널 PWM 드라이버 칩. 서보 다수 동시 정밀 제어.
  • 필요 이유: 아두이노 자체 PWM 핀은 수 적고 정밀도 낮음. PCA9685로 채널 16개 안정 제어.
  • 프로젝트: PACK 로봇팔 6채널 서보를 PCA9685(50Hz) 제어. 각도 → 펄스(us) → 틱 변환.

서보모터 (FT330M 35kg / MG996R)

  • 정의: 지정 각도로 회전·유지하는 모터. PWM 신호로 각도 지정.
  • 하위 개념:
    • 각도-펄스 매핑: 서보는 펄스 폭(예 1000~2000us)으로 각도 수신. "각도 → 펄스 폭" 변환식을 펌웨어 내장.
    • 오픈루프 한계: 이 서보들은 "현재 각도" 피드백 없는 오픈루프. 부하 크면 지정 각도 미달.
  • 프로젝트: 로봇팔 6DOF를 FT330M 35kg 3개 + MG996R 3개 구성. 토크 다른 서보 2종 혼용으로 채널별 속도·범위 튜닝에 시간 소요(아쉬운 점). 안전 각도 범위 클램프 제한.
  • ⚠️ 정직 포인트: 산업용 정밀 서보 아닌 취미용 PWM 서보. "정밀 위치제어" 과장 금지. "오픈루프 한계를 소프트웨어(안전범위 클램프·대기시간 확보)로 보완"이 정확한 서술.

DC모터 / AF Motor Shield (AFMotor)

  • 정의: DC모터는 전원 방향·세기로 회전하는 기본 모터. AF Motor Shield는 아두이노 장착 모터 확장 보드.
  • 하위 개념 — 차동 구동: 좌우 바퀴 속도차로 방향 전환(2묶음 차동구동 참고).
  • 프로젝트: 장애물 회피 로봇, PACK 4WD 추종 차량 바퀴 구동.

쿼드러처 엔코더 + 핀체인지 인터럽트

  • 정의:
    • 쿼드러처 엔코더: 바퀴 회전량 + 방향까지 판독(A·B 두 신호 순서로 방향 판별).
    • 핀체인지 인터럽트: 핀 신호 변화 시 즉시 함수 실행하는 기능.
  • 하위 개념 — 폴링 vs 인터럽트(면접 단골):
    • 폴링: "바뀌었나?" 지속 확인 → 놓칠 수 있고 비효율.
    • 인터럽트: 변화 순간 하드웨어가 통지 → 빠른 엔코더 신호 미유실.
  • 프로젝트: PACK 4WD 차량에서 엔코더 틱을 핀체인지 인터럽트로 카운트, 오도메트리 계산.

순운동학(FK) 충돌가드

  • 정의: 관절 각도로부터 로봇팔 끝(집게) 공간 위치 계산 = 순운동학(FK). 위험 구역 진입 시 차단 = 충돌가드.
  • FK vs IK(하위 개념):
    • FK(순운동학): 관절 각도 → 끝 위치 계산(쉬움, 해 하나).
    • IK(역운동학): 원하는 끝 위치 → 필요 관절 각도 역산(어려움, 해 다수 가능).
  • 프로젝트: 펌웨어에 FK 충돌가드 내장 — 집게 끝이 베이스 반경 진입 시 자동 정지.
  • ⚠️ 정직 포인트: README 기준 구현분은 FK 기반 충돌가드. "IK로 팔을 풀었다"는 확실한 근거 있을 때만(auto_pick은 측정 각도 기반). 질문 시 "충돌 방지는 FK, 피킹은 물건별 각도 세팅"으로 구분.

센서

HC-SR04 (초음파 거리센서)

  • 정의: 초음파 발사 후 반사 시간으로 거리 측정하는 센서.
  • 원리: 소리 속도 × 왕복 시간 ÷ 2 = 거리.
  • 프로젝트: 보조안전모듈 Board1에 4방향(전후좌우) 배치, 100ms마다 측정 후 4단계 위험등급(SAFE/MID/CLOSE/DANGER) 분류. 장애물 회피 로봇 전방 탐색.

DHT11 / LDR / 사운드 센서

  • 정의: DHT11=온습도, LDR(광저항)=조도(밝기), 사운드 센서=소음.
  • 프로젝트: 보조안전모듈 Board2에서 복합 환경 이상 감지. 이 보드는 팀원 담당 = "팀 시스템 구성 요소"로만 언급.

PMS7003 (미세먼지 센서)

  • 정의: 공기 중 미세먼지 농도(PM1.0/2.5/10) 측정 센서.
  • 프로젝트: 공기청정 로봇에서 ESP01 연결, MQTT로 PM 데이터 발행 → 자동 출동 트리거. 워밍업 약 30초 필요.

LDS-03 LiDAR / Intel RealSense / Pi Camera v2 (imx219)

  • 정의: LDS-03=TurtleBot3 기본 2D 라이다, RealSense=깊이(depth) 카메라, Pi Camera=라즈베리파이용 카메라 모듈.
  • ⚠️ 프로젝트: 라이다·RealSense는 TurtleBot3 장착 장비로 SLAM/Nav이 활용. 센서 드라이버 직접 작성 아님. Pi Camera는 PACK에서 OpenCV로 영상 수신·색검출·마커 인식에 사용(직접 다룸).

LCD I2C / RGB LED / 부저

  • 정의: 출력 장치. LCD=글자 표시, RGB LED=색·밝기, 부저=소리 경보.
  • 프로젝트: 보조안전모듈 물리 경보 출력. RGB LED는 거리 비례 밝기 + DANGER 시 논블로킹 점멸.

논블로킹 점멸 (non-blocking)

  • 정의: delay()로 프로그램 정지 없이 시간 측정하며 다른 작업 동시 수행하는 방식.
  • 중요 이유: delay(500) 사용 시 0.5초간 센서 측정·통신 전면 정지. 논블로킹(millis() 비교)은 무정지.
  • 프로젝트: DANGER 등급 LED 점멸을 delay 없이 구현, 점멸 중에도 거리 측정·UDP 전송 지속. 실시간 제어 이해 어필 소재.

pyserial

  • 정의: 파이썬의 시리얼(USB) 통신 라이브러리.
  • 프로젝트: PC/라즈베리파이 ↔ 아두이노 시리얼로 명령·센서값 교환.

통신 / 네트워크 프로토콜

TCP vs UDP (면접 최다 단골 — 반드시 숙지)

  • TCP: 연결 수립 후 순서 보장 + 도착 보장(유실 시 재전송)하는 신뢰성 통신. 대신 느림.
  • UDP: 연결 없이 전송. 빠르나 유실·순서 역전 가능.
  • 비유: TCP=등기우편(수령 확인·느림), UDP=전단지 뿌리기(빠름·일부 유실 무관).
  • 선택 기준: 파일·메시지=TCP, 실시간 센서·영상=UDP(최신값 우선, 소량 유실 무방).
  • 프로젝트: 보조안전모듈 센서 데이터는 UDP 전송. "왜 UDP?" → 실시간 거리·환경 데이터는 최신값 우선, 100~500ms 지속 전송으로 소량 유실 무방. 마피아 게임은 TCP 소켓(게임 상태 유실 불가).

TCP 소켓 / Python socket · threading

  • 정의: 소켓=네트워크 통신 양 끝단 창구. TCP 소켓=신뢰성 연결 창구.
  • 하위 개념 — 멀티스레딩: 다수 클라이언트 동시 처리를 위해 각 접속을 스레드 분리 병렬 처리.
  • 프로젝트: 마피아 게임 서버/클라이언트 구조 + 다중 클라이언트 접속을 Python socket·threading 처리. 게임 상태 관리·페이즈 전환 로직 주도 구현.

UDP

  • 상기 TCP vs UDP 참고. 프로젝트: 보조안전모듈 센서 데이터 전송.

HTTP (GET / REST)

  • 정의: 웹 데이터 교환 규약. GET(조회)·POST(생성)·PUT(수정)·DELETE(삭제) 메서드로 요청.
  • REST란: 자원(데이터)을 URL로 표현, HTTP 메서드로 조작하는 설계 방식(예: GET /api/robot/status).
  • 프로젝트: 공기청정 로봇 웹 대시보드 REST API(로봇 상태·경로·명령), 비상정지에서 Windows→WSL 영상 HTTP 스트림.

WebSocket (rosbridge)

  • 정의: 브라우저-서버 간 양방향 실시간 연결. HTTP와 달리 연결 유지하며 지속 교환.
  • HTTP와 차이: HTTP는 요청 시에만 응답(단발). WebSocket은 연결 유지, 서버가 먼저 데이터 푸시 가능(실시간 적합).
  • 프로젝트: 웹 대시보드에서 rosbridge_server(WebSocket)로 로봇 상태·맵 실시간 수신. roslibjs 연결.

MQTT (Mosquitto 브로커 / paho-mqtt)

  • 정의: IoT용 경량 메시지 통신. 발행/구독(pub/sub) 구조.
  • 하위 개념:
    • 브로커(Broker): 중간 우체국. 발행자가 브로커로 전송 → 해당 토픽 구독자 전원에게 전달(Mosquitto가 브로커 프로그램).
    • 토픽(Topic): 메시지 주소(예: robot/1/dust). 계층 구조.
    • paho-mqtt: 파이썬용 MQTT 클라이언트 라이브러리.
    • ROS2 토픽과 구분: 이름은 같은 '토픽'이나 별개 시스템. MQTT는 브로커 필수, ROS2는 DDS라 브로커 없음.
  • 비유: 브로커=우체국, 토픽=주소. 구독자는 "이 주소로 오는 것 전부 전달" 등록.
  • 프로젝트: 공기청정 로봇에서 센서(ESP01) ↔ ROS2 ↔ 웹서버를 Mosquitto MQTT 중계. PACK 로봇팔도 MQTT(pack/arm/cmd) 무선 명령.
  • 꼬리질문: "MQTT vs ROS2 토픽?" → MQTT는 브로커 경유 pub/sub(IoT·인터넷 통과), ROS2는 DDS 기반 브로커리스(로봇 내부 실시간). 로봇 내부는 ROS2, 외부 기기·웹 연동은 MQTT로 역할 분담.

WiFi (ESP8266)

  • 상기 ESP8266 참고. AT 명령으로 WiFi 접속 후 UDP/MQTT 전송.

MJPEG 스트리밍

  • 정의: JPEG 이미지 다수를 연속 전송해 동영상처럼 표시하는 방식.
  • 프로젝트: 비상정지에서 Windows 웹캠 영상을 Flask MJPEG HTTP 스트림 → WSL ROS2 구독. (WSL의 USB 웹캠 직접 접근 불가 문제 우회)

Cloudflare Tunnel

  • 정의: 로컬 서버를 외부 인터넷 접속 가능하게 여는 터널 서비스(공유기 설정 불필요).
  • 프로젝트: 공기청정 로봇 웹 대시보드 외부 브라우저 접속 연결.

시리얼 (ENC/CMD 프로토콜)

  • 정의: 자체 정의 시리얼 메시지 규격. ENC,...=엔코더 값 송신, CMD,...=명령 수신 약속.
  • 프로젝트: PACK 4WD 차량 ↔ ROS2 시리얼 통신에서 자체 프로토콜로 엔코더·명령 구분.

5. 언어 · CS 개념

프로그래밍 언어

Python

  • 정의: 문법 간결·학습 용이한 인터프리터 언어. AI·데이터·로봇 상위 로직 사실상 표준.
  • 특징: 동적 타입(타입 사전 선언 불요), 메모리 자동 관리(가비지 컬렉터), 방대한 라이브러리.
  • 버전 차이: 프로젝트별 3.9~3.14 혼용. 큰 문법 차이 없음, 라이브러리 호환성으로 버전 분기.
  • 프로젝트: ROS2 노드·데이터 분석·PyQt5 GUI·딥러닝 학습 등 거의 모든 상위 로직.

C / C++

  • 정의: 하드웨어 근접 저수준 제어 가능한 컴파일 언어. 빠르고 메모리 직접 관리.
  • Python과 차이: 컴파일 방식으로 빠름, 정적 타입, 포인터로 메모리 직접 접근, 개발 까다로움(상세는 하단 "Python vs C++" 항목).
  • ⚠️ 프로젝트: 실제 작성 C/C++ 코드는 Arduino 임베디드 펌웨어(.ino) 한정(로봇팔·차량·센서 제어). 커리큘럼에서 C++ 알고리즘·포인터·클래스·템플릿 학습했으나, 스킬 표기는 "Arduino(C/C++) 임베디드 펌웨어" 수준으로 한정. "C++로 알고리즘 설계" 표현 금지.

Java

  • 정의: 객체지향 기반 컴파일+가상머신(JVM) 언어. 기업 서버·안드로이드 다수 사용.
  • ⚠️ 프로젝트: 공기청정 로봇 웹 대시보드(Spring Boot)는 팀원 담당, 본인은 로봇 제어 파트. Java는 본인 핵심 스킬 아님. 질문 시 "웹은 팀원 담당"로 명확히 구분.

JavaScript / HTML5 / CSS3

  • 정의: 웹 프론트엔드 3대 요소. HTML=구조(뼈대), CSS=디자인(꾸밈), JavaScript=동작(움직임).
  • 프로젝트: 웹 학습 실습(디지털 시계·TODO), ROS 웹 컨트롤러(roslibjs). 로봇 직무에선 보조 역량.

SQL

  • 정의: 데이터베이스 데이터 조회·추가·수정·삭제 언어.
  • 핵심 문법: SELECT(조회)·INSERT(추가)·UPDATE(수정)·DELETE(삭제)·WHERE(조건)·JOIN(테이블 결합).
  • 프로젝트: 재고관리(MySQL), 공기청정 로봇 웹서버 DB.

CS 핵심 개념

Python vs C++ (차이 상세)

  • 정의: 두 언어의 최대 차이 = 실행 방식 + 메모리 관리.
  • 핵심 대본: "C++은 컴파일 언어로 사전에 기계어 번역 → 실행 빠름, 개발자가 메모리 직접 관리. Python은 인터프리터 언어로 한 줄씩 해석 실행 → 느리나 메모리 자동 관리로 개발 빠름. 그래서 빠른 반응 필요한 임베디드 제어는 C/C++, 로직 빠른 구현이 필요한 ROS2 노드는 Python 사용."
  • 비유: Python=자동변속기(편하나 세밀 제어 양보), C++=수동변속기(직접 제어·빠르나 손 많이 감).
  • 하위 차이 정리:
    • 속도: C++ 빠름(사전 기계어 번역, 실행 시 해석 과정 없음) vs Python 느림(실행 중 해석).
    • 타입: C++ 정적 타입(선언 시 타입 고정) vs Python 동적 타입(실행 중 결정).
    • 메모리: C++ 수동 관리(포인터·직접 해제) vs Python 자동(가비지 컬렉터).
  • 프로젝트: 임베디드 제어(아두이노 펌웨어)는 C/C++, 상위 로직·ROS2 노드는 Python으로 역할 분담.

포인터

  • 정의: 데이터가 저장된 메모리 주소를 담는 변수. 값 자체가 아닌 "값의 위치"를 가리킴.
  • 핵심 대본: "값을 직접 들고 다니지 않고 주소만 가리킴. 큰 데이터를 함수에 넘길 때 통째 복사는 비효율 → 주소만 넘기면 빠르고 메모리 절약. 특히 임베디드에선 하드웨어 레지스터 등 특정 메모리 주소 직접 접근이 필요해 포인터 필수."
  • 비유: 집 주소. 집(데이터) 통째 이동 대신 "주소는 여기"만 알려주면 찾아가서 확인 가능.
  • 장점(꼬리질문 — "왜 쓰나?"): ① 큰 데이터 복사 없이 주소 전달(효율), ② 동적 메모리 할당(malloc/new), ③ 임베디드 하드웨어 직접 제어.
  • 위험(꼬리질문 — "위험한 점?"): 잘못된 주소 접근 시 프로그램 사망(segfault), 메모리 누수 가능성.
  • 프로젝트: 아두이노/임베디드 펌웨어에서 사용. "실제로 어떤 상황에 다뤘는지" 본인 사례 1개 준비 시 강력.

스택(stack) vs 힙(heap)

  • 정의: 둘 다 메모리 영역, 관리 방식 상이.
  • 스택: 함수의 지역 변수 등 자동 할당·해제. 빠르나 크기 작음.
  • : 개발자가 직접 할당·해제. 크고 유연하나 관리 안 하면 메모리 누수.
  • 비유: 스택=책상 위(일 끝나면 자동 정리), 힙=창고(직접 넣고 직접 빼기, 안 빼면 쓰레기 포화 = 메모리 누수).
  • 꼬리질문:
    • "스택 오버플로?" → 재귀 함수 과다 등으로 스택 공간 초과.
    • "Python도 해당?" → Python은 힙 관리 자동(가비지 컬렉터)이라 개발자 직접 신경 쓸 일 적음.

컴파일 언어 vs 인터프리터 언어

  • 정의: 코드를 기계어로 변환하는 시점 차이.
  • 컴파일 언어: 실행 전 코드 전체를 한 번에 기계어 번역 → 실행 빠름(C++).
  • 인터프리터 언어: 실행하며 한 줄씩 해석 → 느리나 즉시 실행·수정 가능(Python).
  • 비유: 컴파일=책 전체 사전 번역본(읽기 빠름), 인터프리터=실시간 통역사(한 문장씩 통역, 느리나 유연).
  • 꼬리질문: "Python은 컴파일 아예 안 하나?" → 엄밀히는 바이트코드로 한 번 변환 후 인터프리터 실행. 신입 면접에선 "한 줄씩 해석" 수준으로 충분.

MCU (Micro Controller Unit)

  • 정의: CPU(연산)+메모리(RAM/ROM)+입출력 핀(I/O)을 칩 하나에 통합한 초소형 컴퓨터. 아두이노·ESP8266이 대표.
  • 비유: 일반 PC=아파트 단지(CPU동·메모리동 따로, 도로로 연결), MCU=원룸(침대·주방·화장실 한 방). 작고 저렴·저전력이나 성능 낮음. "센서 읽어 모터 구동" 등 정해진 단순 작업 반복에 적합.
  • 핵심 구성(칩 하나 안): CPU(두뇌)·메모리(Flash/ROM+RAM)·I/O 핀(센서·모터 연결)·주변장치(타이머·ADC·통신 UART/I2C/SPI).
  • 비교(면접 핵심):
    • MCU vs CPU(일반 컴퓨터): CPU는 고성능·OS 위 복잡 작업이나 주변 부품 별도 필요. MCU는 저성능이나 부품 한 칩 통합, 저전력·저비용으로 특정 제어 실시간 반복 특화.
    • MCU vs SBC(라즈베리파이): 라즈베리파이는 리눅스 OS 구동 '컴퓨터'(영상 처리·ROS2 등 무거운 연산). 아두이노 등 MCU는 OS 없이 코드 직접 실행하는 '제어기'(센서·모터 실시간). 프로젝트: 로봇팔에서 라즈베리파이가 판단, 시리얼로 아두이노(MCU)에 명령 전달해 서보 구동하는 역할 분담.
  • 꼬리질문:
    • "MCU에 왜 OS 없나?" → 자원(메모리·성능) 작고 정해진 작업만 빠르게 반복하면 되니 OS 오버헤드가 방해(단, RTOS라는 경량 실시간 OS 탑재 경우도 있음).
    • "펌웨어란?" → MCU에 올라가는 프로그램. 하드웨어에 밀착 동작해 '펌(firm)웨어'.
    • "실시간(real-time) 중요 이유?" → 모터 제어·안전 장치는 "정해진 시간 내 반드시" 반응 필요, MCU가 타이밍 보장에 유리.

OOP (객체지향 4대 특징)

  • 정의: 데이터와 기능을 '객체'로 묶어 설계하는 방식.
  • 4대 특징(하위 개념 — 단골 질문):
    • 캡슐화: 데이터·기능을 하나로 묶고 내부 은닉(외부 임의 접근 차단). 비유: 리모컨(내부 회로 은닉, 버튼만 노출).
    • 상속: 부모 클래스 기능을 자식이 물려받아 재사용. 비유: 부모 재산 상속.
    • 다형성: 같은 명령이 객체별 다른 동작(예: draw()가 원·사각형마다 상이). 비유: "울어봐"에 개는 멍멍, 고양이는 야옹.
    • 추상화: 복잡함 은닉·핵심만 노출(공통 틀 정의). 비유: 자동차 운전에 엔진 원리 불요.
  • 프로젝트: ROS2 노드를 Node 클래스 상속 작성(상속). 미로게임 MVC의 Player 클래스 캡슐화. FSM 상태 클래스 설계.

call by value vs call by reference

  • 정의: 함수 인자 전달 시 복사본 전달(value)이냐 원본 주소 전달(reference)이냐.
  • 차이: value는 함수 내 변경해도 원본 유지. reference는 함수 내 변경 시 원본 변경.
  • 비유: value=문서 복사본 전달(원본 안전), reference=원본 문서 전달(수정 시 원본 변경).
  • 꼬리질문: "Python은?" → 엄밀히 "call by object reference"(객체 참조를 값으로 전달). 리스트 등 가변 객체는 함수 내 수정이 원본 반영, 숫자·문자열 등 불변 객체는 미반영.

프로세스 vs 스레드

  • 정의: 프로세스=실행 중 프로그램 하나(독립 메모리). 스레드=한 프로세스 내 여러 작업 흐름(메모리 공유).
  • 비유: 프로세스=독립 사무실(각자 자원), 스레드=한 사무실 내 여러 직원(자원 공유).
  • 프로젝트: PyQt5 GUI에서 데이터 수신을 별도 스레드 처리, 화면 멈춤 방지(Signal/Slot). 마피아 게임 다중 접속 처리.

Python GIL (Global Interpreter Lock)

  • 정의: 파이썬에서 한 번에 스레드 하나만 실행되게 막는 잠금장치.
  • 존재 이유: 메모리 관리 안전 목적. 대신 CPU 계산 위주 작업은 멀티스레드로 미가속(한 번에 하나만 실행).
  • 해결: 계산 병렬화 필요 시 스레드 대신 멀티프로세싱 사용.
  • ⚠️ 프로젝트: 깊은 경험 없음. "GIL 때문에 CPU 병렬은 멀티프로세싱 필요" 개념만 답변.

메모리 누수 (memory leak)

  • 정의: 사용 완료 메모리 미반환으로 미사용 메모리 지속 누적하는 현상.
  • 비유: 창고에서 물건 사용 후 미반출로 창고 점진 포화.
  • 언어별: C/C++은 직접 해제(free/delete) 누락 시 발생. Python·Java는 가비지 컬렉터 자동 회수(순환 참조 등으로 발생 가능).

템플릿 (C++)

  • 정의: 타입 무관 동작 코드를 한 번만 작성하는 기능(제네릭). 예: 정수용·실수용 함수 개별 작성 불요.
  • ⚠️ 프로젝트: 커리큘럼 학습만, 실제 프로젝트 사용 근거 약함. 개념만.

아키텍처 · 패턴

MVC 패턴

  • 정의: 프로그램을 Model(데이터)·View(화면)·Controller(제어)로 분리하는 설계.
  • 이유: 역할 분리로 유지보수·협업 용이(화면 변경 시 데이터 로직 유지).
  • 프로젝트: 미로 탈출 게임 MVC 설계, Player 클래스(View 파트) 담당.

서버/클라이언트 구조

  • 정의: 서비스 제공 측(서버)과 요청 측(클라이언트) 분리 구조.
  • 프로젝트: 마피아 게임(TCP 서버-클라이언트), Flask REST API 서버.

Signal/Slot 패턴

  • 정의: 이벤트 발생(Signal) 시 연결 함수 실행(Slot)하는 Qt 이벤트 처리 방식.
  • 이유: GUI 버튼 클릭·데이터 도착 등 이벤트 처리 정돈. 스레드 간 안전 통신에도.
  • 프로젝트: 보조안전모듈·재고관리 PyQt5 GUI에서 실시간 데이터 수신 → 화면 갱신에 사용.

모듈화 / 멀티스레딩

  • 모듈화: 기능을 독립 조각으로 분리해 재사용·관리 용이(ROS2 노드 분리가 대표).
  • 멀티스레딩: 상기 프로세스 vs 스레드 참고.

6. ML · 데이터 · NLP (졸업논문 방어용)

졸업논문(멀티모달 가짜뉴스 탐지) 관련 기술. 논문 언급 시 반드시 설명 가능해야 함.

라이브러리 · 기본 도구

scikit-learn

  • 정의: 파이썬 대표 머신러닝 라이브러리. 분류·회귀·전처리 등 전통 ML 총집합(딥러닝 아님).
  • 프로젝트: 졸업논문 텍스트 모델(TF-IDF + LinearSVC + 확률보정) 전 과정.

pandas / numpy / groupby

  • pandas: 표(엑셀 유사) 데이터 처리 라이브러리. 필터·정렬·집계.
  • numpy: 숫자 배열·행렬 고속 연산. 딥러닝·영상처리 기반.
  • groupby: 같은 항목끼리 묶어 집계(예: 단어별 빈도 합산).
  • 프로젝트: 교통사고 분석·서울 쏠림 분석·단어 빈도 집계 등.

텍스트 분석 (졸업논문 텍스트 모델)

TF-IDF

  • 정의: 문서 내 단어 중요도 수치화 기법. "이 문서에 자주(TF), 타 문서엔 드문(IDF)" 단어에 높은 점수.
  • 하위 개념:
    • TF(단어 빈도): 이 문서 내 해당 단어 출현 빈도.
    • IDF(역문서 빈도): 전체 문서 중 희소성. "그·은·는" 등 흔한 말은 점수↓.
    • Word n-gram vs Char n-gram: 단어 단위(1-2gram)·글자 단위(3-5gram) 분할. 글자 단위는 오타·변형에 강함.
  • 비유: 흔한 단어 무시, "이 문서만의 특징 단어" 추출.
  • 프로젝트: 뉴스 본문을 Word TF-IDF(1-2gram) + Char TF-IDF(3-5gram) 하이브리드 벡터화.

LinearSVC

  • 정의: 선형 SVM(서포트 벡터 머신) 분류기. 데이터를 두 그룹으로 나누는 최적 경계선 탐색.
  • SVM이란: 두 부류 사이 최대 여백(margin) 경계를 긋는 알고리즘.
  • 프로젝트: TF-IDF 벡터 입력으로 진짜/가짜 뉴스 분류. Test 정확도 0.9841(텍스트 모델).

CalibratedClassifierCV (Platt Scaling)

  • 정의: 분류기 결과를 "확률"로 변환·보정하는 도구.
  • 이유: LinearSVC는 원래 "이쪽/저쪽" 점수만 제공, "몇 % 확신" 미제공. 확률 변환해야 임계값·Abstain 판정 가능.
  • Platt Scaling: 점수를 확률로 변환하는 대표 방법(로지스틱 함수 사용).
  • 프로젝트: 텍스트 모델 점수를 확률 보정 → 임계값(0.54) 판정 사용.

멀티모달 결합 (졸업논문 핵심)

엔트로피 기반 가중 결합 (Soft Voting)

  • 정의: 텍스트·이미지 두 모델 확률 결합 시 더 확신하는(엔트로피 낮은) 모델에 큰 가중치 부여하는 방식.
  • 하위 개념:
    • 엔트로피: 불확실성 척도. 확률 0.5 근처면 엔트로피↑(헷갈림), 0.9면 엔트로피↓(확신).
    • Soft Voting: 각 모델 확률 평균 결합(단순 다수결인 Hard Voting과 대비).
  • 단순 평균과 차이(중요): 5:5 평균 시 헷갈리는 모델이 결과 훼손. 엔트로피 가중은 "확신하는 쪽 우대"라 더 우수.
  • 비유: 두 전문가 의견 결합 시 자신 없는 사람보다 확신하는 사람 말에 무게.
  • 프로젝트: 텍스트:이미지 기본 0.7:0.3에서 각 모달 엔트로피 따라 가중치 조정 → Fusion Score 산출.
  • 꼬리질문: "왜 텍스트 가중 높게?" → 텍스트 모델 정확도(0.98)가 이미지(0.84)보다 월등.

Abstain (판정 보류)

  • 정의: 확률 애매 구간(예: 0.42~0.48)이면 강제 판정 없이 "보류".
  • 이유: 확신 없는 강제 판정은 오답 증가. 애매분 제외 시 잔여 판정 신뢰도↑.
  • Coverage vs Accuracy 트레이드오프(핵심):
    • Coverage: 전체 중 판정 비율. Abstain 증가 시 Coverage↓.
    • 애매분 제외 만큼 판정분 Accuracy↑.
  • 프로젝트: Abstain 도입으로 Coverage 96.4% 유지하며 불확실 샘플 3.66% 보류 → 판정 신뢰도 향상.
  • 꼬리질문: "실서비스라면?" → 애매한 뉴스는 "판단 보류"로 사람 확인 유도가 안전. 1차 필터 역할.

ECE 보정

  • 정의: Expected Calibration Error. 모델이 말한 확률과 실제 정확도의 일치도 측정 지표.
  • ⚠️ 프로젝트: 결합 과정 보정 지표로 참고. 깊은 질문 시 "확률 신뢰도 측정 지표" 수준.

기타 ML/NLP

Word2Vec

  • 정의: 단어를 숫자 벡터로 변환, 의미 유사 단어를 가까운 위치에 배치하는 기법.
  • 비유: "왕-남자+여자=여왕" 등 단어 의미 연산 가능.
  • ⚠️ 프로젝트: 고립청년 멘토매칭(ABC 부트캠프)에서 ML 설계 기획만 담당, 직접 구현 없음. PPT 제작도 담당. 질문 시 "모델 설계 방향 기획 참여, 구현은 미참여".

KoNLPy (Okt) / 형태소 분석 / 불용어

  • KoNLPy: 한국어 자연어 처리 라이브러리. Okt는 내부 형태소 분석기.
  • 형태소 분석: 문장을 의미 단위(명사·동사 등) 분할. 한국어는 조사 결합으로 영어보다 난도↑.
  • 불용어(stopword): "그·은·는·이" 등 분석 무의미 단어. 제거로 정확도↑.
  • 프로젝트: 서울 쏠림 분석에서 댓글·기사 명사 추출, 불용어 제거 후 빈도 분석.

감정분석 (NLP)

  • 정의: 텍스트에서 긍정·부정·감정 분류.
  • 프로젝트: 멜론차트 가사 감정분석(학교 수업 과제), HARU FILM 감정 데이터 라벨링(11개 감정).

NVIDIA 딥러닝 기초

  • ⚠️ 프로젝트: ABC 부트캠프 이수 교육. 기술보다 학습 이력. 질문 시 "딥러닝 기초 교육 이수" 수준.

7. 웹 · DB · GUI · 수집 · 환경

로봇 SW 직무에선 보조 역량이나 "이것도 경험" 폭 제시.

웹 백엔드

Spring Boot

  • 정의: Java로 웹 서버를 빠르게 구축하는 프레임워크. 기업 백엔드 표준.
  • 하위 개념:
    • JPA(엔티티/리포지토리): 자바 객체와 DB 테이블 자동 연결 기술(SQL 직접 작성 불요). 엔티티=테이블 대응 객체, 리포지토리=DB 접근 담당.
    • Thymeleaf: 서버에서 HTML 생성·전송하는 템플릿 엔진.
    • Gradle: 빌드·의존성 관리 도구(build.gradle에 필요 라이브러리 명시).
  • ⚠️ 프로젝트: 공기청정 로봇 대시보드의 Spring Boot·JPA·Thymeleaf는 팀원 담당, 본인은 로봇 제어 파트. 로봇 직무 면접에선 "웹 연동은 팀원 담당" 수준으로만 언급.

Flask

  • 정의: Python으로 가볍게 웹 서버·API 구축하는 프레임워크(Spring Boot보다 간단).
  • 하위 개념:
    • Flask-SQLAlchemy: Flask에서 DB를 객체로 다루는 ORM.
    • Flask-CORS: 브라우저의 타 주소 API 호출 허용(보안 정책 우회).
    • REST API: HTTP 메서드로 데이터 CRUD(4묶음 HTTP 참고).
  • 프로젝트: 비상정지 웹캠 스트림 서버, 관제 GUI REST 서버, 웹 실습 TODO API(POST/GET/PUT/DELETE). Flask는 본인 직접 구현.

SQLAlchemy ORM

  • 정의: ORM(Object-Relational Mapping) = 파이썬 객체와 DB 테이블 자동 연결. SQL 직접 작성 없이 객체로 DB 조작.
  • 프로젝트: Flask TODO API에서 MySQL 연동, 테이블 자동 생성.

데이터베이스

MySQL / PyMySQL / MySQL Workbench

  • MySQL: 대표 관계형 DB(표 형태 저장).
  • PyMySQL: 파이썬의 MySQL 접속 라이브러리.
  • MySQL Workbench: MySQL GUI 도구(테이블 생성·쿼리 실행).
  • 하위 개념 — 관계형 DB: 데이터를 표(테이블) 저장, 표 간 관계(외래키) 연결. SQL 조작.
  • 프로젝트: 재고관리(PyQt5+PyMySQL), 공기청정 로봇 웹서버, 관제 GUI 경로 저장.

GUI (데스크탑)

PyQt5

  • 정의: 파이썬으로 데스크탑 GUI(창·버튼·표) 구축하는 라이브러리.
  • 하위 개념 — Signal/Slot + 멀티스레드: 버튼 클릭·데이터 도착 이벤트 처리(5묶음 참고). 데이터 수신을 별도 스레드로 처리, 화면 멈춤 방지.
  • 프로젝트: 보조안전모듈 실시간 모니터링 GUI, 재고관리 CRUD, 교통사고 분석 GUI, 관제 GUI.

Tkinter

  • 정의: 파이썬 기본 내장 GUI 라이브러리(PyQt5보다 간단·경량).
  • 프로젝트: 공기청정 로봇 제어 GUI, 먼지 히트맵 시각화.

웹 프론트엔드

Vanilla JavaScript / DOM API

  • Vanilla JS: 라이브러리 없이 순수 자바스크립트만 사용.
  • DOM API: 웹 페이지 요소(버튼·글자) 코드 조작(addEventListener=이벤트 처리, setInterval=주기 실행).
  • 프로젝트: 디지털 시계(setInterval), TODO 리스트(DOM 조작).

AJAX

  • 정의: 페이지 새로고침 없이 서버와 데이터 교환. 화면 일부만 갱신.
  • 프로젝트: 공기청정 로봇 대시보드에서 로봇 상태 실시간 갱신.

ROS 웹 연동 라이브러리 (roslibjs / ros2djs / ROS3D.js / Three.js)

  • roslibjs: 브라우저에서 ROS 토픽 발행/구독(rosbridge 경유).
  • ros2djs: ROS 맵(OccupancyGrid) 2D 렌더링 라이브러리.
  • ROS3D.js / Three.js: 3D 시각화(Three.js는 범용 3D 엔진, ROS3D는 그 위 ROS용).
  • EaselJS / EventEmitter2 / OccupancyGridClient: 캔버스 그리기·이벤트·맵 구독 보조 라이브러리.
  • 프로젝트: 웹 대시보드에서 브라우저로 로봇 제어(roslibjs)·실시간 맵(ros2djs)·3D 시각화(ROS3D). "PyQt 없는 브라우저 제어"의 핵심.

CSS3 (Flexbox / Grid)

  • Flexbox / Grid: 화면 요소 정렬·배치 CSS 기술(Flexbox=1차원 정렬, Grid=2차원 격자).
  • 프로젝트: 카카오톡 클론 UI, 웹 컨트롤러 레이아웃.

데이터 수집 · 파싱

requests / BeautifulSoup

  • requests: 파이썬으로 웹 페이지 가져오는 라이브러리(HTTP 요청).
  • BeautifulSoup: 수집 HTML에서 원하는 데이터 추출하는 파싱 라이브러리.
  • 프로젝트: 졸업논문 뉴스 본문 수집, 서울 쏠림 분석 크롤링.

trafilatura / readability-lxml / JSON-LD·메타 태그 파싱

  • 정의: 웹 페이지에서 광고·메뉴 제거 후 본문만 추출하는 도구들. JSON-LD·메타 태그는 페이지 내 숨겨진 구조화 정보.
  • 프로젝트: 졸업논문에서 뉴스 본문·대표 이미지를 우선순위(JSON-LD→trafilatura→readability→메타태그) 추출.

Selenium

  • 정의: 브라우저를 코드로 자동 조작(클릭·스크롤)해 데이터 수집. 동적 페이지에 필요.
  • 프로젝트: 서울 쏠림 분석에서 유튜브 댓글 무한스크롤 크롤링.

시각화 · 데모 UI

matplotlib / seaborn / Plotly / WordCloud

  • matplotlib: 파이썬 기본 그래프 라이브러리. seaborn: matplotlib 미화 래퍼. Plotly: 마우스 조작 가능한 인터랙티브 그래프. WordCloud: 단어 빈도를 구름 모양 표현.
  • 프로젝트: 교통사고·인구·서울 쏠림 데이터 시각화, 워드클라우드.

Pillow

  • 정의: 파이썬 이미지 처리 라이브러리(열기·자르기·변환).
  • 프로젝트: 이미지 전처리 보조.

Gradio

  • 정의: 머신러닝 모델을 웹 데모로 빠르게 구축하는 도구(입력창·결과창을 몇 줄로).
  • 프로젝트: 졸업논문에서 URL 입력 → 판정 결과 표시하는 데모 UI.

개발 환경 · OS · 도구

Ubuntu 22.04 / Linux

  • 정의: 리눅스 계열 OS. ROS2·로봇 개발 표준 환경.
  • 프로젝트: 모든 ROS2 작업 기반 OS.

WSL2 + Windows 11

  • 정의: 윈도우 내 리눅스 구동 기능(Windows Subsystem for Linux).
  • ⚠️ 하위 개념 — 한계: WSL에서 USB 장치(웹캠) 직접 접근 까다로움.
  • 프로젝트: 비상정지에서 WSL 웹캠 접근 불가 → Windows Flask 스트림 서버 우회. 문제 해결 스토리 소재.

Gazebo Classic 11.10 / Rviz

  • Gazebo: 로봇 물리 시뮬레이터(실물 없이 로봇·환경 가상 구현).
  • Rviz: ROS 데이터(맵·센서·로봇 상태) 시각화 도구.
  • 프로젝트: 비상정지에서 Gazebo 커스텀 월드로 TurtleBot3 시뮬레이션. Rviz로 맵·센서 확인.

Google Colab Pro (NVIDIA T4 GPU)

  • 정의: 구글 클라우드 주피터 환경. GPU 대여로 딥러닝 학습.
  • 프로젝트: 졸업논문 이미지 모델을 Colab T4 GPU(16GB) 학습.

Jupyter Notebook / VS Code / Chrome DevTools

  • Jupyter: 코드·결과·설명을 한 화면 실행(데이터 분석 최적).
  • VS Code: 대표 코드 에디터.
  • Chrome DevTools: 브라우저 개발자 도구(웹 디버깅).
  • 프로젝트: 데이터 분석은 Jupyter, 개발은 VS Code. 부트캠프 현장실습(트위니, STEP 7) 중 VS Code로 칠랑 JSON 정의 파일을 직접 편집해 블록 기반 GUI 제약을 우회한 경험 보유(차별화 스토리).

Git

  • 정의: 코드 버전 관리 도구. 변경 이력 추적·협업 필수.
  • 하위 개념: 커밋(변경 저장 단위)·브랜치(작업 분기)·merge/rebase(합치기).
  • 프로젝트: 비상정지에서 커밋 6개를 논리 단위(패키지/월드/주행/비상정지/런치/문서) 분리 — 의미 있는 커밋 습관 어필 소재.

POSTMAN / venv / Google Drive

  • POSTMAN: API 테스트 도구(엔드포인트에 요청 전송·응답 확인).
  • venv: 파이썬 가상환경(프로젝트별 라이브러리 격리).
  • Google Drive: 모델 가중치 등 파일 저장.
  • 프로젝트: TODO API를 POSTMAN 검증, 프로젝트별 venv 사용, Colab 모델을 Drive 저장.

부록. 데이터셋 (참고)

  • WELFake: 가짜뉴스 텍스트 데이터셋(71,537건). 졸업논문 텍스트 모델 학습.
  • Fakeddit: 가짜뉴스 이미지 데이터셋. 졸업논문 이미지 모델 학습.
  • COCO: 80종 객체 이미지 데이터셋. YOLO 사전학습 기반.
  • KOSIS: 국가통계포털. 서울 쏠림 분석 인구 이동 데이터.