MPU6050 모션 실험
What
책상 위의 아두이노 보드 하나로 "차가 지금 얼마나 멀미를 일으키고 있는가"를 숫자로 만들고, 그 숫자가 임계값을 넘기 전에 손목을 두드리는 데까지 가 본 실험입니다. 여기서 만든 측정 · 임계값 · 진동 패턴이 Glide의 하드웨어가 되었습니다.
Why
멀미는 "불편하다"는 말로만 오가고, 그래서 개선했다는 주장도 검증할 수 없습니다. 먼저 재는 법이 필요했습니다. 국제 표준 ISO 2631-1에 뿌리를 둔 MSDV(Motion Sickness Dose Value)를 고른 이유는 하나입니다 — 표준이어야 남과 같은 언어로 이야기할 수 있습니다.
그리고 재는 것만으로는 아무것도 바뀌지 않습니다. 숫자가 사람의 몸에 닿아야 합니다.
Process
- 센서 두 개 – MPU6050 두 개를 각각 차체와 머리에 붙였습니다. 멀미는 차의 움직임이 아니라 차와 머리의 차이에서 오기 때문입니다.
- 50Hz · 200 샘플 보정 – 시작할 때 200개 샘플로 정지 상태를 기준 삼아 중력 성분을 빼고, 50Hz로 적분해 MSDV를 계산했습니다.
- 진동 패턴 – 225ms 켜짐 → 100ms 꺼짐 → 225ms 켜짐. 실제로 차에 타 보며 고른 값입니다. 한 번 길게 울리면 놀라고, 짧게 두 번은 알림으로 읽히지 않았습니다.
- 좌우를 나눠 보냄 – 진동 모터를 좌우로 나눠, 어느 쪽으로 쏠릴지를 세기 곡선으로 먼저 알렸습니다.
Result
- 작동한 것 – 정지 기준 보정 뒤에는 손으로 흔드는 정도의 움직임도 MSDV 곡선에 잡혔고, 임계값을 넘기 2초 전쯤 진동을 보낼 수 있었습니다. 이 2초가 Glide의 "2~7초 선행 예고"의 시작점입니다.
- 실패한 것 – 보드의 MPU6050 두 개가 I2C 버스에서 동시에 잡히지 않아 실시간 측정이 막혔습니다. 주소 충돌과 배선을 며칠 뒤졌지만 끝내 두 개를 동시에 읽지 못했습니다.
- 그래서 바꾼 것 – 아이폰의 CoreMotion을 같은 식(같은 MSDV 계산)으로 다시 구현해 대체 경로로 삼고, 보드가 없어도 가짜 센서 값으로 같은 화면이 재현되게 만들었습니다. 데모는 최악의 환경을 가정하고 만들어야 한다는 걸 여기서 배웠습니다.