고난도 산업 현장의 로봇 인식 시스템: 세 번의 센서 교체와 판단 기준
산업 현장의 로봇 인식 시스템은 센서를 잘 구하는 것만으로 완성되지 않습니다. 이 아티클은 디든로보틱스가 도장 강판으로 둘러싸인 작업 환경에서 센서를 네 단계로 검증하고, 그 위에 자체 평가 기준과 좌표계 통합 파이프라인을 올리기까지의 기록입니다.

Blog
로봇이 산업 현장에서 한 발을 내딛으려면 먼저 앞에 무엇이 있는지 알아야 합니다. 그런데 사방이 도장된 강판으로 이루어진 공간에서는, 성능 좋은 센서를 달아 놓는 것만으로 이 정보가 얻어지지 않습니다. 빛이 표면에서 흩어지지 않고 한 방향으로만 튕겨 나가는 탓에, 센서가 기대하는 신호 자체가 돌아오지 않기 때문입니다. 여기에 용접 아크광까지 수시로 터진다면, 센서가 제대로 된 기능을 하기는 더욱 어렵습니다.
이런 환경이 특정 산업에서만 찾아볼 수 있는 것은 아닙니다. 대형 금속 구조물을 조립하고 용접하는 현장이라면 어디든 표면은 빛을 정반사하고, 공간은 좁고, 광원은 예측하기 어렵습니다.
까다로운 점은 여기서 어떤 센서가 버티고 어떤 센서가 무너지는지를 데이터시트만으로는 알 수 없다는 것입니다. 사양서의 측정 범위와 정확도는 일반적인 표면을 전제로 한 값이고, 고반사 금속면과 용접 아크광이 함께 있는 조건은 그 전제 밖에 있습니다.
그래서 디든로보틱스는 로봇에 필요한 센서를 단순히 카탈로그에서 고르지 않았습니다. 실제 작업 환경에서 센서마다 직접 실측하고, 그 데이터로 인식 알고리즘까지 돌려본 후 판단했습니다. 센서 하나의 성능이 아니라, 그 센서가 만든 데이터를 토대로 제어가 제대로 동작하는지가 기준이었습니다.
검증은 총 네 단계로 진행됐습니다.
단계 | 방식 | 해결 | 한계 |
1 | 액티브 스테레오 카메라 | 무늬 없는 표면에 적외선 패턴을 심어 대응점 확보 | 용접 아크광에 깊이 지도 붕괴 |
2 | iToF 깊이 카메라 | 용접광에 강건, 넓은 시야각 | 금속 정반사로 데이터 누락, 좁은 동작 온도 범위 |
3 | SPAD 수신 라이다 | 용접광과 정반사를 모두 통과, 3차원 직접 취득 | 고반사면에서 큰 노이즈 |
4 | APD 수신 라이다 (선정) | 고반사면에서도 신호 유지, 거리가 멀어질수록 정밀 | 포인트 밀도는 상대적으로 낮음 |
네 단계를 가른 것은 '수신 소자가 강한 빛을 어떻게 처리하는가'였습니다. 판단 기준은 세 가지였습니다. 첫째, 평가 방법을 먼저 정의했습니다. 점군이 실제 평면에서 얼마나 벗어나는지를 지표로 삼아 세 곳의 작업 환경에서 같은 절차로 측정했습니다. 둘째, 밀도가 아닌 정확도를 택했습니다. 탈락한 라이다는 같은 영역에서 점을 훨씬 많이 얻었지만, 그 점들이 실제 평면 위아래로 퍼져 있었습니다. 셋째, 센서 출력이 아닌 알고리즘의 동작으로 판정했습니다. 점군을 구조물 설계 도면에 맞춰 보는 정합 단계까지 돌려 본 뒤 확정했습니다.
하지만 센서를 정했다고 해서 로봇의 인식 시스템이 바로 완성되는 것은 아닙니다. 서로 다른 방향을 보는 여러 대의 센서를 하나의 좌표계로 묶어야 하고, 그렇게 얻은 데이터를 제어가 쓸 수 있는 형태로 넘겨야 합니다.
하드웨어가 정한 센서 검증의 시작
처음 시도한 센서는 카메라 계열이었습니다. 인식 성능이 가장 뛰어나서가 아니라, 당시 디든로보틱스의 사족 보행 로봇 DIDEN Spider의 기구 설계로는 라이다를 장착할 공간과 구조가 나오지 않았기 때문입니다. 카메라가 라이다보다 훨씬 저렴하다는 점도 먼저 시도해 볼 이유가 됐습니다.
이 제약은 오래 가지 않았습니다. 하드웨어 설계를 개선하면서 라이다를 달 수 있게 됐고, 그 시점에 후보군 자체가 달라졌습니다. 인식이 하드웨어의 조건을 따라가고, 다시 하드웨어가 인식의 요구를 받아 바뀐 셈입니다. 디든로보틱스가 구동기와 학습을 하나의 문제로 놓고 풀어 온 것과 같은 구조가 센서에서도 반복됐습니다.
[사족·이족·휴머노이드가 같은 방식으로 걷는 이유: 구동기와 학습의 공동 설계]
네 단계의 검증
네 단계를 거치는 동안 문제를 해결하고, 또 새로운 문제를 마주하는 과정을 반복했습니다. 앞 단계에서 막혔던 문제는 다음 단계에서 해결됐고, 대신 그때까지 보이지 않던 문제가 새로 드러났습니다.
액티브 스테레오: 용접광에 깨진다
시작은 액티브 스테레오 카메라(active stereo camera)였습니다.
스테레오 카메라는 사람이 두 눈으로 입체감을 느끼는 원리를 그대로 따라갑니다. 나란히 놓인 두 카메라가 같은 지점을 찍으면 그 지점의 픽셀 위치가 조금씩 달라지는데, 이 차이를 시차(disparity)라고 부릅니다. 거리는 이 시차 하나로 계산됩니다. 렌즈의 초점거리와 두 카메라 사이의 간격을 미리 알고 있으면, 시차가 클수록 가깝고 작을수록 멀다는 관계가 그대로 거리로 환산되기 때문입니다. 다만 시차는 거리에 반비례해 줄어듭니다. 멀어질수록 같은 픽셀 오차가 훨씬 큰 거리 오차로 불어난다는 뜻입니다.
여기서 관건은 '같은 지점'을 찾는 일입니다. 두 카메라를 수평으로 정렬하면 대응하는 점이 같은 가로줄 위에만 있으므로 탐색이 1차원으로 줄어들고, 그 줄에서 주변 무늬가 가장 비슷한 자리를 고르면 됩니다. 문제는 애초에 무늬가 없는 표면입니다. 흰 벽이나 단색 강판에서는 어느 픽셀이 어느 픽셀과 짝인지 판단할 근거가 사라집니다. 그래서 액티브 스테레오 카메라는 적외선 패턴을 직접 쏘아 인공적인 무늬를 심습니다. 이를 통해 평상시에는 안정적으로 깊이 지도를 확인할 수 있었습니다.
문제는 용접 상황이었습니다. 아크광이 터지는 순간 두 카메라가 받아들이는 빛의 양이 장면 전체에서 서로 다르게 흔들립니다. 매칭의 전제가 무너지면 깊이 지도 전체가 망가집니다. 실측에서도 평상시 멀쩡하던 깊이 지도가 용접광 노출 구간에서 무너지는 것이 그대로 확인됐고, 용접이 상시로 일어나는 환경에서는 쓸 수 없다는 결론이 나왔습니다.
iToF: 용접광은 넘었지만 강판에서 값이 사라진다
다음 후보는 iToF(Indirect Time-of-Flight, 간접 비행시간 측정) 방식의 깊이 카메라였습니다. 빛을 쏘고 돌아오는 시간으로 거리를 재기 때문에 무늬가 있든 없든 거리를 얻을 수 있었고, 시야각도 이전 카메라보다 훨씬 넓었습니다.
iToF는 돌아온 빛의 위상이 얼마나 밀렸는지로 거리를 계산합니다. 밝기가 사인파처럼 변조된 적외선을 쏘고, 시간을 직접 재는 대신 위상차로 간접 측정하는 방식입니다. 일반적인 CMOS(Complementary Metal-Oxide-Semiconductor) 소자를 쓸 수 있어 조밀한 고해상도 거리 이미지를 비교적 저렴하게 얻는 것이 장점입니다.
그리고 이 방식은 용접광을 실제로 견뎠습니다. 좌우 이미지에서 대응점을 찾는 알고리즘 단계가 없으니, 매칭이 틀어져 깊이 지도가 무너지는 일 자체가 생기지 않습니다. 아크광이 직접 들어온 화소는 값을 잃었지만 그 주변 영역은 정상으로 남았습니다. 스테레오에서 겪은 문제가 여기서 풀린 것입니다.
대신 강판 자체가 걸림돌이 됐습니다. iToF 계열 센서가 거리를 재려면 쏜 빛이 표면에서 여러 방향으로 흩어지고 그중 일부가 센서 쪽으로 돌아와야 합니다. 그런데 매끄러운 금속은 거울처럼 입사각과 반사각이 같은 방향으로만 빛을 튕겨냅니다. 이 환경에서 iToF가 겪은 문제는 세 갈래였습니다.
드롭아웃(dropout): 센서 방향으로 돌아오는 빛이 거의 없어 그 지점의 거리값이 아예 생성되지 않습니다.
포화: 반대로 강판이 센서를 정면으로 마주보면 빛이 너무 강하게 돌아와 수광 소자가 감당하지 못하고, 값이 튀거나 마찬가지로 사라집니다.
멀티패스: 물체에서 곧장 돌아온 빛에 벽이나 바닥을 거쳐 온 빛이 섞이면 위상차 값이 오염됩니다. 금속 구조물 내부는 빛이 강하게 튕기는 데다 공간까지 좁아, 이런 오차가 생기기 쉬운 조건을 모두 갖추고 있습니다.
그 여파는 인식 알고리즘에서 드러났습니다. 특히 구조물 사이의 액세스 홀을 지나가는 것처럼 세밀한 지형 판단이 필요한 동작에서 위치 추정 성능이 크게 떨어졌습니다. 판단해야 할 자리의 적합한 데이터가 남지 않으니, 이를 바탕으로 한 계산 자체가 영향을 받는 문제였습니다.
같은 센서라도 표면 상태가 결과를 가른다는 사실을 확인한 이후에는, 프라이머 도장 강판을 기준으로 비교 시험을 설계했습니다. 강판에 프라이머가 도포되면 표면이 빛을 흩뿌리는 쪽으로 성질이 바뀌어 정반사가 줄고, 센서 데이터도 정상적으로 들어오기 때문입니다.
센서를 바꾼 데에는 다른 이유도 있었습니다. iToF 방식의 깊이 카메라는 동작 보증 온도 범위가 좁아, 실제 제품으로 현장에 나가는 조건을 놓고 보면 여유가 부족했습니다. 마침 하드웨어 설계 개선으로 라이다를 달 수 있게 된 시점이었기 때문에, 다음 검증으로 넘어가게 되었습니다.

iToF 깊이 카메라가 도장 강판을 본 결과. 검게 비어 있는 영역이 정반사로 거리값이 생성되지 않은 자리다.

사족 보행 로봇 DIDEN Spider가 구조물 사이의 액세스 홀을 지나가는 모습. 세밀한 지형 판단이 필요한 구간이라 데이터가 비면 위치 추정이 곧바로 흔들린다.
SPAD 수신 라이다: 고반사면에서 노이즈가 커진다
세 번째는 라이다(LiDAR)였습니다. 라이다는 레이저를 능동적으로 쏘고 반사를 받아 거리를 직접 재기 때문에 조도나 표면 무늬의 영향을 적게 받고, 결과도 픽셀 이미지가 아닌 3차원 좌표점의 집합으로 나옵니다. 용접광 시험에서도 문제가 없었습니다.
특히 라이다가 사용하는 방식인 dToF(Direct Time-of-Flight)는 광자가 도달하는 순간을 직접 잡아내므로, 위상차로 시간을 추정할 때 생기는 보간 오차가 구조적으로 없습니다. 그리고 광자를 잡아내는 수신 소자 가운데 비교적 최근에 실용화되어 활발하게 제품이 출시되고 있는 것이 있습니다. 바로 SPAD(Single-Photon Avalanche Diode)입니다. 광자 한 개가 도달해도 곧바로 반응하도록 설계된 소자라서, 아주 약한 반사광까지 잡아내어 먼 거리를 측정할 수 있다는 장점이 있으며, 더 많은 포인트 밀도를 가진다는 특성도 함께 지니고 있습니다.
디든로보틱스가 처음 선정한 라이다도 이 계열이었습니다. 사양만 놓고 보면 유리한 조건이 많았습니다. 수평 360도의 넓은 시야, 넓은 동작 온도 범위, 촘촘한 포인트 밀도를 갖추고 있었습니다.
하지만 실측 결과는 사양과 달랐습니다. 도장 강판을 상대로 측정한 거리값에 큰 노이즈가 실렸고, 로봇이 밟을 자리와 벽까지의 거리를 판단하기에는 감당하기 어려운 크기였습니다. 강한 반사광이 들어올 때 고감도 수신 소자가 포화되는 특성과 부합하는 결과였습니다. 약한 빛을 잡아내도록 설계된 예민함이 고반사 환경에서는 오히려 발목을 잡은 셈입니다.
세 센서는 서로 다른 지점에서 걸렸지만, 근본 원인은 같았습니다. 도장 강판이 빛을 되돌려주는 방식을 셋 다 감당하지 못했습니다.

일반 표면은 빛을 사방으로 흩뿌려 일부가 센서로 돌아오지만, 매끄러운 강판은 한 방향으로만 튕겨낸다. 아래 세 장은 그 결과로 거리값이 비거나 튄 실제 깊이 지도이다.
수신 소자 구조에서 갈린 최종 센서 선정
마지막에 남은 센서 역시 라이다였습니다. 다만 수신부의 구조가 다른 라이다였습니다.
SPAD 수신부 | APD 수신부 | |
동작 | 광자 한 개에도 즉시 반응 | 들어온 빛의 양에 비례해 증폭 |
강점 | 약한 반사광, 장거리, 저반사 물체, 높은 포인트 밀도 | 강한 빛에서도 세기 차이를 유지 |
고반사 금속에서 | 과도한 수광으로 포화되기 쉬움 | 신호가 무너지지 않음 |
약한 빛을 잡아내는 능력은 SPAD가 앞서고, 그래서 장거리나 저반사 물체에서는 SPAD가 유리합니다. 반대로 도장 강판처럼 되돌아오는 빛의 세기가 극단적으로 갈리는 환경에서는 APD(Avalanche Photodiode)의 성질이 결과를 갈랐습니다.
평가 방법부터 직접 만들었다
디든로보틱스는 두 센서를 직접 측정해 비교했습니다. 같은 조건에서 견주려면 무엇을 재고 무엇을 좋다고 볼지부터 정해야 했고, Perception팀이 그 기준을 세운 다음 세 곳의 현장을 돌며 측정을 수행했습니다.
기준으로 삼은 것은 평면 잔차입니다. 평평한 벽을 센서로 재면 점들이 하나의 평면 위에 나란히 찍혀야 하지만, 실제로는 조금씩 앞뒤로 흩어집니다. 이 흩어진 정도가 평면 잔차이고, 값이 작을수록 센서가 표면을 정확하게 읽은 것입니다. 점군에서 평평한 강판 영역만 잘라내고, 그 점들에 가장 잘 맞는 평면을 수학적으로 구한 다음, 각 점이 그 평면에서 얼마나 떨어져 있는지를 재는 과정을 통해 측정합니다.
이 지표를 고른 이유는 두 가지입니다. 하나는 벽이 정확히 어디에 있는지 미리 재어 둘 필요가 없다는 점입니다. 강판이 평평하다는 사실 하나만 있으면 되니 현장에서 반복하기 쉽습니다. 다른 하나는 이 값이 로봇의 판단과 직접 이어진다는 점입니다. 로봇은 벽과 바닥이 어디에 있는지를 기준으로 발을 딛고 자세를 잡습니다.
시험은 프라이머 도장 강판으로 둘러싸인 세 곳의 실제 작업 환경에서 진행했습니다. 벽면과 바닥면을 대상으로 설치 거리와 높이, 관측 방향을 조합했고, 벽면은 약 15 cm의 초근접 조건까지 포함했습니다.
결과는 한 방향으로 모였습니다. 벽과 바닥을 합친 여섯 가지 조합 전부에서 APD 수신 라이다의 평면 잔차가 낮았고, 실내인지 실외인지에 따른 순위 변동도 없었습니다.
거리에 따라 방향이 갈린다
평균값보다 눈여겨볼 것은 거리에 따른 경향입니다. 두 센서가 정반대로 움직였습니다. APD 수신 라이다는 거리가 멀어질수록 오차가 오히려 줄어 약 0.9 m 구간에서 가장 정밀했고, SPAD 수신 라이다는 반대로 멀어질수록 오차가 커져 같은 구간에서 눈에 띄게 벌어졌습니다. 근거리인 0.3 m 부근에서는 두 센서가 비슷한 수준이었고, 일부 조건에서는 SPAD 쪽이 조금 낮기도 했습니다.
이 차이는 로봇이 실제로 쓰는 거리와도 맞물립니다. 로봇이 벽과 구조물을 보고 자기 위치를 잡을 때는 0.6-0.9 m 구간의 측정을 주로 쓰는데, 두 센서의 격차가 가장 크게 벌어진 구간이 여기였습니다.
점군을 옆에서 본 단면으로 보면 차이가 육안으로도 드러납니다. APD 쪽 점군은 거리가 멀어질수록 기준 평면에 얇게 수렴하는 반면, SPAD 쪽 점군은 기준면을 따라 물결치듯 굴곡지거나 위아래로 두껍게 퍼졌습니다.
초근접 조건에서도 갈렸습니다. 약 15 cm에서 SPAD 수신 라이다는 한 환경에서 다른 구간보다 큰 오차를 보였고, 다른 조건에서는 기준면에서 크게 벗어난 이상점이 관찰되기도 했습니다. 평균값이 비슷해 보여도, 밟을 자리를 판단하는 로봇에게는 이런 이상점 하나가 더 위험할 수 있습니다.

거리가 멀어질수록 한쪽은 오차가 줄고 다른 쪽은 커진다. 로봇이 위치를 잡는 구간이 격차가 가장 큰 구간이었다.

점군을 옆에서 본 단면. 파란 세로선이 실제 벽면 위치이고, 점이 선에 얇게 붙을수록 정확하게 측정한 것이다.
포인트는 더 많았지만, 선택은 정밀도였다
포인트 밀도만큼은 사양대로였습니다. SPAD 수신 라이다는 같은 영역에서 확보되는 점의 개수가 평균 일곱 배 가까이 많았습니다. 밀도만 놓고 보면 분명한 장점입니다.
그럼에도 포인트가 적고 대신 정확한 쪽을 택했습니다. 금속 구조물 안에서 로봇에게 필요한 것은 넓은 영역을 촘촘히 채우는 데이터가 아니라, 벽과 바닥이 실제로 어디에 있는지를 흔들림 없이 말해 주는 데이터이기 때문입니다. 점이 아무리 많아도 그 점들이 실제 평면 위아래로 흩어져 있으면, 그 위에 올린 위치 추정은 그만큼 흔들립니다.
마지막 관문은 정합이었습니다. 이 센서로 얻은 점군을 구조물 설계 도면에 맞춰 보는 단계까지 돌려서, 액세스 홀과 보강재와 벽면 전 구간에서 안정적으로 붙는지를 확인한 다음에 주력 센서로 확정했습니다. 최종 기준은 센서가 데이터를 내놓느냐가 아니라, 그 데이터로 위치 추정이 제대로 서느냐였습니다.
세 번의 교체와 세 곳의 현장 시험 끝에 확정한 구성은 RGB 카메라 네 대와 라이다 두 대입니다. 라이다 두 대가 거리와 형상의 기준을 잡고, 카메라 네 대가 색과 질감을 채웁니다. 카메라는 서로 겹치지 않는 방향을 보도록 배치해 사각지대를 줄였습니다.
여러 대의 눈을 하나로 묶는다
센서를 바꾸면서 데이터의 성격도 달라졌습니다. 깊이 카메라의 출력은 화소마다 거리값이 들어 있는 2차원 깊이 지도이기 때문에, 로봇이 쓰는 3차원 좌표로 옮기려면 카메라의 내부 파라미터를 거쳐 변환해야 합니다. 그 파라미터가 정확하지 않은 만큼의 오차가 결과에 그대로 실립니다. 반면 라이다는 처음부터 3차원 좌표점을 내놓기 때문에 이 변환 단계가 없습니다.
대신 새로운 문제가 생깁니다. 센서를 여러 대 달면 사각지대는 줄어들지만, 각 센서가 자기만의 좌표계로 세상을 보고 있어서 같은 구조물이 센서마다 다른 위치에 있는 것으로 나옵니다. 이 상태로는 하나의 지도로 합칠 수 없고, 센서 종류를 바꿔도 이 문제는 그대로 남습니다. 이것을 푸는 과정이 캘리브레이션입니다.
내부 특성과 바깥 위치
캘리브레이션이 알아내는 값은 두 종류입니다.
내부 파라미터 (intrinsic) | 외부 파라미터 (extrinsic) | |
무엇인가 | 카메라 자체의 고유한 광학 특성 | 센서가 공간에서 놓인 위치와 방향 |
구성 | 초점거리, 주점, 왜곡 계수 | 회전과 이동 |
다시 구해야 하나 | 기기당 한 번 | 센서가 움직이면 매번 |
없으면 | 픽셀이 어느 방향을 향하는지 모름 | 여러 대의 데이터를 합칠 수 없음 |
여기서 왜곡은 두 가지입니다. 렌즈 곡률 때문에 직선이 휘어 보이는 방사 왜곡과 렌즈와 센서가 완벽히 평행하지 않아 생기는 접선 왜곡입니다.
두 값은 순서대로 작동합니다. 외부 파라미터가 공간의 점을 카메라 기준 좌표로 옮기면, 내부 파라미터가 그 점을 픽셀 좌표로 투영합니다. 둘을 모두 알아야 픽셀과 거리값에서 실제 3차원 좌표를 복원할 수 있습니다.
왜 여러 각도에서 찍어야 하는가
이 계산에 흔히 쓰는 도구가 체커보드입니다. 코너점 간격 같은 실제 치수를 미리 알고 있는 평면 패턴이기 때문입니다.
계산이 성립하는 이유는 체커보드가 평면이기 때문입니다. 평면 위의 점들과 이미지에 찍힌 점들 사이의 관계는 행렬 하나로 표현되는데, 그 안에는 카메라의 내부 파라미터와 촬영 당시의 자세가 곱해진 형태로 함께 들어 있습니다. 여러 장에서 각각 이 행렬을 구하면 사진마다 달라지는 자세는 흩어지고, 모든 사진에 공통으로 들어 있는 내부 파라미터만 역산됩니다.
몇 장의 사진이 필요한지는 세어 보면 나옵니다. 사진 한 장이 주는 조건은 두 개인데 구해야 할 내부 파라미터는 다섯 개이므로 이론적으로 최소 세 장이 필요하고, 실제로는 노이즈가 있으니 10장에서 20장을 찍어 풉니다.
여기서 결정적인 조건이 하나 붙습니다. 매번 체커보드를 다른 각도로 기울여야 합니다. 같은 자세로 여러 장을 찍으면 수학적으로 같은 조건이 반복될 뿐, 새로운 정보가 늘지 않기 때문입니다.
시야가 겹치지 않을 때
시야가 겹치는 센서끼리는 상대 위치를 비교적 간단히 구할 수 있습니다. 같은 체커보드를 동시에 보면 되기 때문입니다. 문제는 로봇의 센서들이 사각지대를 줄이려고 서로 다른 방향을 향하고 있을 때 생깁니다. 시야가 겹치지 않으면 같은 패턴을 동시에 볼 수 없고, 센서 사이의 관계를 직접 계산할 방법도 사라집니다.
이럴 때 쓰던 우회 방법들이 있기는 하지만 저마다 비용이 따릅니다. 시야가 겹치도록 중간 센서를 끼워 넣으면 연결은 되지만 번거롭고 오차가 쌓입니다. 모든 센서가 함께 볼 수 있을 만큼 거대한 체커보드를 만드는 것은 비현실적이고, 외부 위치 측정 장비를 동원하는 방법은 비싸고 복잡합니다.

사각지대를 줄이려고 센서를 바깥으로 돌리면 시야가 겹치지 않는다. 같은 패턴을 동시에 볼 수 없으니 센서 사이의 관계를 직접 계산할 방법이 사라진다.
디든로보틱스가 택한 접근은 패턴들을 서로 고정해 두고 로봇 자신을 연결고리로 쓰는 방식입니다. 여러 개의 패턴을 하나의 구조물에 단단히 붙여 두면 패턴 사이의 상대 위치는 항상 일정하게 유지됩니다. 각 센서가 그중 어느 패턴을 어떻게 보고 있는지는 측정할 수 있고, 센서들은 로봇에 고정되어 있으니 로봇을 움직이면 각 센서가 순차적으로 여러 패턴을 보게 됩니다. 그러면 고정된 패턴 간의 관계를 매개로 센서들의 상대 위치가 하나의 방정식 체계로 연결되고, 시점과 패턴과 센서의 조합을 충분히 쌓으면 이 체계가 풀립니다. 시야를 겹치지 않게 두면서도 하나의 좌표계로 묶는 것입니다.

패턴 배치, 로봇 이동, 공유 변수 연결, 전역 최적화의 네 단계로 시야가 겹치지 않는 센서들을 하나의 좌표계에 묶는다.
이때는 체커보드 대신 ChArUco 보드를 패턴으로 사용합니다. 체커보드는 코너를 소수점 이하 정밀도로 잡을 수 있지만 각 코너가 몇 번째인지 구분할 수 없어 보드 전체가 보여야 하고, ArUco 마커는 고유 번호가 있어 일부만 보여도 어느 마커인지 알 수 있지만 코너 정밀도가 떨어집니다. ChArUco 보드는 체커보드의 흰 칸 안에 ArUco 마커를 넣어 두 성질을 함께 얻습니다. 마커 번호로 위치를 식별한 뒤, 그 근처의 체커보드 코너를 정밀하게 잡는 방식입니다. 패턴을 여러 개 배치하고 로봇을 움직이면 지금 어떤 패턴을 보고 있는지 구분해야 하고 로봇 몸체에 보드의 일부가 가려지는 일도 잦기 때문에, 두 성질이 모두 필요합니다.
회전이 부족하면 안 풀린다
디든로보틱스가 이 방식을 실제로 적용했을 때, 처음에는 실패했습니다. 초기 수집에서 로봇에 제자리에서 좌우로 도는 회전만 주었기 때문입니다. 회전의 다양성이 부족하면 방정식이 유일한 해를 갖지 못합니다. 수학적으로 특이한 상태에 빠져 계산 자체가 성립하지 않는 것입니다. 로봇을 세 방향 회전축 모두에 걸쳐 다양하게 움직여 데이터를 다시 모은 뒤에야 계산이 풀렸고, 서로 시야가 겹치지 않던 센서들이 하나의 좌표계로 통합됐습니다.
내부 파라미터를 구할 때 체커보드를 매번 다른 각도로 기울여야 했던 이유와 여기서 로봇을 세 축으로 다양하게 돌려야 했던 이유는 동일합니다. 자세가 다양하지 않으면 방정식이 같은 조건을 반복할 뿐이기 때문입니다.
캘리브레이션의 성패는 데이터를 어떻게 모으느냐에 달려 있습니다. 어떤 자세로 얼마나 다양하게 모을 것인지, 마커가 흐려지지 않을 조명과 거리를 어떻게 확보할 것인지가 결과를 가릅니다. 센서당 최소 10장 이상의 유효 이미지가 권장되지만, 장 수를 채우는 것보다 자세를 얼마나 다양하게 흩어 놓느냐가 더욱 중요합니다. 로봇을 직접 설계하고 직접 움직일 수 있어야 이 조건들을 통제할 수 있습니다.

같은 패턴을 여러 자세에서 반복해 담은 수집 데이터. 장 수를 채우는 것보다 자세를 얼마나 흩어 놓느냐가 결과를 가른다.
제어에서 거꾸로 설계한다
센서를 고르고 좌표계를 묶는 일이 끝나도 질문이 하나 남습니다. 이렇게 얻은 데이터를 '제어에 어떤 형태로 넘길 것인가'입니다. 앞의 두 단계는 이 질문의 답에 맞춰 진행됐습니다. 센서 검증의 최종 기준을 인식 알고리즘의 동작에 둔 것도 같은 이유였습니다.
이 순서가 가능한 것은 그 알고리즘을 디든로보틱스가 직접 만들기 때문입니다. 센서를 판정하는 평가 도구, 여러 대를 하나의 좌표계로 묶는 캘리브레이션 파이프라인, 점군을 설계 도면에 맞추는 정합, 그 위에서 자기 위치를 추정하고 지도를 만드는 알고리즘, 그리고 그 결과를 받아 움직임을 결정하는 제어와 학습은 모두 내부에서 개발합니다. 센서를 바꿀 때마다 그 뒤의 전 과정을 직접 다시 돌려 볼 수 있었기 때문에, 판정 기준을 센서가 아니라 알고리즘 쪽에 둘 수 있었습니다.
로봇 제어가 비전에 요구하는 정보는 네 갈래로 나뉩니다.
갈래 | 무엇을 아는가 | 어디로 들어가는가 |
공간 | 어디에 무엇이 있는가 | 경로 계획의 제약 조건 |
시간 | 가까운 미래에 주변이 어떻게 변하는가 | 속도 제어기, 모델 예측 제어기 |
물성 | 대상의 재질과 다루는 방법 | 팔 궤적, 그리퍼 힘 |
의미 | 그 대상이 무엇이고 지금 무슨 일이 일어나는가 | 작업 성공 여부 판정 |
네 갈래가 각각 어디로 가는가
공간 정보의 기본 단위는 점유지도(occupancy map)입니다. 공간을 격자로 나누고 각 칸에 장애물이 있을 확률을 채워, 지나갈 수 있는 곳과 막힌 곳과 아직 보지 못해 모르는 곳을 구분합니다. 여기에 장애물과의 거리나 표면 위험도를 비용으로 얹은 것이 비용지도(cost map)이고, 두 지도가 경로 계획의 제약 조건이 됩니다. 그러면 센서 사각지대가 안전 반경으로 바뀌면서 충돌 가능성이 실행 단계가 아니라 계획 단계에서 줄어듭니다.
시간 정보는 다가오는 물체의 속도와 가속도, 몇 초 뒤의 위치를 알려 줍니다. 장애물이 움직인 다음에 반응하는 제어와 갈 길을 미리 비껴 가는 제어가 여기서 갈립니다. 물성 정보는 로봇 팔이 무언가를 잡는 순간에 필요합니다. 어디를 어떤 힘으로 쥘지가 재질과 형태에 따라 달라지기 때문입니다. 의미 정보는 작업의 성패를 판정합니다. 문고리를 돌리고 당기는 동작을 정확히 수행했더라도 문이 열리지 않았다면 그 작업은 실패인데, 관절 각도만으로는 이 차이를 알 수 없습니다.
바뀐 것과 남은 과제
센서를 바꾸면서 가장 크게 달라진 것은 반복 정밀도입니다. 깊이 카메라만 쓰던 시기에는 같은 동작을 반복해도 발을 딛는 자리가 시험할 때마다 1 cm씩 달라졌습니다. 보강재와 보강재 사이의 좁은 공간에 정확히 자리 잡아야 하는 작업에서는 부담이 되는 편차였습니다. 라이다를 주력으로 놓은 뒤에는 1 cm 수준의 반복 정밀도를 반복해서 확인했고, 지금은 눈으로 구분하기 어려울 만큼 같은 자리에 섭니다. 사람이 지나가거나 바닥에 전선이 걸리는 상황까지 인지해 대응하는 단계에 와 있습니다.
센서가 바뀌면서 데이터의 성격도 달라졌습니다. 로봇을 한 시간 동안 가동하면 라이다와 카메라, 관절과 관성 센서, 오류 로그를 합쳐 약 50 GB의 데이터가 쌓입니다. 이 데이터를 서버에 적재하고 다시 학습으로 연결하는 구조를 만들어 두면, 로봇이 일한 시간이 그대로 다음 모델의 재료가 됩니다.
남은 과제는 정밀도를 한 자릿수 더 끌어올리는 일입니다. 지금의 센서 구성은 이동과 자세 판단에 필요한 정밀도를 확보했지만, 용접처럼 밀리미터 단위의 정확도를 요구하는 작업은 다른 이야기입니다.
여기서는 오차가 두 겹으로 쌓입니다. 하나는 설계 도면과 실제로 만들어진 구조물 사이의 차이이고, 다른 하나는 그 도면에 점군을 맞추는 정합 알고리즘 자체의 오차입니다. 둘이 겹치면 보강재와 보강재 사이 같은 좁은 공간에서 1 cm 이내의 정밀한 위치를 잡기가 어려워집니다. 금속 환경에서의 초정밀 측정은 지금까지 시험한 모든 센서가 공통으로 안고 있는 한계이기도 합니다.
그래서 디든로보틱스는 이 구간을 위해 마이크로미터급의 레이저 정밀 측정 센서를 별도로 검토하고 있습니다. 지금의 구성을 대체하는 것이 아니라 그 위에 더하는 방식이고, 이동을 위한 눈과 작업을 위한 눈을 따로 두는 접근입니다.
센서 다음에 오는 것들
산업 현장의 로봇에게 인식은 판단을 위한 재료입니다. 어디로 걸을지, 무엇을 잡을지, 방금 한 일이 제대로 됐는지를 가려내기 위해 존재할 뿐, 그 자체가 목적은 아닙니다. 그래서 인식 시스템을 세우는 일은 단순히 부품을 비교하는 일이 아닙니다. 제어가 내려야 할 판단에서 시작해, 그 판단에 필요한 출력을 정의하고, 다시 그 출력을 만들어낼 수 있는 구성으로 거슬러 올라가는 일입니다.
이는 디든로보틱스가 구동기와 학습을 하나의 문제로 놓고 풀어 온 것과 같은 방식입니다. 하드웨어를 먼저 완성하고 소프트웨어를 나중에 얹는 대신, 양쪽이 서로에게 무엇을 요구하는지를 먼저 정의하고 함께 설계합니다. 첫 센서를 하드웨어 제약이 정했다가 나중에 하드웨어가 인식의 요구를 받아 바뀐 것도, 네 단계의 검증을 거쳐 구성을 확정할 수 있었던 것도 같은 이유에서입니다. 매 단계의 판단 기준이 센서 자체의 성능이 아니라 그 위에서 돌아가는 알고리즘의 동작이었습니다.
앞선 글에서는 [로봇이 자기 위치를 찾고 주변 구조를 3차원으로 복원하는 방법]을 다뤘습니다. 이번 글은 그보다 한 단계 앞을 짚었습니다. 그 모든 계산이 시작되는 자리에 어떤 데이터가 놓이느냐 하는 것입니다. 산업 현장을 위한 피지컬 AI 기업 디든로보틱스가 로봇의 눈을 센서 단계에서부터 검증하는 이유입니다.




