본문으로 건너뛰기

M27.04 · 정책 주기·큐·프레임 누락·백프레셔

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • 도착/서비스·정책 주기와 큐 대기/관측 나이의 차이를 설명한다.
  • 합성 FIFO/latest-only 시간표에서 처리 ID·대기/완료 나이와 누락을 계산한다.
  • 관측/기록·절대/증분 명령의 의미에 맞춰 drop/백프레셔·만료/장애 정책을 제안한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M27.03의 시간 경계와 M21의 행동 표현을 사용한다. 생산자/소비자·FIFO/유한 큐/백프레셔를 본문에서 보충한다. 기본은 종이 사건표이며 실제 ROS/장치 실행은 없다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

정책을 부르는 주기와 결과를 소비하는 주기가 다르다

카메라가 20 ms마다 관측을 만든다고 정책도 매번 20 ms 안에 끝나는 것은 아니다. 생산자는 자료를 넣고 소비자는 꺼내 처리한다. 그 사이 잠시 보관하는 자료 구조가 큐다. FIFO(first in, first out)는 먼저 들어온 자료부터 꺼내는 순서다. 서비스 시간은 한 자료를 처리하는 시간, 대기는 처리를 시작하기 전 머문 시간이다. 완료 나이는 취득부터 결과 준비까지의 경과이며 둘을 포함한다.

관측/추론/명령 발행/저수준 제어의 주기를 따로 기록한다. 정책이 만든 action chunk를 여러 제어 tick에 나눠 소비할 수도 있다. 이때 추론 한 번을 제어 명령 한 번으로 세면 안 된다. M27.03의 적용 시각과 실제 목표 도달도 여전히 별개다. 빠르게 명령을 발행해도 그 근거인 관측이 오래되었을 수 있다.

가상 입력률은 20 ms 간격이면 50개/s이고 단일 작업자의 일정 서비스 시간이 30 ms이면 최대 서비스율은 약 33.3개/s다. 무한 FIFO에 계속 넣고 병렬화/누락·입력 감속이 없다면 차이인 약 16.7개/s만큼 대기열이 장기적으로 늘 수 있다. 유한 큐는 메모리를 제한할 뿐 과잉 입력을 자동 처리하지 않는다. 실제 서비스 시간 변동/휴지 구간도 있어 평균률만 같다는 조건으로 짧은 기한을 보장하지 않는다.

같은 네 관측을 FIFO로 처리한다

관측 ID 0/1/2/3의 취득과 도착은 각각 0/20/40/60 ms로 같다고 가정한다. 센서/전송 지연은 이번 표에서 0이고 하나의 단조 시계다. 단일 비선점 작업자가 즉시 시작해 매번 30 ms 처리한다. 비선점은 이미 시작한 작업을 새 자료가 왔다고 중간에 바꾸지 않는다는 뜻이다. 네 입력 뒤에는 새 입력이 없고, 대기 자료를 모두 처리한다.

FIFO와 최신 대기값 정책: FIFO → 최신 대기값 → 공통 제약 → 백프레셔.그림 원본 크기로 보기

그림 M27.04-1. 각 칸은 서로 다른 역할/근거다. 나란히 비교할 항목이며 위아래가 시간 순서를 뜻하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.

ID도착(ms)시작(ms)완료(ms)대기(ms)완료 나이(ms)
00030030
12030601040
24060902050
360901203060

대기는 시작−도착, 완료 나이는 완료−취득이다. 각 행의 완료 나이=대기+30 ms가 된다. 취득→도착이 0이라는 특수 가정 때문에 이렇게 간단하며 실제 경로에서는 앞단 지연도 더한다. 허용 완료 나이가 45 ms라면 ID 2/3은 초과한다. 누락 없이 처리했다는 것과 필요한 시점에 유효했다는 것은 다른 성질이다.

최신 대기 관측만 남기면 일부 계산을 생략한다

latest-only를 이번 예에서는 '처리 중인 작업은 유지하고, 대기 슬롯 하나는 새 관측으로 교체한다'고 정확히 정의한다. 처리 중인 입력까지 포함한 총 한 개 제한이 아니다. 60 ms처럼 도착/완료가 겹치면 먼저 새 도착으로 대기 슬롯을 갱신한 다음 완료 작업자가 꺼낸다는 사건 순서도 정한다. 다른 동시성 순서에서는 결과가 달라질 수 있다.

ID 0은 0~30 ms, ID 1은 30~60 ms 처리한다. 40 ms의 ID 2는 대기하다가 60 ms의 ID 3으로 교체된다. 따라서 ID 3을 60~90 ms 처리하고 ID 2는 처리하지 않는다. 처리한 ID의 완료 나이는 30/40/30 ms이고 최대는 40 ms다. 네 입력 중 처리 3개/대체 누락 1개라는 분모를 함께 적는다. FIFO의 30/40/50/60 ms와 비교할 수 있지만 이것은 이 사건표의 결과이며 모든 최신 슬롯 구현의 지연 상한은 아니다.

새 관측이 더 오지 않거나 서비스가 길어지면 슬롯 하나여도 완료 관측은 오래될 수 있다. 입력 대체를 했다는 사실만으로 deadline/관측 나이를 보장하지 않는다. 실행 전에 취득 stamp·결과 생성/도착·적용 시각을 연결해 만료를 확인한다. 새 봉투에 오래된 관측에서 나온 행동을 담아도 관측이 새로워지지 않는다. clock 점프/재시작과 중복/역순 ID도 별도 처리한다.

버려도 되는 자료인지는 의미 계약이 정한다

절대 목표는 정한 프레임/기준의 최종 값을 나타내고, 증분 명령은 이전 값/동작에 더하는 변화를 나타낸다. 초기 관절값이 0.3 rad이고 절대 목표 0.4/0.5/0.6 rad 중 두 번째를 생략해도 마지막 목표값 자체는 0.6 rad다. 다만 중간 경로/속도·충돌 전제는 달라질 수 있어 실제 동작이 동등하다는 뜻은 아니다.

반면 +0.1/+0.1/+0.1 rad를 순차 누적하는 계약에서 두 번째를 버리면 최종 값은 0.5 rad이고 모두 적용한 0.6 rad와 다르다. '열기→삽입→닫기' 같은 순서 의존 skill도 최신 하나로 바꿀 수 없다. 시각 추적/시간창 정책은 중간 관측이 필요한 경우가 있어 영상도 무조건 버릴 수 있는 것은 아니다. 명령 schema의 absolute/delta·unit/frame·sequence/기준·실행 시각과 task/정책 버전·누락 처리 규칙을 확인한다.

실시간 관측 소비 경로에서 일부를 버려도 원본 학습/감사 기록을 모두 보존하려면 별도 경로와 저장 용량/오류 처리가 필요하다. '모든 행 기록' 요구를 latest 슬롯으로 구현하면 누락을 숨기게 된다. 원본 기록과 모델이 실제 소비한 ID를 구분하면 어떤 관측에서 행동이 나왔는지 재현할 수 있다.

백프레셔는 압력을 앞단에 전달하는 설계다

백프레셔(backpressure)는 소비자가 감당하지 못할 때 생산 속도를 줄이거나 입력을 막는 식으로 압력을 앞단에 전달하는 방식이다. Python Queue 공식 문서는 유한 maxsize의 put이 공간이 날 때까지 막히거나 지정 방식에 따라 Full을 낼 수 있음을 설명한다. Queue(maxsize=1) 자체가 기존 항목을 최신 것으로 교체하는 기능은 아니다. 경쟁 스레드에서 qsize/empty 값도 다음 연산 성공을 보장하지 않는다.

입력을 막으면 카메라/드라이버 앞단 버퍼에 오래된 프레임이 쌓이거나 취득 누락이 일어날 수 있다. 단순히 애플리케이션 큐만 작게 해서는 전체 경로를 알 수 없다. ROS Jazzy QoS의 history/depth는 미들웨어 보관 정책이며 애플리케이션/장치·추론 큐 전체의 나이 보장은 아니다. reliable도 무한 처리율이나 모든 단계의 영구 저장을 의미하지 않는다.

따라서 자료별로 오래된 입력 버림/새 입력 거부·생산 감속/기록 분리와 만료·누락 알림을 정한다. 속도만 낮출 때도 정책/학습 시간 간격·제어기 계약에 미치는 영향을 검증한다. 기존 5.9 추론과 6.4 감독기를 연결해 과부하를 무조건 실행 지속으로 처리하지 않도록 하자.

관련 기존 자료 · 보충해서 읽기

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    5.9 20 Hz 폐루프 추론

    설명 범위 충족 · 전체 단위 검수와 별개

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

  • 기존 상세 본문 · 관련 기존 자료 · 보충 참고

    6.4 안전 배포 감독기

    설명 범위 충족 · 전체 단위 검수와 별개

    기존 자료의 관련 범위이며 신규 목표 전체의 품질 검수는 아직 진행하지 않았습니다.

  • 기존 요약 레슨 · 관련 기존 자료 · 보충 참고

    Action chunk와 20 Hz 폐루프

    목표 일부 관련

    핵심 요약 레슨입니다. 자세한 유도·수식·코드는 연결된 상세 본문을 함께 읽으세요.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

입력은 본문의 네 관측·30 ms 단일 작업자, 동시 사건 순서와 45 ms 완료 나이 한계다. 명령 비교에는 초기 0.3 rad/절대 0.4·0.5·0.6 rad와 순차 +0.1 rad 세 개를 사용한다.

  1. 입력률/서비스율·정책/제어 주기를 구분하고 대기/서비스/완료 나이의 식과 가정을 적는다.
  2. FIFO와 latest-only의 처리 ID·시작/완료·대기/나이, 누락/기한 초과를 표로 계산한다.
  3. 두 번째 명령을 버린 절대/증분 결과와 경로 의미를 비교하고 관측/순서 skill/원본 기록 각각의 압력·만료/누락 정책을 제안한다.

관찰은 주기/정의, 시간표, 의미/운영으로 나눈다. 막히면 처리 중과 대기 슬롯을 다른 칸에 그린다. 실제 ROS/카메라·스레드는 필요하지 않다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

관련 기존 자료 · 보충해서 읽기

  • 기존 실습 원고 · 관련 기존 자료 · 보충 참고

    실습 5-D: 20 Hz Action Chunk 폐루프

    목표 일부 관련

    실습 원고 참조. 로컬/ROS/Isaac/GPU/실물 실행과 장비 없는 기본 경로의 목표 검수는 미실시. 연결된 원고의 환경·절차를 확인하세요. 원고 열람은 실습 수행을 뜻하지 않습니다.

  • 코드·원본 파일 · 관련 기존 자료 · 보충 참고

    05_lerobot_smolvla/code/closed_loop_20hz.py

    목표 충족 범위 없음

    파일 열람은 코드 실행·실습 완료를 뜻하지 않습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

카메라 10 ms 간격/정책 서비스 25 ms·단일 작업자다. 입력률/서비스율을 구하고 모든 입력을 무한 FIFO에 계속 보관할 때 문제를 설명하라. 구동기가 별도 5 ms 주기라면 정책 주기도 5 ms인가?

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

관측이 0/10/20 ms에 도착하고 서비스는 20 ms다. 동시 사건은 도착 먼저이며 그 뒤 새 입력은 없다. FIFO와 본문의 최신 대기 슬롯 방식의 처리 ID/완료 나이를 구하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

순차 증분 명령과 원본 감사 기록을 모두 최신 슬롯 하나로 바꾸면 어떤 의미/근거가 사라지는가? 백프레셔와 누락/만료 정책을 제안하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

관련 기존 자료 · 보충해서 읽기

  • 기존 서술 문항 · 관련 기존 자료 · 보충 참고

    20 Hz loop의 inference가 80 ms 걸릴 때 가능한 system architecture 두 개를 제안하라.

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    개별 모범답안은 미작성입니다. 기존 관련 개념에 근거한 AI 피드백이며 추론한 해설을 구분해야 합니다.

  • 기존 보고서 · 관련 기존 자료 · 보충 참고

    실습 보고서 · 기존 원고와 평가 안내

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    개별 모범답안은 미작성입니다. 기존 관련 개념에 근거한 AI 피드백이며 추론한 해설을 구분해야 합니다.

  • 기존 서술 문항 · 관련 기존 자료 · 보충 참고

    closed-loop mock에 별도 inference thread와 bounded queue를 추가하라.

    목표 일부 관련

    개별 해설/루브릭의 목표별 충분성은 후속 단위 검수. AI 평가·코드 실행 통과를 의미하지 않음.

    개별 모범답안은 미작성입니다. 기존 관련 개념에 근거한 AI 피드백이며 추론한 해설을 구분해야 합니다.

  • 기존 요약 점검 · 관련 기존 자료 · 보충 참고

    값과 단위가 맞아도 오래된 action을 버려야 하는 이유는?

    목표 일부 관련

    단답은 키워드 포함 여부이며 의미 이해를 보장하지 않음

    기존 교재 해설·평가 기준을 참고할 수 있습니다. 답안 평가 후 화면의 비교 항목도 확인하세요.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.