왜 로봇 프로젝트는 데모보다 평가 기준을 먼저 만드는가

로봇이 몇 걸음 움직이는 장면을 보면, 사람은 먼저 “됐다”는 말을 하고 싶어집니다. 저 역시 보행 정책을 다룰 때 처음에는 넘어지지 않고 앞으로 가는 장면을 가장 눈에 띄는 결과로 봤습니다. 하지만 하나의 데모가 좋아 보인다는 것과 다음 단계로 넘길 만한 정책이라는 판단은 다른 문제였고, 이 차이를 구분하지 않으면 실험을 오래 돌려도 무엇을 배웠는지 남지 않는다는 점을 확인하게 됐습니다.

한 가지 장면으로는 정책을 판단할 수 없었습니다

보행에서 ‘넘어지지 않았다’는 조건은 분명 필요합니다. 다만 그 조건만 남기면, 로봇이 제자리에서 버티는지 실제로 원하는 방향으로 이동하는지, 특정 상황에서만 우연히 괜찮았는지는 알 수 없습니다. 그래서 한 장면을 보고 결론을 내리기보다, 작업의 목적을 여러 관찰 항목으로 나누어 보기로 했습니다. 이 선택 덕분에 겉으로는 비슷해 보이는 결과도 무엇이 달라졌는지 설명할 기준이 생겼습니다.

여기서 평가 기준은 로봇을 점수로 줄 세우기 위한 표가 아닙니다. 제가 먼저 물어야 할 질문을 문장으로 바꾸는 장치에 가깝습니다. 예를 들어 앞으로 이동해야 하는 작업이라면, ‘얼마나 멀리 갔는가’만큼이나 ‘의도하지 않은 방향으로 벗어나지 않았는가’와 ‘자세가 무너지지 않았는가’가 함께 중요합니다. 무엇을 함께 볼지 정해야, 한 항목의 개선이 다른 실패를 가리는 일을 막을 수 있습니다.

실험을 하다 보면 어떤 후보는 넘어지지 않고, 다른 후보는 더 멀리 가는 식으로 장점이 엇갈립니다. 이때 하나만 골라 보여 주는 쪽은 데모를 만들기에는 쉬워도, 다음 실험의 방향을 정하기에는 위험합니다. 저는 현재 작업에서 중요한 조건을 잃은 후보는 다음 기준점으로 승격하지 않기로 했습니다. 좋은 장면 하나를 남기는 대신 비교의 기준을 잃는 선택은, 나중에 같은 문제를 다시 만났을 때 더 큰 비용으로 돌아올 수 있기 때문입니다.

‘승격’은 다음 실험이 비교할 출발점을 정한다는 뜻입니다. 기준점이 흔들리면 새로 바꾼 요소가 정말 영향을 준 것인지, 우연히 조건이 달랐던 것인지 구분하기 어렵습니다. 그래서 결과가 조금 나아 보여도, 처음에 정한 핵심 조건을 지키지 못했다면 보류로 남깁니다. 이 보류는 실패를 감추는 말이 아니라, 지금 결과가 무엇까지 말할 수 있는지 정직하게 표시하는 방법입니다.

평가 항목은 구현보다 먼저 완성될 필요가 없습니다

처음부터 완벽한 평가표를 만들 수는 없었습니다. 어떤 움직임을 이상하다고 느꼈을 때, 그 느낌을 바로 하나의 수치로 바꾸기도 어려웠습니다. 그래서 현재 볼 수 있는 항목으로 시작하고, 실험에서 놓친 문제가 보이면 그때 기준을 보완하는 쪽을 택했습니다. 기준을 고정된 규칙으로 여기지 않으니, 결과를 억지로 통과시키기보다 평가 자체가 부족했던 지점도 함께 발견할 수 있었습니다.

이 과정에서 중요한 것은 기준을 결과 뒤에 맞춰 바꾸지 않는 일입니다. 새 기준이 필요하다면, 어떤 관찰이 기존 기준으로는 설명되지 않았는지 먼저 기록해야 합니다. 그 뒤에 바뀐 기준으로 이전 결과를 다시 읽어 보면, 정책이 좋아진 것인지 평가가 달라진 것인지 구분할 수 있습니다. 이 순서를 지키는 것이 실험을 반복 가능한 판단으로 바꾸는 최소한의 장치라고 생각합니다.

이 블로그에서는 결과 화면만 올리고 끝내지 않으려 합니다. 어떤 질문을 확인하려 했는지, 무엇을 통과 조건으로 두었는지, 결과가 왜 보류되었는지를 함께 남기는 편이 다음 작업에도 더 쓸모 있기 때문입니다. 모든 실험 수치나 구현 세부를 공개하지는 않더라도, 판단의 구조는 공유할 수 있습니다. 일반 독자가 로봇 실험을 볼 때도 “움직였다” 다음에 어떤 질문을 더 해야 하는지 함께 볼 수 있기를 바랍니다.

오늘 남기는 결론은 간단합니다. 로봇 프로젝트에서 평가는 마지막에 붙이는 합격 도장이 아니라, 무엇을 다음에 만들고 무엇을 아직 만들지 말아야 하는지를 정하는 기준입니다. 다음에는 이 기준이 연구 노트와 코드, 실험 기록 사이에서 어떻게 이어지는지 더 구체적으로 정리해 보려 합니다.

실제 G1 보행에서는 무엇을 gate로 만들었나요

초기에는 학습 보상, 에피소드 길이와 넘어짐 여부를 중심으로 체크포인트를 골랐습니다. 하지만 점수가 오르면서도 발이 교차하거나 진행 방향이 돌아가고, 허리와 팔을 과하게 쓰는 정책이 남았습니다. 그래서 데모를 본 뒤 기준을 만드는 대신, 다음 학습을 시작하기 전에 통과해야 할 평가 행렬을 고정했습니다. 이 행렬은 이동 성능과 안전, 보행 형태, 연속성, 사람의 화면 검토를 서로 다른 질문으로 나눕니다.

평가 축확인한 값통과 이유
재현성3개 고정 시드, 24개 경로 조건한 장면의 우연을 줄임
안전낙상 0회, 발 교차 0회거리만 늘린 불안정 정책 제외
연속성30초 연속 주행짧은 에피소드의 착시 제거
명령 추종1.1m/s 명령에서 30.673m 이동멈춰 서서 생존한 정책 제외
형태발 간격·어깨 균형·팔-다리 상관상체 고정이나 비틀림 확인
시각 검토Isaac Sim 추적 카메라수치가 놓친 발 디딤과 자세 확인
표 1. 첫 전진보행 체크포인트를 보존할 때 사용한 acceptance gate. 수치는 이 시뮬레이션 조건의 비교 기준이며 실제 로봇 성능을 뜻하지 않습니다.

숫자 하나로 통과시키지 않고, 멈추는 기준도 함께 뒀습니다

1.1m/s 명령에서 30초 동안 약 30.7m를 이동했다는 숫자만 보면 체크포인트를 바로 선택할 수 있어 보입니다. 그러나 같은 거리를 발을 교차하며 가거나 상체를 크게 비틀며 갈 수도 있습니다. 그래서 연속 trace에서 양발 사이 최소 여유 약 0.23m, 좌우 어깨 움직임의 균형 약 0.94, 반대쪽 팔과 다리의 상관 약 0.88~0.90을 함께 확인했습니다. 이 값들도 자연스러움을 완전히 정의하지 못하므로 마지막에는 발과 지면 접촉이 보이는 재생 화면을 검토했습니다.

학습 로그
후보 발견
고정 평가
속도·경로
형태 검사
발·허리·팔
연속 trace
30초 유지
사람 검토
보존 또는 기각
앞 단계의 통과가 다음 단계의 생략을 허용하지 않습니다.

강화학습은 더 오래 돌리면 좋아질 것처럼 보여 승인 뒤에도 PPO를 계속하기 쉽습니다. 하지만 이전 실험에서는 학습 보상이 오르는 동안 고정 평가의 경로와 형태가 나빠지는 일이 있었습니다. 그래서 첫 기준선을 통과한 체크포인트와 설정을 동결하고, 새로운 정량 또는 시각 결함이 기록되기 전에는 추가 학습을 막았습니다. 평가 기준은 실패를 거르는 장치일 뿐 아니라 이미 얻은 성능을 불필요하게 잃지 않게 하는 정지 조건이 되었습니다.

아직 통과하지 않은 문

이번 gate가 증명한 범위는 가상 평지의 직선 전진 보행입니다. 회전, 측면 이동, 외란 회복, WBC와의 결합, 실제 로봇 배포는 별도의 평가 계약이 아직 필요합니다. 또한 체크포인트가 보존됐어도 외부 실행 계층과 관측·행동 순서가 같은지 확인하기 전에는 배포 준비 완료로 부르지 않습니다. 오늘의 배움은 데모보다 평가 기준을 먼저 만든다는 말이 성공 숫자를 하나 정하는 일이 아니라, 통과 범위와 멈출 조건을 함께 고정하는 일이라는 것입니다.


함께 읽을 글: 보행 정책의 생존율만으로는 평가할 수 없는 것들 · 3주 동안 학습했는데도 걷지 못한 이유 — 보행 문제가 아니라 학습 문제를 잘못 정의했다

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤