부드러움과 유효한 실행은 다른 검사다
정책 출력의 흔들림/불연속을 줄이는 필터는 현재/과거의 수치를 합성한다. 유한값·단위/frame·관측 나이/버전·기본 범위를 확인하지 않고 무효 제안을 평균하면 무효 입력이 유효해지지 않는다. 먼저 입력/계약을 검사하고 유효 후보만 합성한다. 합성 뒤에도 현재 상태·시간/동역학과 경로/물리 제약을 다시 검사한다. 이 단위의 수치 한계는 교육용 입력이며 특정 로봇의 허용 정격이나 안전 기준이 아니다.
관절 목표를 정규화 공간에서 만들었다면 어느 단계에서 물리 단위로 복원하는지 적는다. 여러 관절을 같은 숫자 범위로 clip해도 rad·m·그리퍼 범위와 속도/토크 의미는 다를 수 있다. 현재 측정 q와 이전에 적용한 명령 q_prev도 구별한다. 명령 변화 제한이 실제 축 속도 제한을 보장하려면 구동 추종/상태·실행 주기 등 추가 근거가 필요하다.
EMA는 새 입력과 저장된 상태를 섞는다
EMA(지수이동평균)는 시간 순서의 입력 u_k를 이전 필터 상태 y_(k−1)와 합성한다. k는 업데이트 번호, α는 이번 식에서 새 입력의 비중이며 0<α≤1이다. 같은 단위의 절대 목표를 일정 주기 T초로 처리하는 교육용 규약을 쓴다.
그림 M30.03-1. 각 칸은 서로 다른 역할/근거다. 아래 방향은 자료/처리의 연결이며 실제 성공을 자동으로 보장하지 않는다. 직접 제작한 개념도이며 본문의 조건과 함께 읽는다.
y_0=0 rad/α=0.25에서 다음 입력이 계속 1 rad면 y_1=0.25 rad, y_2=0.4375 rad다. α가 작을수록 이전 상태의 영향이 오래 남고 갑작스러운 변화에 늦게 반응한다. α=1이면 입력을 그대로 낸다. 초기 상태를 0으로 둘지 현재 측정/첫 유효 목표로 둘지는 다른 계약이다. 기존 교육용 EMA leaf는 첫 입력으로 초기화하므로 이 y_0=0 계산과 구별한다.
필터 계수를 고정한 채 업데이트 주기를 바꾸면 실제 초 단위의 응답이 달라진다. reset/모델 교체·정지 뒤 오래된 상태가 남으면 새로운 시작에 맞지 않을 수 있다. 초기화 값·대기/램프와 실제 상태 확인을 설계한다. EMA의 지연을 무조건 줄이려고 α를 크게 하면 원래 줄이려던 흔들림이 다시 커질 수 있어 과제 응답/기한·추종을 함께 평가한다.
Temporal ensemble은 같은 실행 시각의 후보를 모은다
action chunk는 한 번의 추론이 여러 미래 실행 시각의 값을 예측한 것이다. ensemble에서는 서로 다른 생성 시각의 chunk에서 지금 실행할 같은 시각/같은 성분의 후보를 골라 합친다. 단순히 각 chunk의 첫 행을 평균하거나 현재 목표와 다음 시각 목표를 섞지 않는다. absolute/delta·단위/frame·기준과 모델/정규화 버전이 달라지면 먼저 공통 의미가 되는지 검증한다.
후보를 생성 시각이 오래된 순서로 a_0=0.2, a_1=0.4, a_2=0.8 rad라고 하자. 가중치 w_i를 합으로 정규화해 y=Σ(w_i a_i)/Σw_i로 합성한다. 현재 LeRobot ACT 공식 구현은 oldest 인덱스 0에 w_i=exp(−κi)를 쓰며 양수 κ는 오래된 후보를 우선한다. 원 ACT의 해당 집계 코드도 오래된 생성 순서에 같은 방향을 사용한다. 공식 기본 계수와 아래 계산용 계수를 동일시하지 않는다.
교육용 κ=ln 2이면 오래된 순서의 비정규화 가중치는 1/0.5/0.25다. 합성값은 (0.2+0.2+0.2)/1.75≈0.342857 rad다. 반면 기존 교재 leaf들은 후보 age/상대 생성 시차에 exp(−양수×age)를 사용해 새로운 후보를 우선한다. 같은 후보에서 가중치가 0.25/0.5/1이면 (0.05+0.2+0.8)/1.75=0.6 rad다. 두 계약을 '양수면 최신 우선' 하나로 설명하면 틀리다.
균등 가중치는 1.4/3≈0.466667 rad다. 어느 값이 과제에서 더 적절한지는 후보 품질/지연·학습/실행과 관련되어 단순히 최신/오래된 쪽이 항상 맞지는 않는다. 자료가 없는 시각/만료·동일 버전 여부와 reset 때 후보 이력을 어떻게 처리할지도 명시한다. zero 값을 유효한 행동으로 쓸 수 있으므로 0이라는 값만으로 미기입 여부를 판정하지 않는 명시적 유효 mask/ID가 필요하다.
속도/위치·토크를 물리 계약으로 제한한다
가상 절대 관절 명령의 이전 적용값 q_prev=0.4 rad, 주기 T=0.02 s, 명령 변화율 한계 v_max=0.5 rad/s라면 허용 변화는 v_max T=0.01 rad다. 후보 0.6 rad를 속도 단계에서 0.41 rad로 줄인다. 위치 상한이 0.405 rad라면 최종 0.405 rad는 위치를 만족하고 이전 명령에서 0.005 rad 변해 속도 단계도 만족한다. 이 예는 단순 한 축·유효한 이전 상태와 고정 주기 가정이다.
별도 토크 명령 후보 0.8 N·m에 절대 한계 0.5 N·m를 주면 숫자 제한 결과는 0.5 N·m다. 위치 명령을 clip한 것만으로 실제 토크가 이 범위라는 증거는 아니다. 전류/토크 환산·드라이브 모드·부하/접촉과 실제 상태/정격이 필요하다. 실제 장치에 이 숫자를 설정하라는 뜻이 아니다.
제한을 순서대로 걸었다고 모든 제약이 함께 성립하는 것도 아니다. q_prev=0.42 rad인데 같은 변화 한계 0.01 rad라면 다음 명령 허용 구간은 [0.41,0.43]이다. 위치 상한 0.405와 교집합이 없다. 마지막에 0.405로 잘라도 변화가 0.015 rad라 앞의 변화율 조건을 깨뜨린다. 이런 상태는 조용히 정상 명령으로 처리하지 않고 충돌 제약/현재 상태를 기록해 해당 감독/복구 정책으로 넘긴다. 즉석 큰 점프를 복구라고 승인하지 않는다.
평균이나 끝점 검사로 전체 경로를 승인하지 않는다
기하 작업공간도 볼록하지 않을 수 있다. 평면의 원점 반경 0.5 m 안이 금지 구역이라면 점 (−1,0)/(1,0)은 각각 밖에 있지만 평균 (0,0)은 금지 구역이다. 두 유효 후보의 평균이 항상 유효하지 않다는 반례다. 관절 평균은 FK가 비선형이므로 TCP의 Cartesian 평균과 같다고 가정하지 않는다. 끝점이 유효해도 그 사이 링크/물체·접근 경로가 금지 공간을 지날 수 있다.
센서/현재 상태가 미상이거나 관측이 만료되면 필터가 숫자를 내도 실행 전제는 미상이다. raw/ensemble/EMA·각 제한 뒤/최종 명령과 실제 관측, 시각/버전·거부 원인/필터 상태를 나눠 기록한다. 정지/포화·재개 시 내부 상태와 물리 현재 상태를 맞추고 새 관측·제약/감독으로 재검증한다. 기존 6.3 출력 안정화와 6.4 감독기의 교육 예제는 이 검사 경로를 이해하는 보충이며 인증된 안전 제어기나 실제 제동 보장을 뜻하지 않는다.