1. 프로젝트 소개를 부탁합니다.
RealVR Drvive는 가상현실(VR) 기술과 원격제어 기술을 결합하여 실제 차에 탑승하여 운전하는 듯한 경험을 제공하는 프로젝트입니다.
한마디로 Telepresense의 기술을 확장한 Teledrive라고 말할 수 있습니다.
Cardboard SDK를 활용하여 차량의 운전석에 장착된 카메라에서 전송되는 영상과 동시에 Headtracking 정보를 원격의 차에 설치된 카메라 제어 장치를 통하여 운전석에서 카메라 시야를 그대로 VR로 전달합니다. 뿐만 아니라 조이스틱의 스티어링휠, 엑셀, 브레이크 입력 정보를 Arduino를 통하여 R/C 차의 조향 및 주행을 차를 원격 운전하는 기술도 함께 제공합니다.
홈페이지 : https://sites.google.com/site/realvrdrive/
박언규 : 팀장, ukpark@gmail.com
김보근 : 개발자, bogeunnet@gmail.com
2. 프로젝트를 시작하게 된 동기와 HackFair에 참가한 계기가 궁금합니다.
어렸을때 정말 가지고 싶었던 RC카! 하지만 너무 비싸 그때는 정말 엄두도 못냈었습니다. 이제 직장생활도 하고 어릴적 로망이었던 RC를 사게 되었는데요. 한 몇달 가지고 나니 뭔가 좀 부족하다는 느낌이 들었습니다. 정말 진짜 차랑 똑같이 조향장치, 차동장치, 서스펜션, shock damper, 등등 완전 차를 그대로 축소한 걸 보며 이게 그냥 장난감이 아니구나 하는 생각을 했습니다. 단 운전하는 것만은 여전히 무선 조정기이서 이걸 좀더 실감나게 할 수 없을까 고민했습니다. 그래서 생각한게 레이싱 게임용 Steering Wheel로 차를 운전할 수 있지 않을까라는 생각을 했습니다.. 그 다음에는 실제 운전석에 타서 보이는 화면을 볼 수 있으면 좋지 않을까하는 순간 VR 기술이 눈에 들어왔습니다. 그래서 만들어진게 바로 RealVR이 되었습니다.
HackFair는 자주가는사이트 게시판에서 정말 우연히 HackFair 참가자를 모집하는 글을 보게 되어 참가하게 되었습니다.아마 RealVR Drive를 혼자만 즐기기 보다는 다른 사람들과 함께 즐기면 좋겠다는 생각도 들었고 또 외부 공개가 되니 조금 더 열심히 해서 완성도를 높일 수 있는 기회라고 생각이 들었습니다. (물론 참가 상품 욕심도 쬐금^^)
3. 프로젝트 진행 중 기술적으로 가장 어려웠던 부분은 어떤 것이었나요? 그리고 어떻게 해결하셨나요?
Head Tracking 부분이 가장 어려웠던 부분인데요, 실제 sensor 값이 부정하거나 계속 변해서 drift 도는 경우가 자주 발생했습니다. 조금 더 파고들면 kalman filter를 사용하면 어느 정도 안정된 값을 얻을 수 있었는데요, 유사한 기능을 하는 다른 프로젝트를 참고하였습니다.
4. Cardboard를 주된 입력 장치 중 하나로 사용하셨는데, 어떤 요소들을 사용하셨나요?
Cardboard SDK를 활용하면 쉽게 사용자 시야를 쉽게 추적할 수 있었습니다. 스마트폰의 센서값을 그대로 활용하는 것보다, 가장 “적당한” 수준의 튜닝된 값을 쉽게 찾을 수 있기 때문에 튜닝에 많은 시간을 소모하지 않아 작업 능률이 높을 것 같았습니다. 하지만 프로젝트를 진행하면서 개발 내용을 일부 수정하면서 Cardboard SDK에도 조금씩 수정도 필요했고 “적당한 실시간성"을 위해서 Cardboard SDK를 Head Tracking 성능을 튜닝 Reference로만 활용했었습니다. 그리고, Eclipse 환경에서 작업했을 때보다 훨씬 간편하고 안정적인 개발환경인 Android Studio를 활용해서 보다 쉽고 안정적으로 개발할 수 있었습니다.
5. Cardboard를 사용하려고 하는 다른 개발자분들과 공유하고 싶은 내용이 있으신가요?
Cardboard SDK를 이용하여 Telepresence 구현하기가 쉽지가 않았습니다. 왠지 영상만 받아서 Cardboard로 보내면 쉽게 될꺼 같다고 생각하실 분이 많이 있을 것 같은데, 프로젝트 시작할때는 저희들도 그렇게 생각 했었으니까요. 자동차에 장착된 IP 카메라에서 오는 영상을 실시간으로 VR에서 재생하면서 동시에 VR에서 발생되는 Head Tracking 값을 Bluetooth로 보내주어야 하는 기능을 구현만 하면 되겠다고 생각했는데, 현재의 Cardboard SDK에서는 외부 영상 입력을 지원하지 않았고, 대신에 그럼 Head Tracking 용도로만 Cardboard SDK를 사용하여 Background Service로의 동작을 하는 것도 시도했지만 Cardbaord App이 Background로 가면 동작을 멈춰버려서 사용할 수 가 없었습니다.
실제로는 저희 프로젝트에서는 Cardboard SDK를 Head Tracking 성능의 Reference로 삼고, Headtracking 부분과 외부 실제 영상을 VR로 출력하는 App을 완전히 새롭게 만들어야 했습니다. 그리고 Cardboard SDK 만큼을 성능을 내기 위해 튜닝에도 많은 시간을 썼었습니다. 구글에서 Cardboard SDK를 확장하여 Telepresence App 개발에도 쉽게 사용할 수 있도록 하면 더 많은 개발자들이 쉽게 재미있는 아이디어를 현실화 할 수 있을 것 같습니다. :)
6. RC 카와 Cardboard 를 포함한 다양한 입력장치 간에 어떻게 통신이 이루어지는지 궁금합니다.
사용된 기술은 USB, Bluetooth, WiFi, RC RF 통신입니다. RC카의 동작은 RC카에 주로 사용되는 2.4GHz RF Receiver를 통해서 무선 조정기로부터 오는 신호에 따라 동작합니다. 무선 조정기를 통해 자동차를 조정하게 되는데, Cardboard에서 발생되는 Head Tracking 정보를 Bluetooth를 통해 아두이노 보드로 전송하게 됩니다. 또한 게임용 스티어링 휠에서 발생되는 정보도 USB를 통해 아두이노 보드로 입력받고, 아두이노 보드는 이 신호를 RC카 RF Transmitter로 전달하게 됩니다. 한마디로 사람이 조정하는 RC카 조정기를 손대신에 Steering Wheel 의 신호를 변환하여 RC카를 조정하게 되는 것입니다.
7. 향후 프로젝트를 발전시킬 추가적인 계획이 있으신가요?
이번 구글 핵페어 참가로 받은 Tango 태블릿으로 RealVR 2.0을 생각하고 있습니다. 기존에 단순한 화면 전송 뿐만 아니라 실제 낯선 곳을 다니면서 Tango 태블릿에 장착된 Depth 카메라를 이용하여 3D 지도를 만들 계획을 가지고 있습니다.
8. 마지막으로 HackFair 행사에 관한 소감 한마디 부탁합니다.
우연히 HackFair 를 알게되었지만, 정말 소중한 경험을 하게 되었습니다. HackFair 당일 저녁은 가족들이 응원하러 와서 뒷풀이에는 참석하지 못했는데요, 지금생각해보면 교류할 기회가 적어서 많이 아쉽습니다. 그리고 다음에도 기회가 있다면 꼼 참가하고 싶습니다. 아니 지금부터 다음 프로젝트를 준비를 해야겠네요.