휴대폰은 보통 통화, 사진, 앱 등 무엇을 할 수 있는지로 정의됩니다. 하지만 대신 무엇이 들어있는지로 정의해 보세요. 48 kHz로 샘플링하는 충분히 보정된 마이크, 두세 개의 카메라, 밝은 LED 손전등, 진동 모터, 가속도계, 정밀한 속도로 깜빡일 수 있는 화면까지. 이것은 휴대폰이 아닙니다. 터치스크린이 달린 작은 실험실입니다.
대부분의 앱은 이러한 부품 중 하나를 원래 용도에 맞게 한 번에 하나씩만 사용합니다. 하지만 부품들을 원래 용도와 원래 용도 외로 조합하여 사용할 때 흥미로운 측정이 시작됩니다. 손전등을 카메라의 광원으로 사용하고, 진동 모터를 가속도계의 자극기로 활용하며, 두 번째 휴대폰을 실험의 상대역으로 쓰는 방식입니다. 이 글은 더 높은 수준으로 나아가는 세 단계의 과정을 통해 그 가능성의 지도를 그려봅니다.
1단계: 하나의 센서, 수동적으로 측정하기
가장 단순한 도구는 하나의 센서를 외부 세상을 향하게 한 뒤 돌아오는 반응을 분석합니다:
- 소리 스펙트럼 — 오디오를 녹음하고 스펙트럼을 계산하여 에너지가 어디에 집중되어 있는지 확인합니다. 모터 소리, 전원 험, 덜덜거리는 소리, 타격한 대상의 공명음 등 다용도로 활용할 수 있는 핵심 도구입니다.
- 탭 테스트 — 과일을 두드리거나 재질을 가볍게 쳐서 링다운을 분석합니다. 가장 강한 공명과 그것이 얼마나 빨리 감쇠하는지는 단순히 소리의 크기보다 내부 상태에 대해 훨씬 더 많은 것을 알려줍니다. (자세한 내용은 탭 테스트 관련 글을 참고하세요.)
- 진동 — 세탁기, 압축기, 3D 프린터 위에 휴대폰을 올려놓으면 가속도계가 고유한 진동 특성을 기록합니다.
- 카메라 색상 및 빛 — 스폿 색상 측정, 디스플레이 및 LED 조명의 플리커/깜빡임 빈도 감지, 조도 측정, 반복되는 대상의 개수 세기, 아날로그 계측기 읽기, 치수 추정.
핵심 원칙은 플랫폼이 허용하는 한 가장 가공되지 않은 상태(raw)로 캡처하는 것입니다. 안드로이드의 경우, 자동 이득 제어나 노이즈 억제 등 측정하려는 신호 자체를 왜곡하는 기능이 전혀 없는 가공되지 않은 마이크 경로를 요청하고, 광량의 일관성이 보장되어야 하는 측정에서는 카메라의 자동 노출과 화이트 밸런스를 고정하는 것을 의미합니다.
2단계: 휴대폰이 자극을 준 후, 그 자극에 대한 반응 측정하기
휴대폰에는 액추에이터도 내장되어 있어, 액추에이터와 센서를 결합하면 수동적인 감지를 능동적인 측정 도구로 탈바꿈할 수 있습니다:
- 손전등 + 카메라 반사율 — 손전등을 껐을 때와 켰을 때의 프레임 쌍을 캡처합니다. 두 프레임의 차이를 통해 표면이 기지의 빛을 어떻게 반사하는지 찾아내고, 주변 조명의 영향은 결과에서 대부분 상쇄됩니다.
- 광원으로서의 손전등: 맥박 및 반투명도 — 손전등을 켠 상태에서 손가락 끝으로 카메라를 덮으면, 카메라는 심장 박동에 따른 혈류량 변화를 관찰하는 광전 검출기가 됩니다. 동일한 광학 방식으로 재질의 반투명도를 측정할 수도 있습니다.
- 진동 모터 + 가속도계 + 마이크 — 휴대폰 스스로 대상을 진동시키면서 대상이 물리적, 음향적으로 어떻게 반응하는지 기록합니다. 내부가 비어 있는 패널과 꽉 찬 패널은 서로 다르게 반응합니다.
능동형 도구에는 수동형 도구에 없는 특징이 있습니다. 바로 자극이 무엇인지 알고 있다는 점입니다. 자극을 제어할 수 있으면 절대적인 수치 대신 비율과 반응을 바탕으로 기능을 구현할 수 있어, 기기마다 따로 보정을 거치지 않고도 서로 다른 휴대폰 모델 간에 결과를 비교할 수 있게 됩니다.
3단계: 두 대의 휴대폰, 하나의 실험
어떤 값들은 본질적으로 양면적입니다. 벽이 소리를 얼마나 차단하는지, 창문이 빛을 얼마나 통과시키는지 등이 그렇습니다. 휴대폰 한 대가 양쪽에 동시에 있을 수는 없지만, 두 대라면 가능하며 보통 가정에는 휴대폰이 두 대 이상 있습니다.
실험실 장비 없이도 이를 가능하게 하는 비결은 바로 동일 수신기 비율입니다. 소리나 빛을 방출하는 휴대폰이 스스로를 식별할 수 있는 자극(단계적 톤 스위프 또는 고정된 속도로 깜빡이는 화면)을 보냅니다. 측정하는 휴대폰은 이를 두 번 캡처합니다. 한 번은 방출 기기 사이에 장애물이 없는 상태(기준점)에서, 다른 한 번은 벽이나 창문을 통과한 상태에서 측정합니다. 오직 동일한 마이크나 카메라로 캡처한 두 값의 비율만이 결과값으로 사용됩니다. 방출 기기의 음량, 수신 기기의 민감도, 방의 환경 등은 모두 상쇄되어 사라집니다. 따라서 두 휴대폰 간의 시간 동기화나 케이블 연결, 상호 보정이 전혀 필요하지 않습니다. (자세한 과정은 차음 성능 측정 관련 글을 참고하세요.)
세 단계 모두에 적용되는 설계 원칙: 절대적인 수치를 절대 신뢰하지 마세요. 휴대폰의 마이크와 카메라는 모델마다 다르지만, 공명, 감쇠율, 오더 도메인 패턴, 동일 수신기 비율 등은 대체로 변하지 않습니다. 상대적인 값으로 구현된 기능은 어떤 기기에서든 작동하지만, 절대적인 값으로 구현된 기능은 기기마다 평생 보정이 필요합니다.
단일 측정값에서 카탈로그로
개별 측정값 하나만으로는 단편적인 정보에 불과합니다. 하지만 오늘 측정하고 다음 주에 다시 측정한 이 멜론, 이 바퀴, 이 벽처럼 측정값이 구체적인 대상과 연결될 때 비로소 지식이 됩니다. 따라서 모든 측정은 카탈로그 내의 대상 아래에 분류될 수 있으며(카테고리 → 대상 → 사용 사례 → 측정), 측정 이후에 실제 결과(ground-truth)를 라벨로 기록할 수도 있습니다. 예를 들어 멜론을 두드려 본 다음, 잘라서 속을 확인하고, 그 결과를 기록하는 식입니다. 수많은 사용자와 수많은 대상을 거치며 반복되는 이러한 피드백 루프 덕분에, 탭 테스트 분류기는 실험실 샘플이 아닌 실제 과일 데이터를 학습할 수 있게 됩니다.
또한 자전거 바퀴 조율이나 방의 단열 상태 점검처럼 단순한 측정을 넘어선 작업을 위해, 안내식 활동은 여러 도구를 올바른 순서로 연결하고 측정 사이에 해야 할 일을 알려주며 그 결과를 동일한 카탈로그에 기록합니다. 스포크 조율 관련 글에서 첫 번째 사례를 단계별로 살펴보실 수 있습니다.
앞으로 나아갈 방향
도구 목록은 계속 늘어나고 있습니다. 그리고 도구를 추가하는 동작이 누적 방식으로 설계되어 있어, 기존에 저장된 데이터를 전혀 수정할 필요 없이 레지스트리에 새 항목을 등록하기만 하면 됩니다. 모든 작업은 인터넷 연결 없이 기기 자체에서 실행되며 결과는 1초 안에 나타납니다. 오프라인 우선 측정 관련 글에서 이 제한 조건이 단순한 체크박스용 기능이 아니라 왜 시스템을 지탱하는 핵심 뼈대인지 설명합니다.