IKEA 가구 조립을 도와주는 AR iOS앱 제작기

AR 기술로 실용성있는 애플리케이션을 만들어보자

김유경
6 min readJul 10, 2019

Motivation

이케아 조립 과정을 AR 앱을 통해 간편히 볼 수 있게 한 Adam Pickard의 컨셉비디오에 영감을 받아 프로젝트를 시작하게 되었습니다. AR 기술이 게임과 같은 Entertain 분야에는 많이 활용되고 있지만 실용적인 분야에는 활용이 드물었기 때문에 ‘가구 조립을 돕는 AR 앱’ 컨셉이 특히 매력적으로 다가왔습니다. 또한 최근 1~2년 사이에 Vuforia, Ar Core, Arkit 등 폰에서 구동되는 AR 앱을 만들 수 있게 하는 개발 플랫폼들이 여럿 오픈되어 구현 가능성 또한 엿볼 수 있었고, 해당 컨셉의 앱을 제작하는 것을 목표로 잡아 과제를 진행하였습니다.

Conceptual Art ‘AR Assembly’ by Adam Pickard

User Problems

복잡한 단면 설명서(왼쪽)와 이케아 조립에 실패하여 기괴한 의자를 만든 모습(오른쪽)

앱 시나리오를 설계하기 전에 유저가 느끼는 문제 상황을 정의해 보았습니다. 기존에 이케아와 같은 가구 구조립에서 가장 어렵게 느껴지는 Pain Point 들은 다음과 같았습니다.

  1. 완성되기까지의 전 과정의 이해가 쉽게 파악되지 않는다.

조립하라는 부품을 통해 최종적으로 내가 구입한 가구 모양이 어떻게 되는지 상상이 어려울 때가 자주있다.

2. 단면도의 한계 그림으로 표현 부품을 실제 부품으로 인식하기 어렵다

비슷한 모양의 부품이 있을 경우 (ex. 짧은 나사, 중간 길이 나사 등) 조립에 착오가 있어 다시 조립한 경험이 있다.

App Scenario

위의 두가지 문제를 해결하기 위한 AR앱의 간략한 유저 시나리오를 아래와 같이 설정했습니다.

주요 기능은 3d 조립 메뉴얼을 통해 조립과정을 더 쉽게 파악하게 하고, 현실의 각 부품들이 가구의 조립 과정에서 어디에 위치해야하는지를 효과적으로 보여주는 것 입니다.

  1. 가구 에셋 불러오기 : 스마트폰으로 제품 코드를 입력하거나 가구에 대한 특징 정보를 인식시키면 가구에 해당하는 설명 Assets들을 불러와진다.
  2. 가구 조립 과정 스킴 : 가구 조립 전체 과정을 AR 환경에서 스킴 할 수 있다.
  3. 부품 인식 : 나사와 같은 특정 부품을 카메라로 인식시키면 위치해야 할 곳을 AR 환경에 표현된다.
  4. 가구 3D 조립 설명서 : 가구 조립 과정 중 다음 단계 조립 상태를 으로 확인 할 수 있다.

본격적으로 위 시나리오를 AR 환경에 반영하기까지 몇 번의 실패와 재 시도 과정이 있었습니다. 😭

First Trial: Vuforia + Unity

첫번째 시도는 Vuforia Sdk + Unity 조합으로 안드로이드 OS 앱 개발을 시작했습니다. Vuforia Sdk로 AR 환경에 특정 가상 물체나 인터페이스를 띄우는 것 까지는 수월하게 진행할 수 있었지만 기술적 한계로 실시간으로 Object를 인식시키기 위해서는 가이드 종이가 꼭 필요했습니다. 이런 방식의 인식방법은 적당한 크기(물컵 크기)의 부품에는 인식 속도와 인식율 측면에서 괜찮은 성능을 보였지만, 의자나 책상 등의 큰 부품을 인식 시키기에는 가이드 종이로 인해 한계가 있음을 깨달았습니다.

실제로 Vuforia Object Detection 가이드 종이를 A0 크기로 뽑아 인식을 진행하고 있는 모습😢

Second Trial: ARKit

첫번째 시도의 실패로 다른 AR Sdk를 탐색해 보았는데요. 구글에서 오픈한 ARCore를 먼저 고려해보았는데, ARCore는 실시간 3D Object를 AR App 구동시에 인식을 할 수 있는 환경이 되지 않아 마지막으로 애플사의 ARKit 을 검토해 보았습니다.

다행히도, ARKit 에는내 주변 환경을 인식하는 World Tracking에서 부터 계속 골머리를 썩혀오던 Object Tracking(3D object Detection) 까지 문제없이 개발할 수 있는 환경이었습니다. Scanning and Detecting 3D Objects Sample Code를 빌드해서 테스트로 실제 가구 부품 Object을 인식시켜봤을 때 인식율도 그렇게 나쁘지 않아서 결국 iOS 환경에서 다시 개발을 시작했습니다.

가구 부품을 Sample Code 앱를 이용해 인식하는 모습

Completed!

시나리오 상의 기능을 개발하기 위해 Arkit의 World Tracking 과 Object Tracking 관련 Function을 주로 활용하였고, AR node에 motion을 추가하여 더 쉽게 조립 과정이 이해되도록 구성하였습니다. 아래는 앱의 시나리오를 반영한 앱의 시연 영상입니다.

Limitations

처음 기획한대로 개발하기까지 몇 가지 한계가 존재했는데, 첫번째는 너무 작은 부품은 3D object 인식이 아직은 어렵다는 것입니다. Arkit의 스캐닝 앱에서는 최소 5cm 이상의 Object를 인식시키기를 권장하는데, 볼트와 같은 부품같은 경우는 훨씬 작은 경우가 많아 인식이 잘 되지 않아 아쉬운 점이 있었습니다. 또, 결국에 증강 현실(AR 환경)에 가상의 부품이 모두 3D Asset으로 존재해야 하는데, 해당 3D Asset들이 만들어져 있지 않은 경우 구현에 한계가 있었습니다. 이러한 한계들은 실시간 Object 인식에서 Resolution 향상과 Object의 스캐닝으로 3D Asset이 자동으로 생성되는 기술 등의 발전으로 개선될 수 있을 것입니다.

개발 과정에서 위에서 언급한 실패들 말고도 자잘한 고난들이 많아 힘들기도 했지만, AR 기술을 활용하여 실제로 동작하는 앱을 만드는 과정이 정말 흥미로웠고 기술을 먼저 익혀보는데 많은 도움이 되었습니다. 현실에서도 실용적으로 활용될 수 있는 AR 앱을 사용하는 세상이 기다려지네요 :)

References

다음은 개발에 참고했던 자료들과 강의입니다.

https://3dwarehouse.sketchup.com

--

--