컴퓨터 비전
사진·영상의 픽셀을 위치·색·모양·후보 라벨 같은 측정값으로 바꾸는 기술입니다.
카메라 화면을 보여 주는 것만으로는 비전이 아니며, box는 현실을 이해한 확정 답이 아닙니다.
작은 Python 프로그램을 여덟 번 확장하며 입력→처리→기억→출력→피드백, 무선 메시지, 암호화, 컴퓨터 비전, AI와 AI 에이전트를 차례로 연결합니다. 온라인 또는 압구정 대면(오프라인), 1:1 개인 또는 1:n 소수 그룹으로 진행합니다.
작성: CIT 교육팀 | 검토: CIT 커리큘럼팀 | 최종 확인: 2026년 8월 9일 | 다음 검토: DJI 의 S1 지원·명령 목록 갱신 시
RoboMaster S1 입니다. 바퀴 네 개에 롤러가 비스듬히 박혀 있어서 제자리에서 옆으로도 움직입니다. 앞쪽 짐벌에는 카메라가 한 대 달려 있습니다. 이 카메라 하나가 로봇이 바깥을 보는 유일한 창입니다.
사진 KKPCW, 위키미디어 공용, CC BY-SA 4.0
인터넷의 RoboMaster 예제는 대부분 EP 기준입니다. 그대로 따라 하면 실물에서 동작하지 않는 코드를 배우게 됩니다. 학생은 자기 코드가 왜 안 되는지 알 방법이 없습니다. CIT 는 DJI 가 공개한 S1 명령 목록과 대조해 수업에 쓰는 모든 호출을 확인합니다.
S1 의 내장 비전은 마커, 라인, 사람, 로봇, 자세 다섯 가지로 정해져 있습니다. Lab Python 에서는 카메라 프레임을 꺼낼 수 없어서 학생이 만든 모델을 로봇 안에서 돌릴 수 없습니다. 그래서 학생의 모델은 노트북에서 돕니다.
이 둘을 같은 것처럼 말하면 학생은 자기 시스템이 무엇을 아는지 설명하지 못하게 됩니다. 수업에서는 어느 쪽이 무엇을 판단했는지 항상 구분해 적습니다. 정지 판단만큼은 로봇 쪽에도 남겨 둡니다. 로봇 안의 인식은 빠르지만 종류가 정해져 있습니다. 노트북의 YOLO 는 느린 대신 훨씬 많은 것을 봅니다.
IMPLEMENTATION ARCHITECTURE
매 단계는 앞 단계의 코드를 그대로 사용하므로 개념이 어디에 더해졌는지 눈으로 볼 수 있습니다. Python은 AI 자체가 아니라 입력을 자료형으로 만들고 처리, 기억, 규칙, 통신, AI, 출력을 연결하는 언어입니다.
step_01step_02step_03step_04step_05step_06step_07step_08버튼, 밝기 센서, 카메라 frame과 무선 Message가 시스템 경계를 건넙니다.
Python · RobotInput, Frame, Message dataclass가 이름과 자료형을 정합니다.
원시 값을 정리하고, 픽셀을 측정하며, 필요할 때 학습된 AI 모델에 예측을 요청합니다.
Python · process_input(), measure_bright_region(), encode_message()가 한 가지 책임씩 가집니다.
현재 값, 이전 값, 최근 AI 후보와 연속된 새 frame 수를 실행 중 잠시 보관합니다.
Python · WorkingMemory와 ObservationMemory가 값과 시간의 수명을 드러냅니다.
if 규칙과 위험별 threshold가 가능한 출력을 고릅니다. 사람 후보는 낮은 문턱으로 보호 정지만 앞당깁니다.
Python · decide()와 evaluate_prediction()은 점수·freshness·권한을 함께 검사합니다.
화면 문장, LED, 소리, 암호화된 bytes와 안전 상태를 냅니다. 노트북 단계에서 섀시는 언제나 STOP입니다.
Python · RobotOutput이 사람이 볼 출력과 로봇 출력의 경계를 분명히 합니다.
출력 뒤 새 입력을 받아 이전 값과 비교합니다. 메시지 손실·지연·오류가 생기면 HOLD 또는 STOP으로 돌아갑니다.
Python · tick(), timestamp와 trace가 다음 반복과 원인 설명을 만듭니다.
각 칸은 프로젝트의 실제 이름입니다. 마지막 SystemTrace는 어떤 값이 어떤 결정을 거쳐 출력되었는지 한 줄로 되짚게 합니다.
RobotInput(
button, light
)raw values
process_input(
raw
)clean values
memory.update(
processed
)current + previous
decision =
decide(snapshot)if + policy
make_output(
decision
)display·LED·STOP
SystemTrace(
...
)cause trail
system.tick(
next_input
)새 입력
노트북 프로젝트는 움직임 없이 모든 단계를 검증합니다. S1 실물 출력은 별도 Lab Python 예제에서 짧은 동작·명시적 정지·교사 감독 아래 다룹니다.
기억과 저장은 다릅니다. WorkingMemory는 프로그램이 도는 동안 현재 값과 이전 값을 잠시 들고 있습니다. Python 파일과 AI model weight는 껐다 켜도 남는 저장 자료입니다. model weight는 현재 학생이나 장면을 기억한 기록이 아니라 예시에서 학습된 숫자입니다.
사진·영상의 픽셀을 위치·색·모양·후보 라벨 같은 측정값으로 바꾸는 기술입니다.
카메라 화면을 보여 주는 것만으로는 비전이 아니며, box는 현실을 이해한 확정 답이 아닙니다.
예시에서 패턴을 학습한 모델이 새 입력을 예측하거나 내용을 만드는 계산 방법입니다. YOLO 탐지가 여기에 해당합니다.
HSV 임계값, if 규칙, watchdog은 자동으로 실행돼도 규칙 기반 코드이지 학습된 AI가 아닙니다.
목표를 받고 관찰, 기억, 판단, 행동, 피드백을 반복하는 전체 시스템입니다. RobotAgent는 AI 예측과 설명 가능한 Python 정책을 연결합니다.
AI 점수 하나가 행동 권한은 아닙니다. 이 프로젝트의 chassis 출력은 언제나 STOP이며 객체 결과도 사람 확인용으로만 냅니다.
아래 0.30과 0.70은 원리 비교용 숫자입니다. 실제 값은 검증 데이터·카메라·조명에서 다시 측정합니다.
사람 누락 비용이 불필요한 정지보다 크므로 보호 output을 일찍 냅니다. 이 점수만으로 사람에게 접근하지 않습니다.
더 높은 점수와 연속된 새 관측을 만족해도 화면에 후보를 설명할 뿐입니다. 교사가 확인하며 섀시는 STOP을 유지합니다.
낮거나 흔들리거나 오래된 관측은 다음 frame·다른 sensor·사람 확인을 기다리며 zero motion을 유지합니다.
핵심: 사람 threshold를 낮춘다는 말은 로봇을 더 쉽게 움직인다는 뜻이 아니라, 더 쉽게 멈추게 한다는 뜻입니다.
사람 안전 후보
낮은 보호 threshold → STOP·SLOW·ALERT만
일반 객체 표시
검증 threshold → 후보 box·label 표시
객체 결과 확인
높은 evidence + 여러 frame → 교사 확인 표시
STALE·누락 입력
점수와 무관하게 TTL·watchdog → zero motion
ELEMENTARY · 4~6학년
여섯 역할이 frame과 정지 카드를 전달합니다. 설명 화살표, 세 개념을 구분한 자기 말, 멈춤 카드가 결과물입니다.
MIDDLE SCHOOL
RobotInput, JSON bytes, ciphertext, AI prediction과 연속 frame 수를 표와 trace로 따라갑니다.
HIGH SCHOOL
interface, message loss와 latency, tamper rejection, stale data, threshold 정책을 fake input과 unit test로 검증합니다.
무선통신은 공중으로 메시지를 보내는 길이고 암호화는 그 길에서 내용을 읽기 어렵게 잠그는 방법입니다. 학생은 의미, 표현, 전송, 보호, 권한을 서로 다른 층으로 그립니다.
층을 섞지 않습니다. Wi-Fi 비밀번호는 네트워크 접속을 보호하고 TLS는 이동 경로를 보호하며 앱 암호화는 메시지를 보호합니다. 권한과 안전 규칙은 유효한 메시지가 무엇을 해도 되는지 정합니다. 초등은 잠긴 상자 그림, 중등은 bytes와 손실 실험, 고등은 키·변조·권한 경계를 코드와 테스트로 설명합니다.
DJI 가 공개한 공식 영상입니다. 영상에 나오는 조작은 앱의 기본 기능입니다. 수업에서는 같은 동작을 Lab Python 으로 한 줄씩 직접 씁니다.
한 회차는 80분에서 100분입니다. 여덟 개 실행 가능한 Python step을 28회에 걸쳐 확장합니다. 초등 역할 활동, 중등 데이터 추적, 고등 Python 엔지니어링 중 깊이는 달라도 시스템 지도와 안전 기준은 같습니다.
로봇의 sensor·button·camera를 입력, Python을 처리, LED·화면·소리를 출력으로 분류하고 안전한 첫 실행을 설계합니다.
RobotInput부터 SystemTrace까지 값을 따라가고 작업 기억과 파일 저장의 차이, 반복과 상태 변화를 실험합니다.
Message를 JSON bytes와 packet으로 바꾸고 손실·지연을 실험합니다. encoding, encryption, integrity, authorization을 구분합니다.
픽셀 측정과 학습된 예측을 비교하고 label·confidence를 정답이 아닌 증거로 읽으며 false positive와 false negative를 셉니다.
오류 비용에 따라 threshold를 다르게 정하고 새 관측과 권한을 확인한 뒤 관찰→기억→판단→출력→피드백 loop를 만듭니다.
여덟 step과 13개 시스템 diagram을 한 이야기로 연결하고 unit test·오류 표·실행 trace로 시스템이 안전하게 실패함을 증명합니다.
아닙니다. 무선통신은 packet이 이동하는 방법이고 암호화는 메시지 내용을 보호하는 방법입니다. 수업에서는 JSON encoding, Wi-Fi link, Fernet encryption과 변조 검사, 행동 권한을 네 개의 다른 층으로 실험합니다.
들을 수 있습니다. 첫 step은 버튼과 숫자를 입력해 화면·LED 출력을 고르는 짧은 코드입니다. 이후 초등은 역할과 그림, 중등은 값과 상태, 고등은 함수와 테스트로 같은 여덟 단계를 확장합니다.
학생용 AI 예측과 정책 코드는 먼저 노트북에서 안전하게 돕니다. S1 Lab Python은 별도 실물 예제로 입력, 처리, 기억, LED, 소리, 명시적 정지를 보여 줍니다. 어느 Python이 어느 컴퓨터에서 도는지 항상 표시합니다.
노트북의 여덟 step은 chassis=STOP만 출력합니다. 사람 후보의 낮은 threshold도 접근이 아니라 STOP·ALERT만 앞당깁니다. 통신 손실·지연·변조·낡은 입력 역시 HOLD 또는 STOP입니다. 실물 회차는 별도 Lab 경계와 교사 감독 아래 진행합니다.
Python 프로젝트와 diagram을 실행하려면 필요합니다. 기본 과정은 보통의 Python 3 노트북에서 동작하며 GPU나 실시간 카메라가 없어도 저장 입력으로 모든 핵심 개념을 배울 수 있습니다.
초등학교 4~6학년부터 고등학생까지입니다. 초등은 역할 카드와 저장된 장면, 중등은 실제 bytes·상태·threshold, 고등은 모듈·보안 경계·테스트로 같은 구현을 배웁니다. 설치 권한과 실물 동작은 교사가 승인하고 감독합니다.
네. 여덟 개 실행 step, 13개 architecture diagram, 오탐·누락 표, 무선 손실과 암호문 실험, 안전 정지를 증명하는 test와 SystemTrace가 남습니다. 학생은 한 tick이 왜 그 출력을 냈는지 자기 수준의 말로 발표합니다.
수강 형태에 따라 달라지므로 상담에서 확인합니다. 실물 장비를 쓰지 않는 경우에는 시뮬레이션과 기록 분석으로 같은 학습 목표를 다룹니다.
상담에서 역할 카드, 데이터·상태 추적, 모듈·테스트 중 어디에서 시작할지 정합니다. 어느 경로도 컴퓨터 비전·AI·AI 에이전트의 구분과 안전 기준은 생략하지 않습니다. 무료 상담과 레벨테스트를 제공합니다.