[iOS] 센서 이야기 - 자이로스코프
Background
스마트폰에는 여러 가지의 센서들이 들어가 있다. 자기력계, 가속도계, 자이로스코프, 기압계, 고도계, 위치센서(GPS, Glonass, Galileo, Beidou), 조도센서, 근접센서 등이 대표적이다. 모든 센서들은 자기들의 영역이 있다. 자기력계는 자기장 측정, 가속도계는 가속력 측정, 자이로스코프는 기울기, 기압/고도/조도/근접 등등 모두 현실 세계의 물리량을 수치로 환산하여 OS에 제공하는 역할을 한다. 이번에는 그중에서도 자이로스코프와 가속도계의 협업에 대해서 얘기해보려고 한다.
Gyroscope
누구냐, 넌?
아래는 일반적으로 우리가 보는 자이로스코프의 이미지이다. 원래의 자이로스코프는 중심에 횡방향으로 고속 회전하는 회전판이 있다. 정확한 원리의 이름이 이제는 기억나지 않으나, 일반적으로 고속으로 회전하는 물체의 중심축은 안정적이다. 대표적으로 팽이를 생각하면 쉽다. 팽이가 고속으로 회전하기 시작하면, 못 같이 뾰족한 침의 위에서 균형을 유지하면서 안정적인 축을 중심으로 회전한다. 이처럼 고속으로 회전하는 물체의 축은 안정적이다. 자이로스코프는 이렇게 고속으로 회전하는 안정적인 축에 아래의 그림처럼 륜을 여러 겹으로 감싼 것이다.

물체가 기울기가 변해도 중심축이 안정적으로 한 방향으로 유지된다. 반대로 말하면 물체의 기울기에 따라서 축을 감싸고 있는 륜들의 기울기가 따라 변하는 것이다. 여기 륜들의 기울기가 얼마큼 변하는지를 측정해서 수치로 환산하여 제공하는 것이 자이로스코프이다. 그런데 여기서 이야기가 끝나면 재미가 없어진다. 좀 더 깊게 들어가보자.
가속도계와 협업
자이로스코프는 얼마큼 기울어졌는지를 측정하는 도구이다. 문제는 기울기의 변화가 발생하면 이를 수치로 알려주지만, 기울기의 변화가 발생하지 않으면 하는 일은 회전 밖에 하는 일이 없다. 그리고 기울기의 정도만 알려줄 뿐, 그것이 바닥을 향하는지 하늘을 향하는지 도무지 알 수가 없다. 여기서 우리는 가속도계의 도움을 받게 된다.
갑자기 왜 가속도계 인가 싶을 것이다. 가속도계는 말 그대로 가속도를 측정한다. 가속도는 정지된 물체에는 작용하지 않는다. 하지만 우리가 간과하고 있는 것이 하나 있다면, 지구상의 모든 물체에 끊임없이 항상 적용되는 가속도가 하나 있다. 바로 '중력가속도'이다. 물체에 아무런 운동이 가해지지 않아도, 가속도계에는 중력가속도가 항상 감지되고 있다. 그럼 이 사실을 자이로스코프에 대입해 보자.

위의 그림에서 빨간색이 중력가속도이다. 우리는 가속도계로 바닥이라고 불리는 지구의 지표면 방향이 어디인지를 알게 되었다. 그럼 지구의 지표면 방향을 중심으로 물체의 기울기를 대입해 보자. 그럼 우리는 스마트폰이 가로화면인지 세로화면인지를 비로소 인지할 수 있게 된다. 이처럼 하나의 센서가 감지하는 물리 데이터를 다른 센서들의 물리 데이터와 합치면 우리가 알 수 없다고 여겼던 것들에 대해서 기기가 감지할 수 있게 된다.
Conclusion
자이로스코프의 원리와 가속도계와 함께 어떻게 사용되는지에 대해서 알아봤다. 이 이야기를 왜 시작했는지를 뒤늦게 말하자면, 스마트폰에서 활용할 수 있는 개발 자원이 생각보다 많다는 것이다. 서론에서처럼 스마트폰에는 다양한 센서들이 있다. 그리고 넓은 범위에서 보면 마이크, 카메라, NFC, 블루투스 등도 외부 세계의 물리 신호를 감지하는 센서의 역할을 한다. 이러한 현실 세계의 물리적인 값들을 사용하면 새로운 UX를 만들 수 있다. 센서의 중요성을 강조하는 이유는 이러한 물리적인 세계의 신호를 사용하지 않는다면, 솔직히 스마트폰은 그냥 작은 브라우저의 역할만 수행하게 된다. 센서를 이용해서 우리가 예상치 못했던 사용자 경험을 만드는 것도 모바일 환경에서 제공할 수 있는 또 다른 놀라운 경험 중에 하나이지 않을까 싶다. 특히, 요즘은 ML 모델을 이용한 수치 해석으로 인하여, 이전과 다르게 원하는 데이터의 감지와 추출이 상대적으로 쉬워진 측면도 있다. 노이즈가 끼여있는 raw data를 전처리하여 정제하고, ML 모델로 원하는 값을 추론하여 활용하는 것이다. 이를 알고 나면 앞으로 서비스의 개발과 기능을 고민할 때에 활용할 수 있는 자원 혹은 무기가 더 생길 것이다.
https://developer.apple.com/documentation/CoreMotion
번외로 스타벅스의 사이렌 오더에 대해서도 시간이 되면 찾아보자. 요약하자면 마이크를 이용해서 비가청 주파수를 감지하여, 고객이 어느 매장에 있는지를 인지하는 시스템이다. 알고 나서 보면, 비가청 음역대를 이용한 서비스의 이름에 스타벅스 상표의 “사이렌”을 활용한 네이밍 센스 또한 기가 막히다.
