SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
전현기

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

Contenu connexe

Tendances

백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
NAVER D2
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완
NAVER D2
 

Tendances (20)

3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 
분산저장시스템 개발에 대한 12가지 이야기
분산저장시스템 개발에 대한 12가지 이야기분산저장시스템 개발에 대한 12가지 이야기
분산저장시스템 개발에 대한 12가지 이야기
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
 
Big query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetupBig query at GDG Korea Cloud meetup
Big query at GDG Korea Cloud meetup
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기
 
[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster
 
[235]루빅스개발이야기 황지수
[235]루빅스개발이야기 황지수[235]루빅스개발이야기 황지수
[235]루빅스개발이야기 황지수
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
what is_tabs_share
what is_tabs_sharewhat is_tabs_share
what is_tabs_share
 
Community Openstack 구축 사례
Community Openstack 구축 사례Community Openstack 구축 사례
Community Openstack 구축 사례
 
[SoftCon]SDN/IoT 그리고 Testbed
[SoftCon]SDN/IoT 그리고 Testbed[SoftCon]SDN/IoT 그리고 Testbed
[SoftCon]SDN/IoT 그리고 Testbed
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기
 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완
 
User Story :: Cloudike with KT UCloud Biz
User Story :: Cloudike with KT UCloud BizUser Story :: Cloudike with KT UCloud Biz
User Story :: Cloudike with KT UCloud Biz
 
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델[244] 분산 환경에서 스트림과 배치 처리 통합 모델
[244] 분산 환경에서 스트림과 배치 처리 통합 모델
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
 
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 

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

[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
MinGeun Park
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남
Jae Sang Lee
 
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
Hyun-jik Bae
 
110512 한국ni webinar final
110512 한국ni webinar final110512 한국ni webinar final
110512 한국ni webinar final
Cana Ko
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
Jeongkyu Shin
 

Similaire à [142]편광을 활용한6 dof 전현기 (20)

[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud[박민근] 3 d렌더링 옵티마이징_nv_perfhud
[박민근] 3 d렌더링 옵티마이징_nv_perfhud
 
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
GOTHAM 오픈소스 메쉬 네트워킹 소프트웨어 패키지
 
TestBCD2015-1(Answer)
TestBCD2015-1(Answer)TestBCD2015-1(Answer)
TestBCD2015-1(Answer)
 
라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남라즈베리파이 와 스카이로버 나노에 만남
라즈베리파이 와 스카이로버 나노에 만남
 
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
 
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
NanoQplus for EFM32 - EnergyMicro Seminar Korea 20120823
 
110512 한국ni webinar final
110512 한국ni webinar final110512 한국ni webinar final
110512 한국ni webinar final
 
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
[IGC 2016] 넷게임즈 김영희 - Unreal4를 사용해 모바일 프로젝트 제작하기
 
Spark machine learning & deep learning
Spark machine learning & deep learningSpark machine learning & deep learning
Spark machine learning & deep learning
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
콩테크 비콘 외 하드웨어 카탈로그(kongtech hardware catalog)
콩테크 비콘 외 하드웨어 카탈로그(kongtech hardware catalog)콩테크 비콘 외 하드웨어 카탈로그(kongtech hardware catalog)
콩테크 비콘 외 하드웨어 카탈로그(kongtech hardware catalog)
 
Multithread & shared_ptr
Multithread & shared_ptrMultithread & shared_ptr
Multithread & shared_ptr
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
Pivot3 overview
Pivot3 overviewPivot3 overview
Pivot3 overview
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
 
모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
 
CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기
 

Plus de NAVER D2

Plus de NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

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

  • 2. CONTENTS 1. 모름지기 VR이라 함은 2. 손.. 손을 보자 3. Pol의 시작과 배경 4. Pol의 구성과 기본 원리 5. Pol의 역사, 그리고 인내와 시련의 역사 6. 그래서 지금은 7. 그리고 앞으로는
  • 4. 1.1 인터랙션 = 본능 만질 수는 없어도 일단 손을 뻗고 보는게 사람의 마음
  • 5. 1.2 초기 VR 인터랙션의 문제 게임패드로 스타크래프트 유닛 컨트롤 하는 꼴
  • 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 단위의 정확도를 확보할 것 가격 — 배 보다는 작은 배꼽이 되자. • 보급형 부품 만으로도 구성이 가능할 것 편의성 — 우리 부모님도 좀 쓰자. • 추가 장비 설치의 거추장스러움을 제거할 것 • 그냥 쓰면 되게 할 것
  • 12. 3.1 시작은 사막개미 사막개미는 어떻게 집을 찾아올까?
  • 13. 3.2 사막개미와 Malus’ law 편광, 각도, 신호강도, 삼각함수, 그리고 벡터
  • 14. 3.3 최초의 실험 MK1(2010) : 편광 필터와 조도 측정 차를 바탕으로 한 2D 트래킹
  • 16. 4.1 기본 구성 4개의 조도센서와 서로 다른 방향의 편광필름
  • 17. 4.2 기본 원리 편광 조명의 편광 방향 및 빛의 진행방향을 벡터 연산하는 알고리즘
  • 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++ 지원
  • 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 -“연산은?”
  • 38. 해결 2 : 하는 김에 Architecture도 바꿔보자! Reference: https://www.arm.com/products/processors/cortex-m/cortex-m4-processor.php http://www.mouser.com/ARMCortexM4/ 5.2 선택의 기로 II -“연산은?”
  • 40. 오늘의 교훈2 ✓ 하드웨어에 크게 신경 안쓰게 만들어준 컴파일러에게 감사하자 ✓ Embedded에서 Floating point계산을 피하자
 - Floating point의 소프트웨어 구현은 수행시간을 엄청 잡아먹는다 ✓ 피할 수 없다면 일단 좋은 하드웨어를 선택하자 5.2 선택의 기로 II -“연산은?”
  • 42. 6.1 프로토타입 변천사 VR 이전 MK 3 MK 4 MK 5 MK 6 목업 MK 6 모듈부
  • 44. 7.1 Pol MK 6 ✓ 사용 환경에 따른 물리적 tilting ✓ 40mm x 40mm x 150mm ✓ 60fps 환경에서의 no latency ✓ 연속사용 5시간 이상 ✓ micro-USB 충전/업데이트 포트
  • 45. 7.1 Pol DK 1 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