전현기

Polariant
Pol

편광을 활용한

6DoF VR controller 제작기
CONTENTS
1. 모름지기 VR이라 함은

2. 손.. 손을 보자 

3. Pol의 시작과 배경

4. Pol의 구성과 기본 원리

5. Pol의 역사, 그리고 인내와 시련의 역사

6. 그래서 지금은

7. 그리고 앞으로는
1.

모름지기

VR이라 

함은
1.1 인터랙션 = 본능
만질 수는 없어도 일단 손을 뻗고 보는게 사람의 마음
1.2 초기 VR 인터랙션의 문제
게임패드로 스타크래프트 유닛 컨트롤 하는 꼴
2.

손..

손을 보자
2.1 VR 모션 트래킹 입력장치
이미 있다. 하지만 비싸고, 번거롭다.
2.2 기존 기술의 한계
VISION-BASED
1. 카메라를 이용한 이미지 분석 방식

2. 제대로 하려면 수백만 화소 — 60fps 가정시 : 16ms당 Mbyte 단위의 데이터를 처리

3. “기껏해야 5W 전력수준인 모바일 폼팩터에서의 활용은 사실상 불가능하다.”

- Nizar Rodman, Developer Relations Manager, AMD
OTHERS
1. HTC Lighthouse(고속회전 적외선 레이저 동기화 방식) : HMD보다 송출기가 더 크다.
2. Google Daydream(9축 IMU 센서) : 절대적 위치 차이의 측정은 불가능하다.
2.3 숙제
연산량 — 우리 프로세서가 뭘 잘못했다 그래요.
•VR 컨텐츠 렌더링도 버거운 모바일 프로세서에 추가 부담을 주지 않을 것

•그러면서도 최소한 motion-to-photon 지연시간 16ms 이하를 확보할 것

•그러면서도 또한 mm~cm 단위의 정확도를 확보할 것
가격 — 배 보다는 작은 배꼽이 되자.
• 보급형 부품 만으로도 구성이 가능할 것
편의성 — 우리 부모님도 좀 쓰자.
• 추가 장비 설치의 거추장스러움을 제거할 것
• 그냥 쓰면 되게 할 것
그래서 직접 만들어보기로 했습니다.
3.

Pol의 

시작과 배경
3.1 시작은 사막개미
사막개미는 어떻게 집을 찾아올까?
3.2 사막개미와 Malus’ law
편광, 각도, 신호강도, 삼각함수, 그리고 벡터
3.3 최초의 실험
MK1(2010) : 편광 필터와 조도 측정 차를 바탕으로 한 2D 트래킹
4.

Pol의 

구성과 기본 원리
4.1 기본 구성
4개의 조도센서와 서로 다른 방향의 편광필름
4.2 기본 원리
편광 조명의 편광 방향 및 빛의 진행방향을 벡터 연산하는 알고리즘
5.

Pol의 

역사, 

그리고

인내와 시련의 역사
첫째

“센서는 어떻게 할까?”
둘째

“연산은 어디서 할까?”
5.1 선택의 기로 I -“센서는?”
5.1 선택의 기로 I -“센서는?”
종류가 너무 많았습니다.
digikey에만 총 16,618가지 광학 부품

스펙과 가격은 천차만별
MK 3 - 일단은, 아날로그
5.1 선택의 기로 I -“센서는?”
• 안정화 회로도 없이 Light-to-Voltage 센서 4개 배치

• Arduino Mega A인풋에 연결 + 9v 배터리 사용
✓전압 Noise가 Signal보다 큼

✓배터리가 소모될 수록 널뛰는 Noise
MK 4 - 그렇다면, I2C
5.1 선택의 기로 I -“센서는?”
• 가장 안정적인 스펙에 집중

• Arduino Mega + 16ch MUX 사용

• 연결 구성
SDA
SDA
SDA
SCL
SDA
MUX
DEMUX
Ambient

Sensor
MCU
…
당연했지만, 그땐 몰랐던 문제 = I2C의 더럽게 느린 속도
Reference: http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1750fvi-e.pdf
✓44개 센서의 동기화 불가능 —> 순차적 센싱으로 인한 부정확성

✓Sampling 속도의 한계 —> 무슨 수를 쓰더라도 지연 발생
절망적인_Datasheet.jpg
5.1 선택의 기로 I -“센서는?”
Vout
Vout
Vout
MK 5 - 센서 속도 + 데이터 안정성 + 통신 속도를 한번에
Voltage Output
Light Sensor
Powerful

Simultaneous

4ch

16bit

Cascadable

ADC
Vout
MCU
CS
SCLK
MOSI
MISO
5.1 선택의 기로 I -“센서는?”
<𝝻s 단위 속도의 센서> <고성능 ADC> <SPI 통신>
세 가지가 합쳐진 콤비네이션
…
성능은 제법이지만 전력소비와 가격이 높아 경제성이 부족
Reference: https://datasheets.maximintegrated.com/en/ds/MAX11040K-MAX11060.pdf
5.1 선택의 기로 I -“센서는?”
✓35mA x 11개 = 385mA —> 배보다 배꼽이 더 큰 전력소모

✓ADC 개당 1만원 이상 x 11개 —> 제조원가의 2/3
대망의 MK 6 - 어차피 쓸 MCU의 Internal ADC 활용
5.1 선택의 기로 I -“센서는?”
• MCU들은 거진 내부에 ADC를 달고 출시(Feat. Moore’s law)

• Internal ADC를 사용할만한 조건
‣ MUX를 활용

‣ 센서 출력이 안정적일 것

‣ 충분한 Internal ADC sample rate(동기화)
5.1 선택의 기로 I -“센서는?”
Thanks to: (주)원일렉트로닉스 송왕규 대표님
✓1Khz 수준의 작동 속도

✓ADC 부품단가 절감

✓전압 Noise 제거

✓MCU 사양은 오히려 상승
오늘의 교훈
✓ Datasheet는 답을 알고 있다.

✓ 덮어놓고 높은 스펙을 쫓으면 거지 꼴을 못면한다.

✓ 파랑새는 처음부터 집에 있었다.

(처음에 했던 시도가 답과 의외로 가까울 수도 있다.)
5.1 선택의 기로 I -“센서는?”
첫째

“센서는 어떻게 할까?”
둘째

“연산은 어디서 할까?”
5.2 선택의 기로 II -“연산은?”
원인
5.2 선택의 기로 II -“연산은?”
✓ 모바일 내장

✓ 낮은 전력소모

✓ 풍부한 stack
문제
✓ 44개 센서 패킷

✓ Baudrate 한계

=> Delay의 주범
결론
“MCU에서 연산한

결과를 패킷으로 전송”
후보 1 : FPGA
Reference: http://www.ni.com/tutorial/6097/en/#toc4
✓ 개발과 디버깅에 시간이 오래 걸린다.

✓ ASIC로 대량생산을 포함하면 막대한 돈이 든다.

✓ FPGA만으로 하자니 전력소비와 가격이 신경쓰인다.

✓ 삼각함수 위주의 Pol 알고리즘에 적절치 않다.
Field Programmable Gate Array
5.2 선택의 기로 II -“연산은?”
후보 2 : Microcontroller
List: https://en.wikipedia.org/wiki/List_of_CPU_architectures#Embedded_CPU_architectures
https://en.wikipedia.org/wiki/List_of_common_microcontrollers
https://en.wikipedia.org/wiki/ARM_Cortex-M#Chips_4
Chip
Core
Analog
Clock
Power
Memory
Other
Peripherals
µarch, core
•ARM - ARM

•Microchip - PIC

* Atmel - AVR

•Intel - 8051

•…
Chipmaker
•Atmel

•NXP

* Freescale

•STMicroelectronics

•…
5.2 선택의 기로 II -“연산은?”
선택 : STM32L1
Reference: http://www.arm.com/products/processors/cortex-m/cortex-m3.php
5.2 선택의 기로 II -“연산은?”
✓32bit 기반 - 연산에 유리

✓풍부한 IDE - 게다가 일부는 무료

✓12bit ADC 내장

✓다양한 칩에 컨트롤러로 내장

✓C++ 지원
하지만 PASS가 아니었습니다.
실패의 이유 = 계산 속도 50hz 수준 (목표치는 200hz 이상)
1. Clock speed

– 제조사에 따라 2배정도 차이 

2. DMIPS(Dhrystone MIPS) 

– Architecture별로 고정(M3: 1.25DMIPS/MHz)

– Coremark score를 사용하기도

3. FPU의 부재

– 계산과정에 floating point 계산이 있었지…!
5.2 선택의 기로 II -“연산은?”
해결 1 : Floating point가 문제라면 Fixed point을 사용해보자
훌륭한 CMSIS Software Pack
Reference: http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php
5.2 선택의 기로 II -“연산은?”
계산속도 200hz 달성!
해결 2 : 하는 김에 Architecture도 바꿔보자!
Reference: https://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php
http://www.mouser.com/ARMCortexM4/
5.2 선택의 기로 II -“연산은?”
계산속도 1,000hz 달성!
오늘의 교훈2
✓ 하드웨어에 크게 신경 안쓰게 만들어준 컴파일러에게 감사하자

✓ Embedded에서 Floating point계산을 피하자

- Floating point의 소프트웨어 구현은 수행시간을 엄청 잡아먹는다

✓ 피할 수 없다면 일단 좋은 하드웨어를 선택하자
5.2 선택의 기로 II -“연산은?”
6.

그래서 지금은
6.1 프로토타입 변천사
VR 이전
MK 3
MK 4
MK 5
MK 6
목업
MK 6
모듈부
7.

그리고 앞으로는
7.1 Pol MK 6
✓ 사용 환경에 따른 물리적 tilting

✓ 40mm x 40mm x 150mm

✓ 60fps 환경에서의 no latency

✓ 연속사용 5시간 이상

✓ micro-USB 충전/업데이트 포트
7.1 Pol DK 1 with SDK
includes..

✓ Pol MK 6 기반 하드웨어 1ea

✓ LED 편광 조명모듈 1ea

✓ Unity3D, Unreal 플러그인

✓ Android, iOS 블루투스 연동 플러그인

✓ 기타 게임 컨텐츠 개발시 필요한 부가기능 추가
목표가격 

“단돈 5만원(대..)”
Thank You
http://polariant.io - Request a Demo

mailto: partner_at_polariant_dot_io

[142]편광을 활용한6 dof 전현기

  • 1.
  • 2.
    CONTENTS 1. 모름지기 VR이라함은 2. 손.. 손을 보자 3. Pol의 시작과 배경 4. Pol의 구성과 기본 원리 5. Pol의 역사, 그리고 인내와 시련의 역사 6. 그래서 지금은 7. 그리고 앞으로는
  • 3.
  • 4.
    1.1 인터랙션 =본능 만질 수는 없어도 일단 손을 뻗고 보는게 사람의 마음
  • 5.
    1.2 초기 VR인터랙션의 문제 게임패드로 스타크래프트 유닛 컨트롤 하는 꼴
  • 6.
  • 7.
    2.1 VR 모션트래킹 입력장치 이미 있다. 하지만 비싸고, 번거롭다.
  • 8.
    2.2 기존 기술의한계 VISION-BASED 1. 카메라를 이용한 이미지 분석 방식 2. 제대로 하려면 수백만 화소 — 60fps 가정시 : 16ms당 Mbyte 단위의 데이터를 처리 3. “기껏해야 5W 전력수준인 모바일 폼팩터에서의 활용은 사실상 불가능하다.”
 - Nizar Rodman, Developer Relations Manager, AMD OTHERS 1. HTC Lighthouse(고속회전 적외선 레이저 동기화 방식) : HMD보다 송출기가 더 크다. 2. Google Daydream(9축 IMU 센서) : 절대적 위치 차이의 측정은 불가능하다.
  • 9.
    2.3 숙제 연산량 —우리 프로세서가 뭘 잘못했다 그래요. •VR 컨텐츠 렌더링도 버거운 모바일 프로세서에 추가 부담을 주지 않을 것 •그러면서도 최소한 motion-to-photon 지연시간 16ms 이하를 확보할 것 •그러면서도 또한 mm~cm 단위의 정확도를 확보할 것 가격 — 배 보다는 작은 배꼽이 되자. • 보급형 부품 만으로도 구성이 가능할 것 편의성 — 우리 부모님도 좀 쓰자. • 추가 장비 설치의 거추장스러움을 제거할 것 • 그냥 쓰면 되게 할 것
  • 10.
  • 11.
  • 12.
    3.1 시작은 사막개미 사막개미는어떻게 집을 찾아올까?
  • 13.
    3.2 사막개미와 Malus’law 편광, 각도, 신호강도, 삼각함수, 그리고 벡터
  • 14.
    3.3 최초의 실험 MK1(2010): 편광 필터와 조도 측정 차를 바탕으로 한 2D 트래킹
  • 15.
  • 16.
    4.1 기본 구성 4개의조도센서와 서로 다른 방향의 편광필름
  • 17.
    4.2 기본 원리 편광조명의 편광 방향 및 빛의 진행방향을 벡터 연산하는 알고리즘
  • 18.
  • 19.
    첫째 “센서는 어떻게 할까?” 둘째 “연산은어디서 할까?” 5.1 선택의 기로 I -“센서는?”
  • 20.
    5.1 선택의 기로I -“센서는?” 종류가 너무 많았습니다. digikey에만 총 16,618가지 광학 부품 스펙과 가격은 천차만별
  • 21.
    MK 3 -일단은, 아날로그 5.1 선택의 기로 I -“센서는?” • 안정화 회로도 없이 Light-to-Voltage 센서 4개 배치 • Arduino Mega A인풋에 연결 + 9v 배터리 사용 ✓전압 Noise가 Signal보다 큼 ✓배터리가 소모될 수록 널뛰는 Noise
  • 22.
    MK 4 -그렇다면, I2C 5.1 선택의 기로 I -“센서는?” • 가장 안정적인 스펙에 집중 • Arduino Mega + 16ch MUX 사용 • 연결 구성 SDA SDA SDA SCL SDA MUX DEMUX Ambient Sensor MCU …
  • 23.
    당연했지만, 그땐 몰랐던문제 = I2C의 더럽게 느린 속도 Reference: http://rohmfs.rohm.com/en/products/databook/datasheet/ic/sensor/light/bh1750fvi-e.pdf ✓44개 센서의 동기화 불가능 —> 순차적 센싱으로 인한 부정확성 ✓Sampling 속도의 한계 —> 무슨 수를 쓰더라도 지연 발생 절망적인_Datasheet.jpg 5.1 선택의 기로 I -“센서는?”
  • 24.
    Vout Vout Vout MK 5 -센서 속도 + 데이터 안정성 + 통신 속도를 한번에 Voltage Output Light Sensor Powerful Simultaneous 4ch 16bit Cascadable ADC Vout MCU CS SCLK MOSI MISO 5.1 선택의 기로 I -“센서는?” <𝝻s 단위 속도의 센서> <고성능 ADC> <SPI 통신> 세 가지가 합쳐진 콤비네이션 …
  • 25.
    성능은 제법이지만 전력소비와가격이 높아 경제성이 부족 Reference: https://datasheets.maximintegrated.com/en/ds/MAX11040K-MAX11060.pdf 5.1 선택의 기로 I -“센서는?” ✓35mA x 11개 = 385mA —> 배보다 배꼽이 더 큰 전력소모 ✓ADC 개당 1만원 이상 x 11개 —> 제조원가의 2/3
  • 26.
    대망의 MK 6- 어차피 쓸 MCU의 Internal ADC 활용 5.1 선택의 기로 I -“센서는?” • MCU들은 거진 내부에 ADC를 달고 출시(Feat. Moore’s law)
 • Internal ADC를 사용할만한 조건 ‣ MUX를 활용 ‣ 센서 출력이 안정적일 것 ‣ 충분한 Internal ADC sample rate(동기화)
  • 27.
    5.1 선택의 기로I -“센서는?” Thanks to: (주)원일렉트로닉스 송왕규 대표님 ✓1Khz 수준의 작동 속도 ✓ADC 부품단가 절감 ✓전압 Noise 제거 ✓MCU 사양은 오히려 상승
  • 28.
    오늘의 교훈 ✓ Datasheet는답을 알고 있다. ✓ 덮어놓고 높은 스펙을 쫓으면 거지 꼴을 못면한다. ✓ 파랑새는 처음부터 집에 있었다.
 (처음에 했던 시도가 답과 의외로 가까울 수도 있다.) 5.1 선택의 기로 I -“센서는?”
  • 29.
    첫째 “센서는 어떻게 할까?” 둘째 “연산은어디서 할까?” 5.2 선택의 기로 II -“연산은?”
  • 30.
    원인 5.2 선택의 기로II -“연산은?” ✓ 모바일 내장 ✓ 낮은 전력소모 ✓ 풍부한 stack 문제 ✓ 44개 센서 패킷 ✓ Baudrate 한계 => Delay의 주범 결론 “MCU에서 연산한 결과를 패킷으로 전송”
  • 31.
    후보 1 :FPGA Reference: http://www.ni.com/tutorial/6097/en/#toc4 ✓ 개발과 디버깅에 시간이 오래 걸린다. ✓ ASIC로 대량생산을 포함하면 막대한 돈이 든다. ✓ FPGA만으로 하자니 전력소비와 가격이 신경쓰인다. ✓ 삼각함수 위주의 Pol 알고리즘에 적절치 않다. Field Programmable Gate Array 5.2 선택의 기로 II -“연산은?”
  • 32.
    후보 2 :Microcontroller List: https://en.wikipedia.org/wiki/List_of_CPU_architectures#Embedded_CPU_architectures https://en.wikipedia.org/wiki/List_of_common_microcontrollers https://en.wikipedia.org/wiki/ARM_Cortex-M#Chips_4 Chip Core Analog Clock Power Memory Other Peripherals µarch, core •ARM - ARM •Microchip - PIC
 * Atmel - AVR •Intel - 8051 •… Chipmaker •Atmel •NXP
 * Freescale •STMicroelectronics •… 5.2 선택의 기로 II -“연산은?”
  • 33.
    선택 : STM32L1 Reference:http://www.arm.com/products/processors/cortex-m/cortex-m3.php 5.2 선택의 기로 II -“연산은?” ✓32bit 기반 - 연산에 유리 ✓풍부한 IDE - 게다가 일부는 무료 ✓12bit ADC 내장 ✓다양한 칩에 컨트롤러로 내장 ✓C++ 지원
  • 34.
  • 35.
    실패의 이유 =계산 속도 50hz 수준 (목표치는 200hz 이상) 1. Clock speed – 제조사에 따라 2배정도 차이 2. DMIPS(Dhrystone MIPS) – Architecture별로 고정(M3: 1.25DMIPS/MHz) – Coremark score를 사용하기도 3. FPU의 부재 – 계산과정에 floating point 계산이 있었지…! 5.2 선택의 기로 II -“연산은?”
  • 36.
    해결 1 :Floating point가 문제라면 Fixed point을 사용해보자 훌륭한 CMSIS Software Pack Reference: http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php 5.2 선택의 기로 II -“연산은?”
  • 37.
  • 38.
    해결 2 :하는 김에 Architecture도 바꿔보자! Reference: https://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php http://www.mouser.com/ARMCortexM4/ 5.2 선택의 기로 II -“연산은?”
  • 39.
  • 40.
    오늘의 교훈2 ✓ 하드웨어에크게 신경 안쓰게 만들어준 컴파일러에게 감사하자 ✓ Embedded에서 Floating point계산을 피하자
 - Floating point의 소프트웨어 구현은 수행시간을 엄청 잡아먹는다 ✓ 피할 수 없다면 일단 좋은 하드웨어를 선택하자 5.2 선택의 기로 II -“연산은?”
  • 41.
  • 42.
    6.1 프로토타입 변천사 VR이전 MK 3 MK 4 MK 5 MK 6 목업 MK 6 모듈부
  • 43.
  • 44.
    7.1 Pol MK6 ✓ 사용 환경에 따른 물리적 tilting ✓ 40mm x 40mm x 150mm ✓ 60fps 환경에서의 no latency ✓ 연속사용 5시간 이상 ✓ micro-USB 충전/업데이트 포트
  • 45.
    7.1 Pol DK1 with SDK includes.. ✓ Pol MK 6 기반 하드웨어 1ea ✓ LED 편광 조명모듈 1ea ✓ Unity3D, Unreal 플러그인 ✓ Android, iOS 블루투스 연동 플러그인 ✓ 기타 게임 컨텐츠 개발시 필요한 부가기능 추가 목표가격 “단돈 5만원(대..)”
  • 46.
    Thank You http://polariant.io -Request a Demo mailto: partner_at_polariant_dot_io