[연구실 과제] 조립 불량 검사 기반 제품 적재 공정 자동화

프로젝트 개요

AST 셀은 이송되어 들어온 제품의 조립 불량 여부를 비전으로 판별하고, 양품만 선반에 적재하는 공정이다. AST 셀에서 나는 조립 불량 여부를 판단하는 AI 알고리즘 설계와 로봇이 이를 기반으로 산업용 로봇이 적재 작업을 수행할 수 있도록 waypoint 티칭을 담당했다.

  • 프로젝트: 외관 검사 기반 적재 공정 자동화
  • 목표: 들어오는 제품을 자동으로 조립 불량/양품 분류 → 양품만 공간 효율적으로 적재
  • 사용 기술: OpenCV(고정 위치 촬영 + 크롭 + 픽셀 기반 검사), HOG 특징 + SVM 분류, 1D 라이다 기반 재고 판단
  • 하드웨어: 현대로보틱스 산업용 로봇 + 듀얼 그리퍼, 라즈베리파이 카메라, 1D 라이다 센서, 공압 실린더, 근접 센서
  • 대상: 조립 제품(파트 + 케이스)
  • 성격: 연구실 데모 수준의 검증

문제 정의

이 공정에는 성격이 다른 두 문제가 한 줄에 묶여 있다.

첫째는 검사다. 들어온 제품이 제대로 조립됐는지, 아니면 불량인지를 판별해야 한다. 사람이 눈으로 보던 작업을 자동화하려는 것이다.

둘째는 적재다. 양품으로 판정된 제품을 선반에 쌓되, 공간을 최대한 활용해야 한다. 단순히 "빈 곳에 놓기"가 아니라, 지금 선반이 얼마나 차 있는지를 알아야 다음 제품을 어디에 놓을지 정할 수 있다.

검사는 "무엇을 보고 불량이라 할 것인가", 적재는 "현재 상태를 어떻게 인식할 것인가"가 핵심이었다.


접근 방향 — 왜 딥러닝이 아니라 고전 비전·ML이었나

조립 불량 검사라고 하면 흔히 사전학습된 딥러닝 모델을 떠올린다. 그러나 이 프로젝트에서는 의도적으로 OpenCV와 고전 머신러닝(HOG + SVM) 로직으로 풀었다. 이게 이 프로젝트의 가장 큰 차별점이다.

판별해야 하는 불량은 조립이 불완전해서 부품과 부품 사이에 틈(공간)이 생기는 것이었다. 즉 "정상 조립이면 붙어 있어야 할 곳이 떠 있다"를 잡아내는 문제다. 이런 종류의 불량은 형상이 명확하고 검사 위치가 정해져 있어서, 무거운 딥러닝 모델 없이도 다음 조합으로 충분히 풀 수 있었다.

  • 고정 위치 촬영: 매번 같은 위치에서 찍게 만들어, 비교 기준을 고정했다. 위치가 흔들리면 픽셀 비교 자체가 무너지기 때문이다.
  • 크롭(crop): 제품 위치가 약간 틀어질 수 있으므로, 검사 대상 영역을 크롭해 조립 불량이 가장 잘 드러나는 부위 위주로 판단했다. 전체 이미지를 보는 대신 결정적인 부위에 집중한 것이다.
  • 픽셀 기반 차이 + HOG/SVM: 고정·크롭된 영역에서 픽셀값 차이로 틈을 잡고, HOG로 형상 특징을 뽑아 SVM으로 정상/불량을 분류했다.

딥러닝 대비 이 방식의 장점은 명확하다. 대량의 학습 데이터가 필요 없고, 판별 근거(어느 부위의 어떤 차이로 불량이라 봤는지)가 설명 가능하며, 검사 위치가 통제된 환경에서는 가볍고 빠르다. 


시스템 구성

  • 이송·정지: 제품이 컨베이어로 들어오다가 근접 센서에 인식되면, 공압 실린더로 제품을 정확한 위치에 멈춰 세운다.
  • 검사: 멈춘 제품을 라즈베리파이 카메라로 고정 위치에서 촬영 → 크롭 → 픽셀/HOG/SVM으로 불량 판별.
  • 파지: 판별 후 산업용 로봇이 제품을 집는다.
  • 듀얼 그리퍼: 그리퍼가 두 개다. 하나는 파트를 집고, 다른 하나는 **팔레트(케이스)**를 집는다. 각 대상의 크기(size)에 맞춰 그리퍼 형상을 설계했다.
  • 적재 상태 인식: 선반에 1D 라이다 센서를 달아, 거리값으로 현재 그 줄에 제품이 몇 개 차 있는지를 판단한다.

핵심은 "제품을 멈춰 세우는" 단계다. 검사 정확도를 위해 고정 위치 촬영이 전제였으므로, 공압 실린더로 제품을 항상 같은 자리에 세우는 것이 검사 품질의 출발점이었다. 사이클 타임과 라인 병목 제품을 하나씩 멈춰 세워 검사하는 방식은 그 공정 자체의 사이클 타임을 늘리는 단점이 있다. 다만 라인 전체의 속도는 가장 느린 공정이 결정한다. 이 검사 공정의 사이클 타임은 앞 공정보다 짧았기 때문에, 검사 단계가 병목이 되지 않았고 전체 공정의 사이클 타임이 늘어나는 문제도 없었다. 공정 하나의 속도만이 아니라 라인 전체의 병목 관점에서 볼 때, 검사로 인한 지연은 흡수 가능한 수준이었다.


적재 로직 — 1D 라이다 + 2층 선반

적재는 단순히 빈 칸에 놓는 게 아니라, 공간을 최대로 쓰는 게 목표였다.

 

  • 현재 재고 판단 선반 칸에 1D 라이다를 달았다. 라이다가 측정한 거리값으로 "이 줄에 제품이 지금 몇 개 들어가 있는지"를 판단했다. 제품이 쌓일수록 라이다까지의 거리가 가까워지므로, 거리값이 곧 적재량의 신호가 된다.
  • 밀어 넣기 방식 한 줄에 제품을 하나만 놓으면 공간이 남는다. 그래서 제품을 뒤로 밀어 넣고, 그 앞에 다음 제품을 넣는 방식으로 한 줄에 여러 개를 채웠다. 
  • 2층 선반 선반은 2층 높이로 구성해 위로도 공간을 확장했다.

이 구성 덕분에 최대 24개의 제품을 선반에 적재할 수 있었다.

 


결과 평가 및 분석

  • 검사 평가: 같은 환경에서 수집한 데이터로 학습·테스트, 분류 정확도 측정
  • 적재 평가: 1D 라이다로 읽은 재고에 맞춰 정상 적재가 이어지는지
  • 지표: 불량 분류 정확도, 적재 동작 성공 여부

검사 분류에서 제품 100개 중 98개를 정확히 분류해 약 98% 정확도를 얻었다.

다만 이 수치는 조건을 분명히 해야 한다. 학습 데이터와 테스트 데이터가 같은 촬영 환경에서 나왔다. 조명, 카메라 위치, 배경이 동일한 통제된 조건이라는 뜻이다. 그래서 이 98%는 "이 환경에서 이 불량 유형을 얼마나 잘 잡았나"의 값이지, 환경이 바뀌어도 유지되는 일반화 성능은 아니다. 환경이 달라지면(조명 변화, 위치 틀어짐 등) 픽셀 기반 검사는 흔들릴 수 있다.

그럼에도 의미는 분명하다. 무거운 딥러닝 모델 없이, 고정 위치 + 크롭 + 픽셀/고전 ML 조합만으로 정해진 불량 유형(부품 사이 틈)을 통제된 환경에서 안정적으로 잡아냈다.

적재 쪽에서는 1D 라이다로 재고를 읽고 밀어 넣기로 한 줄에 여러 개, 2층까지 채우는 동작이 의도대로 동작했다.


현장 적용 관점에서의 고민

  • 환경 통제 의존성:  이 검사 방식의 정확도는 "고정 위치 + 일정한 조명"이라는 전제 위에 서 있다. 통제가 깨지면 성능이 떨어진다. 운영 환경에서는 조명 변동과 위치 오차가 늘 생기므로, 크롭 기준을 더 강건하게 잡거나 정합 보정을 앞단에 두는 보완이 필요하다.
  • 고전 ML의 장단점: 딥러닝을 쓰지 않아 데이터가 적게 들고 판별 근거가 설명 가능하다는 건 강점이다. 반대로 불량 유형이 다양해지거나 형상이 복잡해지면, 픽셀·HOG 기준으로는 한계가 생긴다. 불량 종류가 늘어나는 순간 규칙·특징을 매번 다시 설계해야 하는 비용이 따른다.
  • 검증 범위 연구실 데모 수준의 검증이다. 통제 조건에서의 98%이며, 다양한 환경·불량 유형으로 확장했을 때의 성능은 아직 확인하지 못한 영역이다.

시행착오

  • 검사 정확도를 위해 위치를 고정해야 했다: 픽셀 기반 검사는 비교 기준이 흔들리면 그대로 무너진다. 제품이 매번 조금씩 다른 위치에 들어오면 같은 부위를 비교할 수 없다. 그래서 근접 센서로 제품을 감지하고 공압 실린더로 항상 같은 자리에 멈춰 세웠다. 그래도 남는 미세한 위치 편차는 크롭으로 흡수했다. 검사 대상 영역을 잘라내 불량이 가장 잘 드러나는 부위 위주로 보게 함으로써, 위치가 약간 틀어져도 판별이 유지되도록 했다. 다만 이 검사 공정의 사이클 타임은 앞 공정보다 짧았기 때문에, 검사 단계가 병목이 되지 않았고 전체 공정의 사이클 타임이 늘어나는 문제도 없었다.
  • 현대로보틱스 로봇을 다루는 일 산업용 로봇, 그중에서도 현대로보틱스 로봇이라 제조사 고유의 언어·체계로 움직여야 했다. 익숙한 일반 프레임워크가 아니라 그 로봇의 용어와 방식에 맞춰야 해서 초반 적응이 쉽지 않았다. 또 로봇 자체가 커서 티칭(경로를 직접 가르치는 작업)도 만만치 않았다. 큰 로봇을 원하는 자세로 옮겨가며 점을 찍는 작업은 물리적으로도 부담이 컸다.
  • 경로는 티칭으로 해결 경로 생성에 강화학습이나 MoveIt 같은 모션 플래닝 라이브러리를 써서 특이점(singularity)까지 계산에 넣는 방식은 쓰지 않았다. 대신 구간을 나눠 부분부분 직접 티칭하는 방식으로 경로를 만들었다. 데모 수준에서는 동선이 정형화돼 있어 이 방식으로 충분했지만, 더 다양한 자세와 경로를 다뤄야 한다면 한계가 분명한 접근이다.
  • 배운 점: 정확도를 모델 성능으로만 끌어올리려 하지 않고, 촬영 환경 자체를 통제하는 쪽으로 푼 게 효과적이었다. 고정 위치와 크롭으로 문제를 단순하게 만든 뒤 가벼운 ML로 마무리하는 흐름이다. 그리고 산업용 로봇은 "알고리즘"만큼이나 "제조사 체계에 맞춰 다루는 일"과 "물리적으로 티칭하는 일"이 실제 작업량의 큰 부분을 차지한다는 걸 체감했다.

프로젝트 회고

잘한 점

  • 딥러닝 pretrained 모델에 의존하지 않고, 고정 위치 + 크롭 + 픽셀/HOG/SVM 조합으로 정해진 불량 유형을 풀었다. 데이터가 적게 들고 판별 근거가 설명 가능한 점이 강점이다.
  • 검사 정확도의 전제(고정 위치)를 인식하고, 근접 센서 + 공압 실린더로 제품을 항상 같은 자리에 세워 그 전제를 물리적으로 보장했다.
  • 1D 라이다 한 개로 적재 상태를 읽고, 밀어 넣기 + 2층 구성으로 공간 활용을 높였다.
  • 파트용·팔레트용으로 그리퍼를 분리하고 대상 크기에 맞춰 형상을 설계했다.

아쉬운 점

  • 검사 정확도가 통제된 환경(같은 촬영 조건)에 강하게 의존한다. 환경이 바뀌면 유지된다는 보장이 없다.
  • 학습/테스트 데이터가 같은 환경이라, 98%는 일반화 성능이라기보다 통제 조건의 성능이다.
  • 경로를 티칭으로만 해결해, 다양한 자세·경로로 확장하기 어려운 구조다.

다시 수행한다면

  • 고정 위치 가정을 줄이기 위해, 검사 앞단에 위치 정합(alignment) 보정을 넣어 조명·위치 변동에 더 강건하게 만들겠다.
  • 서로 다른 환경에서 데이터를 나눠 학습·테스트해, 통제 조건이 아닌 일반화 성능까지 확인하겠다.
  • 경로 생성에 MoveIt 같은 모션 플래닝을 도입해 특이점 회피까지 자동으로 계산하게 하고, 티칭 의존도를 낮추겠다.