hello, robot

파라미터를 바꿔 가며 로봇을 돌려 보는 일은 실험처럼 보여요. 그런데 대부분은 실험이 아니라 시행착오예요. 둘을 가르는 기준이 있어요.

다섯 칸을 적을 수 있으면 실험이에요

실험 하나를 돌릴 때마다 이 다섯 칸을 적어요. 적을 수 없으면 아직 실험이 아니에요.

내용
독립변수내가 바꾸는 것 하나
고정변수안 바꾸는 것 전부
종속변수재는 것
예상돌리기 전에 적기
관측실제로 나온 것

이 중 둘이 특히 자주 빠져요. 고정변수와 예상이에요. 그리고 그 둘이 빠지면 실험이 성립하지 않아요.

예상을 미리 적는 이유

가장 지키기 어렵고 가장 중요한 칸이에요.

돌린 뒤에 예상을 적으면 결과에 맞춰 기억이 조정돼요. 숫자를 보고 나면 “그럴 줄 알았다”가 되고, 그러면 아무것도 안 배워요. 시간과 계산 자원은 썼는데 남는 게 없죠.

미리 적어 두면 예상과 관측이 어긋난 칸이 남아요. 그게 이 실험의 실제 수확이에요. 맞은 칸은 이미 알던 걸 확인한 것뿐이고, 틀린 칸이 새로 알게 된 거거든요.

그래서 예상이 다 맞는 실험은 배운 게 적은 실험이에요. 이게 직관과 반대라 처음엔 이상하게 느껴져요.

고정변수를 적으면 목록이 길어져요

바꾸는 것 하나는 쉽게 적혀요. 문제는 안 바꾸는 것 전부예요.

시뮬레이션에서 관절 추종 오차를 잰다면 고정해야 할 것이 이만큼 나와요. 궤적 파일, 제어기 게인, 물리 스텝 크기, 솔버 설정, 초기 자세, 난수 시드요. 적어 보기 전에는 이렇게 많은지 몰라요.

목록을 적는 것 자체가 효과가 있어요. 적다 보면 “이건 지금 고정돼 있나?” 싶은 항목이 나와요. 확인해 보면 안 고정돼 있는 경우가 실제로 있고, 그걸 모른 채 돌렸으면 결과를 해석할 수 없었겠죠.

난수 시드가 대표적이에요. 고정 안 하면 같은 설정으로 두 번 돌려도 결과가 달라요. 그 차이가 파라미터 때문인지 시드 때문인지 구분이 안 돼요.

한 번에 하나만 바꿔요

둘을 동시에 바꾸면 어느 쪽이 증상을 냈는지 영원히 몰라요.

두 개를 바꿔서 좋아졌다고 해도 실은 한쪽이 크게 좋게, 다른 쪽이 조금 나쁘게 만든 것일 수 있어요. 그러면 나쁜 변경을 좋은 것으로 기억한 채 다음으로 넘어가죠.

이건 디버깅 원칙과 같은 규율이에요. 여러 곳을 동시에 고치지 않는다는 그 원칙이요. 급할 때 어기고 싶어지는데, 어기면 시간이 더 걸려요.

세 궤적을 겹쳐 봐요

구체적인 예로 시뮬레이션과 실물을 대조하는 실험을 볼게요. 같은 명령에 대해 궤적이 셋 나와요.

궤적의미
명령목표로 준 값
실물 응답진짜 로봇이 도달한 값
시뮬 응답모델이 도달한 값

여기서 두 가지 차이가 각각 다른 걸 말해요. 명령과 실물의 차이는 실물 서보의 추종 한계이고, 실물과 시뮬의 차이가 모델과 현실의 격차예요.

둘을 섞으면 안 되는 이유가 분명해요. 모델을 아무리 잘 맞춰도 첫 번째 차이는 안 없어지거든요. 모델이 나쁜 게 아니라 실물이 원래 그런 것인데, 구분 안 하면 모델을 계속 손보게 돼요.

일부러 망가뜨려 보는 실험

배우기 좋은 실험 하나를 소개할게요. 파라미터를 알면서 틀리게 넣고 증상을 재는 거예요.

물성치를 예로 들면 세 조건으로 돌려요. 제대로 측정한 값, 아무 근거 없는 기본값, 그리고 0에 가까운 값이요. 예상은 이렇게 적어요. 두 번째는 추종이 크게 무너지고, 세 번째는 모델이 아예 붕괴한다.

이게 값진 이유는 문서로 읽은 명제를 자기 손의 숫자로 재현하기 때문이에요. “이 값이 틀리면 이런 증상이 난다”를 읽어서 아는 것과, 그 증상을 직접 만들어 보고 지표가 얼마나 튀는지 본 것은 나중에 진단 속도가 달라져요.

그런데 이 실험의 진짜 목적은 그 파라미터 자체가 아니에요. 조건을 하나만 바꾸고 나머지를 고정한 뒤 지표를 재는 절차를 몸에 익히는 것이죠. 파라미터는 연습 대상일 뿐이고, 같은 구조가 제어기 게인에도 경로 계획 설정에도 그대로 이식돼요.

로봇에서는 멈춰 세울 수 없어요

마지막으로 이 영역 특유의 제약 하나예요.

움직이는 로봇에는 중단점을 걸 수 없어요. 멈춰 세우는 순간 그 상태가 사라지거든요. 관성으로 미끄러지고, 제어 루프가 끊기고, 붙잡고 있던 물체가 떨어져요.

그래서 진단 방식이 달라져요. 기록으로 남기고 나중에 재생하며 분석해요. 실험 설계가 중요해지는 이유가 여기 있어요. 실행 중에 들여다볼 수 없으니 무엇을 기록할지를 돌리기 전에 정해야 하죠.

다섯 칸을 미리 적는 습관이 여기서도 값을 해요. 종속변수를 미리 정하면 그걸 기록하게 되고, 안 정하면 다 끝난 뒤에 “그걸 안 찍었네”를 알게 되거든요.

기록의 시간축을 다루는 이야기는 rosbag2 — 시계 축이 어긋난 기록은 조용히 틀려요에, 망가뜨려 보는 대상이 되는 물성치는 URDF 관성 텐서 — 기본값이 링크를 콘크리트로 만드는 칸에 있어요.