1. 서 론
최근 국내 자동차 산업은 대외적인 브랜드 가치가 높아지면서 급속도로 성장하고 있다. 이런 과정에서 제품의 품질은 브랜드 가치에 있어 매우 중요한 요소 중 하나가 되었다. 대부분의 자동차 회사들은 고정적인 품질유지와 대량생산을 위해 자동화된 생산시설을 사용한다. 하지만 이러한 생산시설이 100% 자동화되어 있는 것은 아니다. 일부 조립과정의 경우 너무 세밀한 부품을 사용하거나, 때에 따라 인간의 판단이 필요한 경우 조립 작업자들이 직접 자동차 조립을 하게 된다. 문제는 이러한 작업자가 개입하는 과정에 실수가 일어나면서 자동차의 불량이 발생한다는 것이다. Fig. 1은 가장 대표적으로 사용되고 있는 자동차 조립과정에서의 수작업 과정을 나타낸다.
Fig. 1.Assembly Line for Automobile.
자동차만이 아닌 인간의 수작업이 개입된 공정에는 작업자의 상태, 주변 환경 등 다양한 요인에 의해 불량이 발생할 가능성이 존재하게 된다. 이를 보완하기 위해 기존의 많은 비전검사 장비들이 실 공정에 도입되어 있다. 대부분의 이 장비들은 비파괴 검사라 명칭 되어 2D 센서를 통해 획득한 평면 영상을 다양한 알고리즘으로 처리하여 검사하거나 때에 따라 제한적인 상황에서 3D 센서를 통한 입체적인 검사를 하는 경우 등을 볼 수 있다[1].
본 연구는 인체의 동작 인식과 관련하여 수많은 연구가 있는 이래 3D 동작 인식 센서를 사용하여 자동차 조립공정 작업자를 실시간 모니터링하고 행동을 기반으로 오류검출을 할 수 있는 자동화 오류검출 시스템을 개발하는 것을 목표로 한다. 대부분의 3D 동작 인식 센서는 단순한 인체인식 및 관절 좌표 추적을 이용하여 게임 등에 활용하고 있다. 이러한 센서를 제조업에 활용하기 위해서는 단순한 사용자의 위치 추적뿐 아니라 조립과정에 필요한 조인트의 범위 및 손의 움직임, 조립절차에 대한 제스처 인식 등이 필수적이다. 본 연구는 3D 동작 인식 기술과 2D 평면 영상 이미지 분석기술을 혼합, 응용하여 자동차 조립공정 모니터링 시스템의 판단 정확도를 높이고 두 종류의 센서를 동시에 활용할 수 있는 방법을 제안한다. 본 논문의 순서는 다음과 같다. 먼저 2장에서 본 논문에서 사용된 키넥트 센서 및 2D 비전 센서와 관련된 연구동향을 살펴본다. 3장에서는 3D 키넥트 센서와 비전 센서를 결합한 하이브리드 방식의 조립에러 검출 알고리즘에 관해 설명하고 4장에서 이에 대한 실험결과를 그리고 마지막 5장에서 이 실험과정에서 얻은 내용과 결론, 그리고 앞으로 연구되어야 할 방향 및 3D 센서의 범용적인 활용방안에 대해 언급한다.
2. 관련연구
2.1 인체 동작인식
현재 시중에는 인체 동작 인식을 위해 다양한 3D 센서들이 개발되어 있다. 특히 마이크로소프트에서는 게임을 위한 동작 인식 장비 키넥트(Kinect)를 출시하였고 응용, 개발을 위해 Kinect SDK를 제공하고 있다[2]. 키넥트는 현재 상용화된 다양한 3D 센서 중 좋은 가격 대 성능 비를 가지고 있으며 특히 Kinect SDK에서는 실시간 Depth Map 추출 및 인체의 행동을 인식하고 Skeleton 좌표를 추출하는 기능을 제공하고 있다[2]. 기존의 조립공정에서 사용되는 비전 검사 장비들은 고성능의 2D 센서를 사용하거나 3D 센서를 사용하여 물체에 대한 3차원적 인식을 한다[3]. 이러한 장비들은 공정에 필요한 센서를 설치하는데 고가의 비용을 감당해야 하거나 근본적으로 물체 스캐닝에만 사용되고 인체의 행동에 대해 고려는 하지 않고 있다. 또는 때에 따라 물체 인식에 필요한 빛 등에 인체가 장시간 노출될 경우 해가 되는 경우가 생길 수 있다. 이러한 이유로 본 연구에서는 비교적 다루기 쉽고 저렴한 형태의 동작 인식 센서 키넥트를 사용하였다.
Fig. 2.Information of Kinect Skeleton.
키넥트는 랜덤 포레스트라 불리는 학습 알고리즘에 의해 인체의 관절을 인식한다. 이러한 학습 기반의 알고리즘은 관절의 위치를 추측하는 형태로 아주 정확한 위치를 알 수 없다. 본 논문에서는 이러한 알고리즘을 사용하는 키넥트가 태생적으로 가지는 관절 좌표 범위의 오차를 최소화하고 공정 환경에 사용할 수 있도록 정확도를 보완하는 방법에 일부 초점을 두었다. 또한, 공장의 상황과 작업자 주변의 환경, 상태에 따라 검사 프로세스를 유연하게 대처할 수 있는 시스템을 개발하기 위해 초점을 두었다.
2.2 기존의 검사 시스템
Fig. 3은 실제 공정에 사용되고 있는 2D 비전 기반의 검사장비의 한 종류이다. 기존의 검사 시스템은 정밀 부품, 반도체 등과 같은 세부적인 공정이 필요한 자동화 공정에 사용되는 경우가 많다. CCD 센서와 분석 장비를 토대로 실시간으로 조립이 이뤄지는 과정에서 영상처리를 통해 검사가 진행된다. 2D 비전검사는 얼굴인식, 물체인식 등으로 많이 알려진 Template Matching과 같은 방법이 알려져 있다[4]. 특징점 추출, 픽셀 분석 등으로 OpenCV과 같은 라이브러리를 통해 응용할 수 있고 실생활에 많이 사용되고 있으며 현재도 영상처리 분야에서 다양한 연구가 활발하게 이루어지고 있다[5]. 공정 모니터링 시스템에서는 PCB 검사, 기타 비파괴 검사 등에 많이 활용되고 있고 사물인식, 물체검사 등에도 활용되고 있다. 특히 반도체와 같은 공정검사에 공정오류 및 불량검출 등으로 응용되는 경우가 많다[6].
Fig. 3.2D Vision Monitoring System.
3D 센서를 활용한 검사 시스템은 Depth Map을 획득해 물체의 형태나 위치, 상태 등을 감지하는 형태로 구현된 경우가 사용되고 있다[3]. 대부분 물체, 부품 등 특정 대상을 스캔하고 직접 검사하는 방법이 대부분이며 작업자, 인체를 스캔하고 인간의 행동을 인지하는 방법은 사용되지 않고 있다[1,3,4].
Fig. 4의 경우 3D 센서를 활용한 공정 예시이다. 이러한 기존의 조립공정에서 사용되는 실시간 모니터링 시스템들은 주로 카메라 센서를 이용한 2D 비전 혹은 3D 센서를 기반으로 한다. 이와 같은 기존의 카메라 센서를 활용한 모니터링 시스템은 완전히 자동화된 검사 시스템에 적용되는 경우가 많고 자동화되지 않아 작업자의 조립 참여가 필요한 경우에 작업자의 동작 및 조립행위 도중 신체의 손 혹은 머리 등의 부위로 모니터링 검사 위치를 직접 가리게 된다. 작업자의 신체로 센서의 시야를 가리게 되면서 부품을 정확하게 인지하지 못하고 문제를 발생하게 되거나 지속적인 검사상황 유지를 위해 계속해서 영상획득을 시도하면서 동시에 매칭 연산을 시도하여 시스템 전체의 내구성 및 효율성을 떨어뜨리기도 한다. 또는 때에 따라 조립과정이 끝나면 내부를 확인할 수 없는 완성형 부품도 존재할 수 있다. 이러한 다양한 종류에 대응하기 위한 검사 시스템은 기존의 비전을 활용한 방법으로 극복하기 쉽지 않다[3]. 본 논문에서는 이러한 문제점을 극복하기 위해 인간의 행동을 인지하는 방법으로 검사를 진행하려 한다[7]. 그러나 이러한 방법은 인간의 행동에 대한 논리적인 정의를 하기가 쉽지 않기 때문에 정확한 제스처 인식을 하는 데 어려움이 있다는 단점이 있을 수 있다. 그러나 자동차 엔진과 같은 부품의 경우 세부 부품들이 조립되고 나면 이미 엔진 내부에 부품이 안착해서 시각적으로 확인할 수 없는 경우가 많아 X-Ray나 소리 등을 검사에 활용하게 되는데 미리 작업자의 행동을 직접 검사하여 이러한 문제점에 부딪히지 않고 조립 과정에서 사전에 문제를 찾아낼 수 있을 것이다. 이 때문에 작업자의 행동, 인체의 행동을 정의하고 인식하는 방법의 개발이 필요하다.
Fig. 4.3D Monitoring System Overview [3].
3. 제안하는 방법
3.1 시스템 구조
본 논문에서는 이런 기존 검사시스템의 단점을 극복하고자 조립과정에서 작업자의 행동을 인지하고 사전에 검사하는 방법을 제안한다. 3D 동작 인식 센서로 마이크로소프트의 키넥트를 이용하여 작업자의 동작을 인지[8-10], 2D 비전 센서를 통한 2D 이미지 처리에 트리거링(Triggering)하는 시스템을 제안한다.
Fig. 5는 제안하는 하이브리드 실시간 모니터링 시스템에 대한 전체적인 구조를 나타낸다. 시스템 소프트웨어의 구조는 크게 설정모듈(Setting Module), 제어모듈(Control Module), 검사모듈(Decision Loop)로 이루어진다. 설정모듈에서는 크게 시스템이 검사할 대상에 대한 설정을 진행한다. 검사 순서 및 검사방법, 대상 등에 대하여 순차적인 형태로 검사 단계를 구성하게 된다. 제어모듈에서는 하드웨어의 제어와 관련한 조작을 하게 된다. 검사모듈에서는 UI에 대한 실시간 렌더링과 함께 키넥트를 통한 관절 좌표 획득 및 2D 센서에 의한 패턴매칭 과정과 검사 단계에 따른 검사를 진행하게 된다.
Fig. 5.System Overview.
전체적인 검사 단계는 설정모듈에서 지정된 검사 순서와 설정 값에 따라 키넥트의 관절정보를 활용해 작업자의 위치와 상태를 파악한다. 조립이 필요한 목표 물체의 위치를 미리 등록해놓고 작업자의 관절이 물체의 위치와 반응할 때 이벤트가 일어난다. 2D 센서를 통해 획득한 평면 영상을 토대로 패턴매칭을 진행하여 매칭점수로 이벤트의 성공 여부를 판단한다. 결과적으로 작업자의 관절이 부품 근처에 가지 않으면 이미지 획득이나 패턴매칭과 같은 연산량이 많은 다른 검사 이벤트가 일어나지 않기 때문에 시스템의 부담이 줄어들고 작업자가 센서를 가리지 않는 상황에 이미지를 획득할 수 있다.
본 시스템은 미리 등록된 물체의 위치와 작업자의 관절 간의 이벤트 검사를 토대로 작업자의 행동을 유추하게 된다. 이러한 이벤트를 구성하기 위한 행동검사의 종류로 위치(Position), 각도(Angle), 거리(Distance)에 따른 기본적인 검사 패턴을 구성하였다.
3.2 위치(Position)에 의한 행동검사
인체의 행동을 검사하는 방법의 첫 번째로 위치에 의한 검사를 제안한다. 실시간으로 3D 센서의 Skeleton 좌표 중 선택된 관절의 좌표를 기준으로 가상의 3D 공간에 지정된 반지름(Radius)의 구(Sphere)와 거리(Distance)를 확인한다. 일반적인 원 충돌 형태로 충돌체크를 수행하여 원하는 위치에 구를 배치하고 해당 구의 내부에 관절의 위치가 존재하는지 확인할 수 있다. 이 방법은 지정된 충돌 구의 영역에 관절이 들어왔는지, 혹은 나갔는지에 대한 두 가지 방법으로 검사를 진행할 수 있다. 이러한 검사는 다음과 같이 수식 (1)로 정의된다.
수식 (1)에서 F는 Hand에 대한 3D 관절 좌표를 평균 필터링(Average Filtering)한 결과이다. H는 손의 위치에 해당한다. 이후 Impact에서 x, y, z는 F에 대한 좌표에 해당한다. u, v, w는 미리 정의된 충돌 구의 위치를 의미한다.
R은 충돌 구의 반지름이며 필터링 된 좌표는 피타고라스의 정리로 구를 정의하여 충돌 구의 반지름과 비교되어 충돌 이벤트를 정의할 수 있게 된다. 피타고라스의 정리로 구를 구하는 과정에서 사용되는 관절 좌표는 F를 통해 미리 계산된다. 이러한 방식으로 센서를 통해 인지된 가상의 3D 공간에 정의된 충돌 구는 실시간으로 충돌체크를 수행하면서 지정된 관절이 영역에 들어오면 Impact에 True 이벤트를 발생시킨다.
Fig. 6은 실제 시스템 내에서 UI를 통해 표현되는 작업자의 관절 모습과 부품이 위치한 지역에 설정된 충돌 구의 모습이다. 이 충돌 구는 검사가 시작되기 전 상황에 따라 크기와 위치 등 검사를 위한 조건을 조절할 수 있도록 하였다. 이러한 위치기반의 검사 이벤트를 통해 작업자가 특정 위치에 도달했거나 손이나 팔, 다리 등 특정 관절이 지정된 위치에 도착했을 때 “물건을 집었다.” 혹은 “조립을 하고 있다.” 등의 이벤트를 발생시킬 수 있다. 또는 지정된 위치에 관절이 들어와 일정 시간을 보낸 후 다시 나갈 때, “물건을 가지고 갔다.”라는 이벤트를 정의할 수 있다.
Fig. 6.Position sphere based decision event.
본 검사 시스템에서는 이러한 관절 위치에 의한 이벤트를 통해 검사를 진행, 판단하고 UI를 통해 작업자에게 행위를 유도 혹은 경고할 수 있도록 하였다.
3.3 각도(Angle)에 의한 행동검사
각도 기반의 행동검사 이벤트는 지정된 두 좌표 사이의 라디안(Radian) 각을 구하여 최소-최대 각의 차이를 판별한다. 이벤트를 지정할 때 최소, 최대 각을 지정하게 되며 이 값을 넘어갈 때 이벤트가 성공판정 되도록 구현되어 있다. 일반적으로 라디안 각도가 지정된 값을 넘어가게 되면 두 관절의 “스윙”이 일어난 것으로 판정하였다. 이벤트는 한 번의 스윙이 일어나면 이를 확인하며 카운트한다. 지정된 카운트 횟수가 넘어가면 최종적으로 성공판정이 일어나면 때에 따라 연속적인 스윙이 일어나지 않으면 카운트 횟수를 초기화시켜 반복된 행동을 유도한다. 이는 검사 과정에서 부품의 체결확인, 경첩 부분의 조립확인 등을 위해 필요한 조립 검사과정으로 고안하였다.
수식 (2)에서 Result 1은 최소 각보다 더 작아질 때의 결과, Result 2는 최대각보다 더 커질 때의 결과이며 각각 True, False를 나타낼 수 있다. MIN, MAX는 각각 시스템의 검사 설정과정에서 지정되는 상수 값이다. x, y, z와 u, v, w는 각각 왼손 및 오른손의 관절 좌표를 의미한다.
이러한 좌표정보는 사전 설정과정에서 특정 관절로 변경될 수 있다. 관절 좌표에 대한 역삼각함수를 통해 두 관절 사이의 라디안 각도를 계산한다. 산출된 결과 값은 사전 시스템 설정과정에서 지정된 최소(MIN), 최대(MIN) 각도와 비교되어 차이 값을 통해 검사 성공을 위한 일정 범위 이상의 운동을 요구하게 된다.
Fig. 7은 시스템 내 UI에서 작업자의 관절 좌표와 설정된 각도검사의 상황을 보여주는 모습이다. 키넥트의 3D 관절 좌표를 필터링을 통해 최적화시켜 사용하였지만 아직 센서의 해상도가 높지 않아 두 손의 운동을 잡아내는 데 충분하지 않았다. 그래서 두 손의 좌표에 대해 잡음이 심하게 나타났고 특히 Z 좌표에서 잡음이 가장 심했다. 이러한 점을 최소화하기 위해 각도검사 상황에서는 3D 관절 좌표를 2D 평면 좌표로 투사(Projection) 과정을 거쳐 사용하였고 이에 따라 산출된 라디안 각도 값도 2D 평면 각도에 해당한다. 특별히 라디안 각도 단위를 사용한 이유는 대상이 될 신체의 상황이나 센서의 위치와 각도에 따라 설정된 검사 값에 대해 상대적으로 결과가 다를 수 있어 이를 보완하기 위해 사용하였다.
Fig. 7.Angle based decision event.
3.4 거리(Distance)에 의한 행동검사
거리(Distance)기반의 행동검사는 두 관절 사이의 거리를 확인하는 이벤트로서 위치기반 검사와 같은 방법을 사용한다. 지정된 두 관절정보를 토대로 거리를 구하고 이 거리가 특정 값 이상 커지거나 작아질 때 성공이벤트를 발생시킨다.
수식 (3)에서 Result 1은 거리에서 벗어난 경우, Result 2는 거리보다 좁은 경우의 결과에 해당하며 각각 True, False로 표현된다. 각 공식은 피타고라스 정리에 의한 두 점 사이의 거리를 구하는 방법이며 D는 비교판단을 위해 사전에 설정된 거리 상수를 의미한다. 각각의 x, y, z와 u, v, w는 사전에 설정된 두 관절의 좌표를 의미한다.
이 검사방법은 작업자가 물체를 집어 눈으로 물체의 상태를 확인하고 검사하는 과정 등을 판별하기 위해 구현하였다. Fig. 8은 이 방법에 대한 UI 표현 및 관절 좌표와 거리판단 정보를 보여주는 화면이다. 일반적으로 작업자가 특정 물체, 부품을 검사하게 될 경우 눈, 얼굴에 물체를 가까이 가져가는 자세를 의도하였으며 작업자의 키, 체격과 상황에 따라 값이 조금씩 조절될 필요가 있다. 동시에 여러 개의 조건을 검사하여 자세나 정확도를 조절할 수 있을 것이다.
Fig. 8.Distance based decision event.
3.5 2D 비전 패턴매칭에 의한 검사
본 시스템에서는 키넥트를 사용하면서 동시에 2D 비전 패턴 매칭을 사용하였다. 이는 아직 키넥트의 성능이 100% 정확한 관절정보를 파악할 수 없어서 행동을 인지하는 데 한계가 있기 때문이다. 이 때문에 본 연구에서는 키넥트를 행동에 대한 이벤트 트리거로 사용하고 2D 패턴매칭을 활용하여 물체에 대한 학습 및 패턴인식 검사를 통해 시스템의 최종적인 판단을 내리는 지표로 사용하였다. 정리하자면 키넥트가 행동 이벤트를 일으키면, 2D 패턴매칭을 통해 물체의 위치 여부를 판단하여 시스템이 최종적으로 조립의 성공, 실패 판정을 하게 된다. 패턴매칭의 구현에는 OpenCV의 Template Matching을 사용하였다.
수식 (4)는 Template 이미지(T)와 Input 이미지(I)의 픽셀 데이터의 곱을 통해 Template 이미지와의 일치량을 수치화시킨 후 정규화 하는 과정을 의미한다. OpenCV에서 사용할 수 있는 Template Matching 중 정규화된 상관관계에 의한 매칭(CV_TM_ CCORR_NORMED)에 해당하는 수식[5]으로 2D 카메라를 통해 획득한 영상을 활용하여 패턴매칭 점수를 통해 부품의 위치를 찾는 데 활용하였다. 패턴매칭에 사용되는 미리 학습된 부품 이미지는 시간대와 주변 상황에 따라 조명이 달라지면서 점수결과가 다를 수 있으므로 시간대에 따라 다른 학습이미지를 사용하고 있다. 본 연구에서는 패턴매칭을 위해 OpenCV를 사용한 방법과 Matrox Image Library를 사용한 두 종류의 방법을 사용하였으며 실제 완성된 시스템에서는 상용화된 Library인 Matrox Imaging Library(MIL)를 사용하였다.
3.6 필터링을 통한 인체의 관절 좌표 획득
본 연구에서는 인체의 관절 좌표를 획득하기 위한 센서로 마이크로소프트의 키넥트를 사용하였다. 실험을 통해 확인한 결과 키넥트를 통해 획득한 관절 좌표는 실제 공간과 약 10cm 정도의 오차가 있었다. 이는 키넥트에서 사용하는 랜덤 포레스트 기반의 알고리즘이 근본적으로 학습으로 이루어지는 결과이기 때문에 일어나는 문제로 보인다. 이는 키넥트라는 하드웨어가 실시간 게임을 위해 디자인되었고 산업용으로 쓰일 만큼 정교하지 못하기 때문이며 센서가 비교적 저렴한 가격대이기 때문이다. 이러한 키넥트를 사용하여 시스템을 구성할 경우 부정확한 관절 좌표에 대한 해결방안을 찾아야 하며 키넥트를 통해 얻는 정보의 정확성이 시스템 전체의 정확성과 직결된다는 점에서 좌표 정확도 향상을 위해 본 논문에서는 필터링을 사용하였다.
본 논문에서는 평균값 필터링(Average Filtering)을 적용하였다. 수식 (5)에서 F와 x, y, z는 필터링 된 관절의 좌표 값을 의미하며 H는 각 업데이트 단위로 들어오는 키넥트의 관절 좌표를 의미한다. 매 업데이트 누적된 관절 좌표의 평균을 계산하는 공식이다. n은 누적계수이며 본 논문에서는 실험을 통해 최적화 값으로 3의 값을 사용하였다.
4. 실험 결과
4.1 이벤트 기반의 검사 시스템 소프트웨어
모니터링 검사 시스템 구현 및 실험을 위해 Windows 7 기반의 소프트웨어를 개발하였다. Fig. 9는 개발된 소프트웨어 시스템 구조에 대하여 나타낸다. 본 시스템의 개발은 Visual Studio 2010 환경에서 C++을 활용하여 개발하였으며 Winapi, MFC를 활용하여 Windows 기반으로 작동한다. 패턴매칭 및 3D 센서 사용을 위해 Matrox Image Library(MIL) SDK와 Kinect SDK를 활용하였고 시스템 내 3D 센서 관절 좌표 표현 및 UI 표현을 위해 DirectX를 사용하고 경고음 재생을 위한 FMOD를 사용하였다. 각 라이브러리는 GAEngine 이란 형태의 개인적인 커스텀 라이브러리를 통해 Wrapping 되어 활용되었으며 Winapi 및 MFC는 시스템 내 DirectX 초기화 및 시스템 설정, 패턴 이미지 학습 등에 활용하기 위해 복합적으로 사용되었다.
Fig. 9.System Software Architecture.
시스템의 모든 검사 이벤트는 Fig. 10과 같은 설정 모듈에서의 데이터를 토대로 진행된다.
Fig. 10.System Setting Module.
창 왼쪽의 리스트 박스는 Process List는 검사 프로세스의 순서를 의미한다. 오른쪽의 Process Setting 입력창을 통해 프로세스를 추가, 편집, 제거할 수 있고 실제 검사 진행 시 리스트 순서대로 진행된다.
오른쪽의 Process Setting 창 에서는 각 검사 프로세스의 이름과 메시지를 설정하고 검사 순서 및 검사방법을 설정한다. 여기서 설정한 검사방법에 따라 해당 방법에 따른 설정 값들을 지정할 수 있게 되며 이 과정을 통합해서 하나의 검사 이벤트로 지정된다.
이러한 유동적인 시스템은 실제 공장 환경의 유동적인 변화와 공정의 변화에 따른 유연한 대처가 가능해야 한다는 점에서 착안하여 구현되었다.
검사 이벤트를 구성하는 검사형태에는 검사상황을 판단하는 조건 판단자(Listener)와 3D 관절 정보를 토대로 검사를 수행하는 3D 검사, 패턴인식 점수를 토대로 검사를 진행하는 패턴검사, 각종 이벤트에 예외처리를 하고 연결을 하는 특수이벤트(Special Event)가 있다.
이러한 검사 이벤트들은 Process Setting에서 선형(Linear) 형태로 구성된 검사순서를 토대로 지정되어 검사를 수행하게 된다.
Fig. 11은 설정모듈에서 선택할 수 있는 이벤트의 종류이다. 판단자(Listener)는 지정된 검사 순서(번호)에 속한 이벤트들의 최종적인 판단 값을 참조하며 대기한다. 조건에 합당하게 되면 판단자는 다음 순서로 검사순서를 넘겨주는 역할을 한다. 같은 검사순서 내 이벤트들은 매 렌더링 루프마다 실시간으로 검사를 진행하며 이벤트의 검사상태를 확인한다. 이벤트가 참(True)이 되면 이를 전달받은 판단자는 AND / OR 형태에 따라 이벤트의 결과를 결정하여 검사 순서를 증가시킨다. 이는 마치 논리회로와 같이 동작하며 어떤 이벤트들을 어떻게 조합하여 판단하였느냐에 따라 행동을 정의할 수 있게 된다. 예를 들면 판단자를 AND 형태로 정의하고 위치기반의 검사(Position) 3개를 동시에 적용하였다면 “작업자는 물건 3개를 모두 집어 와야 한다.”라는 검사목표가 성립된다. 또는 그 가운데 각도 기반의 검사(Swing)를 추가한다면 “작업자는 물건 3개를 모두 집어 와야 하며 각각의 물건을 흔들어 봐야 한다.”라는 검사목표가 성립된다.
Fig. 11.Event Type.
Pos_In, Pos_Out 은 관절의 위치에 따른 충돌 구 영역을 검사하여 관절의 위치를 검사하는 3.3에서 설명한 방법이다. Swing은 3.4에서 설명한 라디안 각도 기반의 검사방법이며 Distance_In, Distance_Out은 3.5에서 설명한 두 관절 사이의 거리를 토대로 검사를 진행하는 검사방법이다.
Fig. 12는 검사 이벤트 중 Pattern_High, Pattern_ Low 검사에서 사용할 학습 데이터를 지정할 수 있는 2D 패턴 학습모듈이다. 불러와서 학습시킨 이미지를 토대로 1 - 2개의 2D 센서(광학 카메라)를 이용하여 영상을 획득한 후 지정된 학습 이미지와 점수에 따라 패턴매칭을 수행하여 점수를 비교하고 결과를 판별한다. 별도의 2D 패턴 학습모듈을 통해 학습 이미지를 등록하고 테스트를 진행하며 패턴매칭 점수를 확인하여 별도의 검사설정으로 저장해 둘 수 있다.
Fig. 12.System Setting Module - 2D Pattern Training.
특수 이벤트(Special Event)에 속하는 Off, Jumper는 특정 검사 순서를 종료시켜서 전체 프로세스가 완전히 1회 종료될 때까지 검사를 비활성화 시켜 중지시키는 역할을 하거나 검사 도중 특정 검사 순서로 옮겨가는 경우에 사용된다. 이러한 특수 이벤트를 활용하여 전체 검사 순서가 완전한 선형(Linear)이 아닌 거미줄(Web) 형태로 검사 번호 단위로 검사 순서를 상황에 따라 변화하도록 할 수 있다.
4.2 검사 시스템 구성 및 UI
본 논문에서는 3D 동작 인식 기술을 보다 효율적으로 사용하고 이벤트 트리거로 활용하기 위해 2D 비전기술을 응용하였고 이를 위해 상용화된 2D 영상처리 기술을 사용하였다. 실험을 위해 Primetech CCD 센서(모델명 PXA30STHMPS)를 사용하였고 Matrox 사의 Meteor 2 PCI 보드를 기반으로 2D 영상 이미지를 획득하였다. 실험을 위해 이미지 처리에는 Matrox 사의 MIL(Matrox Image Library)를 활용하였으나 앞서 소개한 OpenCV과 같은 라이브러리도 사용할 수 있다.
실험에서는 CCD 센서와 광학렌즈를 통해 1024×768 해상도의 2D 실시간 영상을 확보하였다. MIL 혹은 OpenCV를 활용하여 패턴매칭 이미지 프로세싱을 처리하였고 본 실험에서는 최종적인 결과에서 좀 더 빠른 속도 및 최적화를 위해 Matrox의 상용 라이브러리 MIL에 더 많은 중점을 두고 사용하였다. 이러한 2D 이미지 처리를 활용해 3D 센서의 Skeleton 정보와 응용하여 부품의 조립순서를 확인하고 패턴매칭을 진행하는 트리거링에 활용하였다.
Process Setting을 통해 설정된 검사 순서를 토대로 검사를 진행하면 Fig. 13과 같은 UI를 통해 시스템 사용자(작업자)에게 조립에 대한 검사 안내를 진행하게 된다. 작업자의 위치와 각 관절의 상황, 부품의 위치 등의 상황을 UI를 통해 작업자에게 전달하며 작업자는 조립을 마치면 화면 상단의 UI를 통해 올바르게 순서가 완료되었는지 알 수 있다. 특정 부품을 작업자가 들고 있다면 해당 부품이 UI 내 작업자의 손에 따라다니며 조립 위치에 조립을 진행하면 부품이 해당 위치에 결합한 것으로 보인다. UI는 검사순서와 상황에 따라 부품과 상태를 표현하며 패턴매칭 점수 등을 통해 부품이 제대로 설치되지 않았다면 UI를 통해 경고를 표시한다. 이는 공정의 종류와 상황에 따라 다를 수 있지만, 근본적으로 순서검사 및 경고를 통해 작업자가 일으킬 조립실패 및 불량에 대한 문제를 사전에 차단할 수 있다.
Fig. 13.System UI.
4.3 필터링 최적화
키넥트의 오차범위를 최소화하기 위해 실험 및 최적화를 진행하였다. 우선 3D 관절 좌표의 정확도를 확인하기 위해 필터링을 적용한 상태로 실험을 진행하였다. 실험에서는 두 개의 충돌영역을 지정하고 두 영역은 일정한 거리를 가지도록 설정했다. 그리고 작업자가 손을 사용해 두 영역을 반복해서 움직이도록 하여 약 1분간 측정된 값을 기록하였다. 필터링의 설정 값에 변화를 주어 각각 10회씩 실행하였고 각 누적된 데이터를 합산하여 분석하였다.
Fig. 14는 필터링을 적용하지 않은 상태에서 실험을 진행한 히스토그램이다. x, y축은 각각 키넥트를 통해 확인된 관절 좌표의 실제 공간좌표이며 z축은 2D 형태로 Projection 하여 표현한다. 실제 공간에 A, B 포인트를 정의하고 두 포인트의 거리를 30cm로 두었다. 그리고 두 포인트를 1초에 2회가량 오른손을 반복 운동하여 오른손의 좌표 값을 기록하였으며 이를 히스토그램으로 표현하였다. 그리고 기록된 좌표를 3차원 공간에 점 형태로 표현한 히스토그램이다. 두 개의 파란색 원은 손의 이동한 위치 중 가장 짙은 부분을 선택한 것으로 두 원의 거리는 실제 포인트의 거리인 30cm에 가깝다. 초록색 원은 좌표의 잡음을 의미, 즉 키넥트의 오차범위이고 약 15cm에 근접한다. 신체 자세나 조명상황, 키넥트의 각도, 위치에 따라 13cm-18cm 정도의 오차가 발생했다.
Fig. 14.Kinect Sensitivity Histogram - Normal.
정확도 개선을 위해 키넥트의 기본 3D 좌표에 지정된 계수에 따라 이전 프레임의 좌표를 누적해 평균하는 저역 필터링(Low pass Filtering)을 적용하였다. 이후 위와 같은 방법으로 반복 이동량을 측정하여 히스토그램으로 표현하였고 기본 3D 좌표에 대한 히스토그램과 누적계수 5회, 누적계수 10회에 대한 히스토그램을 작성하여 비교분석 하였다.
Fig. 15 에서 히스토그램 (b)는 누적계수 5회로 인한 기록이며 잡음에 해당하는 초록색 원의 범위가 급격하게 줄어든 것을 확인할 수 있다. 누적계수 10회 (c)의 경우 잡음이 더욱 줄어드는 것을 알 수 있다. 그러나 누적계수가 클수록 관절의 반복 이동범위가 실제와는 다르게 점차 짧게 잡히는 것(파란색 원 사이의 거리)을 확인할 수 있다. 이는 누적계수가 높을수록 좌표의 잡음은 줄어들지만, 운동의 범위를 잡아내는 데 필요한 프레임이 떨어져 빠르게 운동하는 경우 오히려 실제 위치에 오차가 커지는 것을 의미한다. 실제로 실험 중 빠르게 움직이는 관절에 대해서는 평균 필터링의 상황에서는 중간과정이 빠질 수 있기 때문에 적당한 누적계수가 필요했다.
Fig. 15.Kinect Sensitivity Histogram - Average Filtering. (a) Basic Histogram, (b) Accumulate Factor 5, (c) Accumulate Factor 10.
Fig. 16.Kinect Sensitivity Histogram - Median Filtering. (a) Median Filter - Factor 10, (b) Median Filter - Factor 90.
평균값 필터링(Average Low Pass Filtering)에서 빠르게 움직이는 관절에 대한 추적이 힘든 부분을 보완하기 위해 또 다른 방법인 중간 값 필터링(Median Filtering)을 적용해보았다. 위와 같은 방법으로 Frame 단위의 참조 누적계수를 적용하여 반복 이동량을 측정, 히스토그램 화 시켰다.
중간값 필터링의 경우 오히려 키넥트의 기본 좌표 값에 비해 큰 차이가 없었다. 10-30 Frame의 범위 안에서 실험한 결과는 오히려 더 늘어나거나 매우 미세하게 잡음이 줄어든 것을 확인할 수 있었다. 참조 좌표 프레임 수를 90 정도로 높이자 조금 눈에 띄는 개선을 볼 수 있었는데 오히려 정지된 상태에서의 좌표 값이 안정화되는 경향을 보였다. 그러나 90프레임 이상의 참조는 과도한 연산량을 유발하여 실사용이 어려웠다.
평균값 필터링을 사용하기 위해 최적의 값을 찾기 위한 실험을 진행하였다. 히스토그램 작성에 사용한 방법과 같은 방법으로 필터링 된 좌표를 기록하며 손의 위치를 약 30cm 정도 되는 거리를 두고 1초에 2회 이상 반복하는 형태로 관절 좌표 기록을 진행하였다. 60초씩 각각 기록된 데이터를 분석하여 히스토그램 상에서 분포된 좌표에서 필터링을 통해 줄일 수 있는 잡음에 대한 최대 거리와 적분 된 값에 따라 손실된 운동량의 거리를 누적계수(Accumulate Factor)에 따라 두고 기울기의 증가량을 계산하였다.
손실된 운동량에 대한 증가량과 관절 좌표의 잡음감소에 대한 증가량을 Fig. 17을 통해 확인할 수 있다. 필터링이 과도하게 적용되면 오히려 다른 관절에 영향을 많이 받고 빠르게 반응하지 못하는 문제가 있기 때문에 적절한 값을 적용하는 것이 중요하였고 증가율이 급격하게 줄어드는 누적계수 3이 가장 적당한 값인 것으로 확인할 수 있다. 이러한 실험을 통해 시스템에 최종적으로 적용된 평균 필터링의 값으로 3을 선택하였다.
Fig. 17.Optimization Sensitivity in Average Filtering (Rate of Slope Increase).
4.4 자동차 엔진 피스톤 조립공정에 대한 적용
자동차 피스톤 조립공정의 구조는 작업자의 위치를 기준으로 좌, 우에 “ㄱ”자 형태로 피스톤 트레이가 존재한다. 각 트레이에는 팔레트(Pallet)라 불리는 조립패널이 있으며 3개 혹은 4개의 피스톤이 순서대로 배치되어 있다. 조립에 필요한 피스톤의 개수에 따라 3기통 엔진, 혹은 4기통 엔진으로 나뉘게 되며 본 실험에서는 4기통 엔진을 기준으로 하여 실험 및 시스템 적용을 진행하였다.
Fig. 18은 피스톤 조립공정에 적용할 수 있는 본 연구의 예시 시스템 구성도이다. 팔레트에 놓인 4개의 피스톤에는 각각 1번에서 4번까지의 번호가 부여되어 있으며, 이 번호에 따라 순서대로 반대편의 팔레트(엔진)에 넣어 조립하게 되는데 각 피스톤은 각자의 미세한 규격차이가 있다. 피스톤은 미크론(㎛) 단위로 미세한 차이가 있는데 이러한 미세한 차이는 육안으로 확인하기 매우 힘들고 이미 조립이 완료되어 엔진룸에 들어가 마무리된 후에는 일반적인 비파괴 2D 검사 장비로 확인할 수 없어 X-Ray, 소리 및 진동에 의한 검사만이 가능하다. 특히 실수로 인해 순서가 바뀌어 잘못 조립될 경우 완성된 자동차에서 사용되는 엔진의 소음과 진동이 커지고 심각한 경우에는 엔진이 주행 중 폭발하는 경우가 있어 결과적으로 자동차 전체의 안전성에 큰 문제가 생길 수 있다. 이러한 문제는 대부분 조립 작업자의 단순한 착각이나 실수 때문에 일어나며 근본적으로 조립과정에서의 정확한 조립과 경고 및 확인이 필요하고 볼 수 있다.
Fig. 18.Automobile Assembly Line - Engine Piston Assembly.
시스템에서 처음 적용한 방법은 Fig. 19와 같은 3D 센서를 통해 확인된 가상공간에 각 피스톤별로 충돌 구 영역을 지정하는 것이었다. 이 방법은 키넥트의 민감도에 따라 결과가 크게 변화되었는데 640×480 해상도의 키넥트 성능으로는 각 관절의 위치와 자세, 환경, 조명에 따라 최대 15cm가 넘는 오차범위가 발생했다. 상황에 따라 조금씩 다르지만 키넥트에 사람이 인지된 이후 가만히 있는 상황에서도 이러한 일이 발생했고 특히 손, 손목 부분이 가장 심했다. 이미 팔레트 부분의 피스톤 간의 간격이 채 10cm도 되지 않았기 때문에 이 방법은 추후 더 높은 성능의 키넥트나 3D 센서가 상용화되었을 때 가능할 것으로 보인다.
Fig. 19.Engine Piston Assembly Line. (a) Sensor Position, (b) Impact Sphere on Virtual 3D Space.
키넥트와 충돌 구를 사용한 방법은 가능성을 확인할 수 있었지만, 직접적인 활용을 하기에는 정확도가 부족한 문제가 있었다. 두 번째 방법은 키넥트를 패턴매칭을 위한 2D센서 (광학카메라)가 영상을 획득하기 위한 타이밍 트리거(Timing Trigger)로서 사용하는 것이다. 시스템은 Fig. 18과 같이 작업자를 바라보고 있는 고정된 1개의 키넥트와 2개의 2D 광학 센서가 필요하다. 2D 센서는 2개의 트레이에 배치된 팔레트 상단에서 각각 모니터링 하면서 피스톤의 위치와 앞 / 뒷면 유무를 확인한다. 이 방법은 각 피스톤의 위치에 따라 4개의 충돌 구를 지정하는 것이 아닌 2D 센서가 획득하려 하는 영상의 범위 영역, 즉 팔레트 위 전역에 1개의 큰 충돌 구를 배치하는 것이다. 팔레트의 메인 충돌 구에 손이 들어와서 약 0.5초 - 1초의 시간을 머무른 후 밖으로 빠져나갈 경우 “피스톤을 손으로 집었다.”라는 가정을 하였다. 충돌 구에서 손이 빠져나가게 되면 패턴매칭 이벤트가 일어난다. 4개의 피스톤에 대한 패턴매칭을 진행하여 없어진 1개의 피스톤을 찾아낸다. 없어진 피스톤과 대응되는 번호를 최종 조립부에 대해 UI로 표현하면서 올바른 조립을 유도하며 최종 조립부에 대해서도 패턴매칭을 통해 해당 위치에 피스톤이 들어왔는지, 앞 / 뒷면이 올바른지에 대해 판단한다. 1회의 피스톤 조립이 완료되면 해당 번호에 대응되는 이벤트를 종료(Off)시켜 다음 패턴매칭 검사에서 검사를 시도하지 않는다. 4개의 피스톤이 모두 조립되고 나면 이를 다시 초기화시켜 처음부터 검사를 진행한다.
이 과정에서 최종 조립부에 피스톤을 조립하기 전 중간단계에서 각도 기반의 스윙체크 과정과 거리기반 검사를 통해 “피스톤의 스윙 상태 확인을 통해 체결상태 유무 확인”과 “피스톤의 헤드부분에 대한 링 체결상태 확인”을 추가하였다. 다만 이 부분은 시스템을 최종적으로 적용하는 과정에서 작업자의 행동과 생각에 따라 무시될 수도 있는 이벤트에 해당하여(예를 들어 작업자는 한꺼번에 2가지 일을 진행할 수도 있다.) 제외하여 적용하였다.
4.5 자동차 기어박스 조립공정에 대한 적용
기어박스 조립공정에는 1개의 키넥트와 1개의 2D 센서가 사용된다. 키넥트는 작업자의 상체에 해당하는 관절 좌표를 획득하며 2D 센서는 최종판단을 위한 패턴매칭에 사용된다.
Fig. 20은 기어박스 공정에서 적용할 수 있는 본 시스템의 예시 구성도이다. 이 공정은 트레이에서 옮겨오는 기어박스에 해당하는 부품들을 순서대로 조립하는 형태로 이루어진다. 때문에 키넥트의 관절 좌표 및 위치기반의 검사방법을 이용해 주변에 있는 부품의 위치에 작업자의 손이 가는지를 확인한다. 이 방법으로 각 부품의 획득상태를 확인하는 데 필요한 다수의 센서 혹은 광학카메라를 사용하지 않을 수 있다. 동시에 피스톤에서와 마찬가지로 조립 작업영역(기어박스)에 충돌 구를 설정하여 조립이 끝나고 손이 위치에서 빠져나간 순간에 2D 센서를 작동시킨다. 따라서 작업자에 의해 가려지지 않은 정확한 2D 영상을 획득할 수 있으며 패턴매칭 또한 원활하게 이루어질 수 있다.
Fig. 20.Automobile Assembly Line - Gearbox Assembly.
실제 기어박스 공정에서는 부품의 위치가 정해지지 않아 추측할 수 없는 문제가 있었다. 이러한 난수적인 경우 작업자의 행동을 예측할 수 없어 Fig. 21의 실험세트에서처럼 특정한 위치에 부품들을 고정했다. 고정된 부품의 위치에 충돌 구를 배치하여 이곳에 손이 들어간 뒤 일정 시간이 흐르고 나올 경우 작업자가 부품을 획득한 것으로 확인하였다. 그리고 최종적으로 기어박스에 부품을 조립하는 과정에 충돌 구를 배치하여 이 충돌 구에서 벗어나는 순간 2D 센서가 작동하도록 트리거링 하였다. 작동된 2D 센서는 이미지 처리를 통해 패턴매칭 과정을 거치고 어떤 부품이 올라왔는지 확인한다.
Fig. 21.Each Sensor Position in Gearbox Assembly Line.
기어박스에 조립되는 부품은 5개의 종류로 되어있다. 주로 실수가 일어나는 것이 작은 링 형태의 부품 2종류인데 작업자들이 실수로 빠트리는 경우가 대부분이다. 이 경우에 대처하기 위해 시스템에서는 부품별로 충돌 구를 배치하였으며 해당 부품을 선택하지 않으면 프로세스가 진행되지 않는다. 각 부품에 대한 학습된 패턴매칭 이미지는 미리 지정되어 있으며 이벤트에 등록될 때 High / Low 성공판정 점수가 함께 지정된다. 또한, 지정된 ROI 영역만을 검사하며 이를 통해 전체 영상 중 특정 위치에서 등록된 물건을 찾을 수 있게 구현되었다. 이 부분은 피스톤 조립과정과 기어박스 조립과정이 공통으로 사용하고 있는 부분이다.
4.6 시스템 인식률
본 연구에서 제안한 검사 시스템은 키넥트의 인식 감도에 많은 영향을 받았다. 인식률 측정을 위해 자동차 조립공정 중 엔진 피스톤 조립과정과 기어박스 조립과정에 대한 실험을 25회씩 진행하였다. 실험에 사용된 시스템의 사양은 Intel Core i5 3570, 8GB Ram, Geforce GTX 560 이다. 프로그램 구조상 별도의 GPU 가속은 적용하지 않았기 때문에 GPU 자원은 대부분 GUI 렌더링에 활용되며 시스템은 패턴매칭, 판정연산 등으로 인해 CPU 성능에 더 영향을 받는다. 시스템은 환경과 상황에 따라 다른 결과가 나타났지만 대부분 키넥트의 위치와 각도, 조명을 고정할 경우 높은 인식 성공률을 보였다.
부품의 체결상태를 확인할 2D 패턴매칭 부분도 조명에 따라 적합한 학습데이터를 입력할 경우 오류가 거의 발생하지 않았다. 다만 작업자가 빠르게 행동하여 분당 작업속도를 높여 진행할 경우 검사 성공률이 급격하게 하락하는 것 Fig. 22를 통해 확인할 수 있다. 이러한 문제는 필터링을 통해 최적화시키는 과정에서 좌표 갱신속도가 떨어지면서 빠른 운동을 잡아내지 못하는 이유로 보인다. 또한 근본적으로 키넥트 센서의 해상도 및 데이터 갱신속도에 따른 한계로 보인다. 분당 1-2회 정도의 느린 작업속도 내에서 검사를 진행하면 높은 성공률을 확인할 수 있었다. 해상도와 갱신속도가 개선된 신형 3D 센서를 활용한다면 더 높은 성공률을 확인할 수 있을 것으로 예상한다.
Fig. 22.Success Rate according to Working count per minute.
Table 1.Rate of Assembly Working Success
5. 결 론
본 연구에서는 3D 동작 인식 센서를 응용하여 자동차 조립 공정에 적용될 수 있는 작업자 실시간 모니터링 시스템을 개발하였다. 이 과정에서 2D 광학카메라 센서와 2D 영상처리 기술을 3D 동작 인식 센서와 응용할 수 있는 방안을 제안하였으며 동작 인식을 통한 작업자의 생산능률 향상에 도움을 줄 수 있을 것을 기대하였다. 근 시일 내 보다 향상된 3D 동작 인식 센서 하드웨어가 출시된다면 2D 센서의 도움 없이 동작 인식만을 통한 조립검사가 가능할 것으로 보이며 같은 방식을 이용해 타 공정이나 다른 분야에 사용될 수 있을 것으로 생각한다.
현재 제안된 방법은 관절 좌표 데이터를 가공함으로써 얻을 수 있는 데이터를 토대로 인체의 행동을 정의하고 있다. 이는 본 연구에서 사용한 3D 동작인식 센서 키넥트의 관절 좌표 정확도에 의존하고 있으며 이 센서의 알고리즘 구조상 인체의 관절 위치를 추측하는 것에 가깝다. 따라서 이를 개선할 수 있는 더 나은 방안을 마련한다면 좋은 결과를 볼 수 있을 것으로 보이며 때에 따라 학습 알고리즘이나 정확도 개선을 위한 필터링 알고리즘을 개선하는 것도 방법이 될 수 있을 것 같다. 인체의 행동을 정의하는 방법에 있어 개선방안을 찾아 더 다양한 상황을 가정할 수 있도록 향후 개발한다.
References
- X. Zhang, Y. Ding, Y. Lv, A. Shi, and R. Liang, “A Vision Inspection System for the Surface Defects of Strongly Reflected Metal based on Multi-Class SVM,” Expert Systems with Applications, Vol. 38, No. 5, pp. 5930-5939, 2011. https://doi.org/10.1016/j.eswa.2010.11.030
-
Microsoft Kinect for Windows SDK Document,
http://msdn.microsoft.com/en- us/library/hh855347.aspx (accessed Feb, 2014). - C.H. Choi, Y. Taguchi, O. Tuzel, M. Liu, and S. Ramalinagam, “Voting-Based Pose Estimation for Robotic Assembly using a 3D Sensor,” Proceeding of IEEE International Conference on Robotics and Automation, pp. 14-18, 2012.
- J.P. Lewis, “Fast Template Matching,” Proceeding of Canadian Image Processing and Pattern Recognition Society, pp. 120-123, 1995.
-
OpenCV 2.4.9.0 Documentation, Template Matching,
http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html (accessed Feb. 2014). - B.G. Lee and J.J. Lee, “Wafer Position Recognition System using Radial Shape Calibrator,” Journal of Korea Multimedia Society, Vol. 14, No. 5, pp. 632-641, 2011. https://doi.org/10.9717/kmms.2011.14.5.632
- J.A. Ward, P. Lukowicz, G. Troster, and T.E. Starner, “Activity Recognition of Assembly Tasks using Body-Worn Microphones and Accelerometers,” IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 28, No. 10, pp. 1553-1567, 2006. https://doi.org/10.1109/TPAMI.2006.197
- W. Wang, C. Yang, X. Wu, S. Xu, and H. Li, “Kinect Based Dynamic Hand Gesture Recognition Algorithm Research,” Proceeding of Intelligent Human-Machine Systems and Cybernetics, pp. 274-279, 2012.
- O. Patsadu, C. Nukoolkit, and B. Watanapa, “Human Gesture Recognition using Kinect Camera,” Proceeding of Joint Conference on Computer Science and Software Engineering, pp. 28-32, 2012.
- E. Weng and L. Fu, “On-Line Human Action Recognition by Combining Joint Tracking and Key Pose Recognition,” Proceeding of IEEE Intelligent Robots and Systems, pp. 4112- 4117, 2012.
Cited by
- A System with Efficient Managing and Monitoring for Guidance Device vol.5, pp.4, 2016, https://doi.org/10.3745/KTSDE.2016.5.4.187