
자동화된 물류 센터의 AGV(자동화 무인운반차)는 환경을 인식하고 그에 따라 행동합니다. 정해진 경로를 따라가는 단순한 시스템도 있지만, 현대의 AGV는 훨씬 더 복잡합니다. 다른 AGV와의 상호작용을 피하고, 예상치 못한 장애물을 감지하며, 주변 환경의 미묘한 변화를 읽어내야 합니다.
이 모든 것을 가능하게 하는 것이 센서입니다. 센서는 물리적 세계의 정보를 수집하는 로봇의 눈과 귀 역할을 합니다. 하지만 센서로부터 얻은 생 데이터는 그 자체로는 별로 유용하지 않습니다. 카메라가 찍은 이미지 안에 무엇이 있는가를 알아내야 하고, LiDAR가 측정한 거리 데이터로부터 장애물의 형태를 파악해야 하며, IMU의 진동 정보가 무엇을 의미하는가를 해석해야 합니다.
센서 분석 기술은 이런 원시 데이터를 의미 있는 정보로 변환하는 과정입니다. 단순한 신호 처리를 넘어 머신러닝과 통계 기법을 활용해서 복잡한 상황을 이해합니다. 이것이 AGV가 안전하고 효율적으로 작동할 수 있는 기반입니다.
AGV에 탑재되는 센서들은 각각 다른 정보를 제공하고 각기 다른 특성을 가집니다.
LiDAR(라이더)는 레이저로 주변의 거리를 측정합니다. 회전하는 센서가 360도 범위에서 수백 개의 거리 데이터를 생성합니다. LiDAR의 강점은 조명 조건에 관계없이 정확한 거리 정보를 제공한다는 것입니다. 밤이든 낮이든 일관되게 작동합니다. 다만 투명한 물체(유리, 물)에는 잘 반응하지 않고, 반사가 강한 표면에서는 오류가 발생할 수 있습니다.
카메라는 시각 정보를 제공합니다. RGB 카메라는 일반적인 사진을 찍고, 깊이 카메라는 각 픽셀의 거리도 함께 기록합니다. 카메라는 색상, 텍스처, 물체의 세부 형태 같은 정보를 풍부하게 담고 있어 물체 식별에 우수합니다. 하지만 조명이 급격히 변하거나 흐릿한 환경에서는 성능이 떨어집니다.
초음파 센서는 음파를 보내 반사되는 시간으로 거리를 측정합니다. 비용이 저렴하고 근거리 감지에 효과적입니다. 다만 측정 거리가 짧고 해상도가 낮으며, 소음이 많은 환경에서는 신뢰도가 떨어집니다.
IMU(관성측정장치)는 가속도계와 자이로스코프를 포함해서 로봇의 움직임을 감지합니다. 로봇의 기울기, 회전, 가속도를 측정합니다. GPS 신호가 없는 실내 환경에서 로봇의 움직임을 추적하는 데 도움이 됩니다.

센서로부터 나온 원시 데이터는 대부분 노이즈를 포함하고 있습니다. 센서는 측정 오류를 가지고 있고, 환경의 방해가 있을 수 있습니다.
노이즈 제거는 가장 기본적인 처리 단계입니다. 이동 평균(평균값을 계산)이나 중앙값 필터(중간값을 선택)를 사용해서 부드럽게 만듭니다. 이 과정에서 신호의 중요한 특징을 잃지 않으면서 노이즈만 제거해야 합니다.
신호 정규화는 데이터를 일관된 범위로 변환합니다. 예를 들어 센서의 측정값이 0~1000 사이인데 다른 센서는 0~100 사이라면, 비교하기 위해 둘 다 0~1 범위로 조정합니다. 이렇게 하면 서로 다른 센서의 데이터를 공정하게 비교할 수 있습니다.
특징 추출은 데이터에서 중요한 정보만 골라냅니다. 예를 들어 LiDAR의 포인트 클라우드에서 벽의 직선을 찾거나 모서리의 위치를 파악합니다. 카메라 이미지에서는 색상의 평균, 밝기의 분포, 물체의 경계 같은 특징을 추출합니다.

LiDAR가 생성하는 포인트 클라우드(수천 개의 3차원 점들)는 매우 많은 정보를 담고 있지만, 처리하기가 복잡합니다.
먼저 포인트 클라우드를 분할해서 의미 있는 부분으로 나눕니다. 평면 분할 알고리즘은 바닥이나 벽 같은 평면을 찾아냅니다. 클러스터링은 가까운 점들끼리 묶어서 개별 물체를 식별합니다. 예를 들어 "이 부분은 벽, 저 부분은 상자, 여기는 다른 AGV"라고 구분합니다.
물체 감지는 포인트 클라우드에서 특정 형태를 찾는 것입니다. 전자 부품을 감지하거나 팔레트의 위치를 파악할 때 사용합니다. 3D 신경망은 포인트 클라우드를 직접 처리해서 물체의 카테고리를 분류할 수 있습니다.
이상치 제거는 노이즈로 인한 이상한 점들을 정리합니다. 포인트가 주변 점들과 너무 멀리 떨어져 있으면 오류일 가능성이 높으므로 제거합니다. 이렇게 하면 깨끗한 포인트 클라우드를 얻을 수 있습니다.

카메라 이미지를 분석하는 기본 단계는 특징 검출입니다. 모서리나 코너 같은 눈에 띄는 부분을 찾습니다. SIFT나 ORB 같은 알고리즘은 이런 특징점을 찾고, 그 주변의 특성을 수치로 나타냅니다. 이렇게 추출된 특징들은 이미지 간의 매칭에 사용됩니다. 예를 들어 "이전 프레임의 이 박스는 현재 프레임의 이 박스와 같은가?"를 판단할 수 있습니다. 또한 카메라가 움직일 때 같은 장면이 어떻게 변하는가를 분석해서 거리 정보까지 추정할 수 있습니다.
현대의 객체 감지는 대부분 심층 신경망을 사용합니다. YOLO, Faster R-CNN, SSD 같은 모델들은 이미지에서 물체의 위치와 종류를 함께 감지합니다. 이 모델들은 "이것이 박스다", "이것이 사람이다", "이것이 기계설비다" 같은 판단을 신속하게 합니다. 신경망은 예상하지 못한 상황에도 어느 정도 대응할 수 있어서 조명이 변했을 때나 부분적으로 가려진 물체도 감지합니다. 다만 신경망은 학습 데이터의 영향을 받으므로, 학습할 때 본 적 없는 완전히 새로운 형태의 물체는 잘 감지하지 못합니다.
하나의 센서만으로는 모든 정보를 완벽하게 얻을 수 없으므로, 여러 센서의 정보를 합칩니다.
센서 융합의 목표는 각 센서의 강점을 활용하고 약점을 보완하는 것입니다. LiDAR가 매우 정확한 거리를 제공하지만 "이것이 무엇인가?"는 알려주지 않습니다. 카메라는 "이것이 박스다"라는 정보를 주지만 거리는 추정해야 합니다. 둘을 합치면 "3미터 앞의 박스"라는 완전한 정보를 얻습니다.
정렬과 동기화는 센서 융합의 첫 단계입니다. 각 센서는 다른 시간에 데이터를 생성하므로, 같은 시각의 정보를 맞춰야 합니다. 타임스탐프를 기준으로 가장 가까운 데이터들끼리 묶습니다.
확률적 통합은 각 센서의 신뢰도를 고려해서 정보를 결합합니다. 카메라가 조명이 좋을 때는 신뢰도가 높고, 역광일 때는 신뢰도가 낮습니다. 이를 반영해서 의사결정을 합니다. 칼만 필터나 베이지안 추정 같은 기법이 사용됩니다.

AGV는 실시간으로 환경을 인식하고 행동해야 하므로, 센서 분석이 매우 빨라야 합니다. 병렬 처리는 여러 센서의 데이터를 동시에 처리합니다. LiDAR 데이터를 한 프로세서에서 처리하고 카메라 이미지를 다른 프로세서에서 처리하는 식으로 시간을 단축합니다.
모델 최적화는 신경망의 크기를 줄이거나 계산을 단순화합니다. 양자화는 복잡한 소수점 연산을 간단한 정수 연산으로 바꿔서 속도를 높입니다. 프루닝은 중요하지 않은 연결을 제거해서 모델을 가볍게 합니다. 임베디드 하드웨어의 활용으로 CPU만으로는 부족한 처리를 GPU나 NPU 같은 전문 가속기로 수행합니다.
센서들은 완벽하지 않으므로, 정기적으로 검사하고 조정해야 합니다.
카메라 캘리브레이션은 카메라의 왜곡을 보정합니다. 카메라의 렌즈는 완벽하지 않아서 이미지가 약간 휘어질 수 있습니다. 이를 수정하면 거리 측정의 정확도가 크게 올라갑니다.
센서 간 정렬도 필요합니다. 로봇에 탑재된 여러 센서의 위치와 각도가 정확히 알려져야 합니다. 카메라가 로봇의 중심에서 앞으로 5센티미터, 위로 10센티미터 떨어져 있다면 이를 정확히 알아야 합니다. 이를 통해 센서들이 보는 정보를 공통의 좌표계로 변환할 수 있습니다.
정기적 검증은 센서의 성능이 시간이 지나면서 떨어지는가를 확인합니다. 카메라는 렌즈가 더러워질 수 있고, LiDAR는 센서 노이즈가 증가할 수 있습니다. 정해진 방법으로 성능을 테스트해서 문제를 조기에 발견합니다.
센서에서 수집한 데이터는 그 자체로 가치 있는 자산입니다. 이를 잘 관리하면 시스템을 지속적으로 개선할 수 있습니다. 센서 데이터 로깅은 모든 실제 운영 데이터를 기록합니다. 로봇이 실패한 경우, 정확도가 떨어진 경우, 예상치 못한 상황을 만난 경우를 모두 기록합니다. 나중에 이 데이터를 분석하거나 모델 학습에 사용할 수 있습니다.
데이터 라벨링은 자동 수집한 데이터에 정답을 붙이는 작업입니다. "이 이미지에 박스가 있다", "이 포인트 클라우드는 팔레트다" 같은 식으로 표시합니다. 이렇게 라벨이 붙은 데이터로 신경망을 학습시키면 모델의 성능이 올라갑니다.
온라인 학습은 배포된 시스템에서 계속 개선하며 새로운 환경에서 수집한 데이터로 모델을 조정하면, 시간이 지날수록 시스템이 더 고도화될 수 있습니다.
