모션 센서 설명서

W3C 워킹 그룹 노트,

이 버전:
https://www.w3.org/TR/2017/NOTE-motion-sensors-20170830/
최신 공개 버전:
https://www.w3.org/TR/motion-sensors/
편집자 초안:
https://w3c.github.io/motion-sensors/
이전 버전:
버전 이력:
https://github.com/w3c/motion-sensors/commits/gh-pages/index.bs
피드백:
public-device-apis@w3.org 제목 줄 “[motion-sensors] … 메시지 주제 …”로 보내기 (아카이브)
이슈 추적:
GitHub
편집자:
Kenneth Rohde Christiansen (Intel Corporation)
Alexander Shalamov (Intel Corporation)
버그 보고:
GitHub의 w3c/motion-sensors 저장소를 통해

초록

이 설명서는 저수준 및 고수준 모션 센서, 이들 사이의 관계, 내부 동작 및 일반적인 사용 사례를 소개한다. 이벤트 필터링과 센서 퓨전의 일반적인 사례를 예제와 함께 소개하며, Generic Sensor API 명세를 따르는 센서에 이를 적용하는 방법을 보여준다.

이 문서의 상태

이 절은 이 문서가 공개된 시점에서의 상태를 설명한다. 다른 문서가 이 문서를 대체할 수 있다. 현재 W3C 공개 문서 목록과 이 기술 보고서의 최신 개정판은 W3C 기술 보고서 색인( https://www.w3.org/TR/)에서 확인할 수 있다.

이 문서는 Device and Sensors Working Group이 워킹 그룹 노트로 공개했다.

이 문서에 대한 의견을 보내려면 public-device-apis@w3.org (구독, 아카이브)로 보내 달라. 이메일을 보낼 때는 제목에 “motion-sensors”라는 텍스트를 넣어 달라. 가능하면 다음과 같은 형식을 권장한다: “[motion-sensors] …의견 요약…”. 모든 의견을 환영한다.

워킹 그룹 노트로 공개되었다고 해서 W3C 회원의 승인을 의미하지는 않는다. 이 문서는 초안 문서이며, 언제든 다른 문서로 업데이트, 대체 또는 폐기될 수 있다. 이 문서를 진행 중인 작업이 아닌 것으로 인용하는 것은 부적절하다.

이 문서는 2004년 2월 5일 W3C 특허 정책에 따라 운영되는 그룹이 작성했다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지한다. 해당 페이지에는 특허 공개를 위한 지침도 포함되어 있다. 해당 개인이 필수 청구항을 포함한다고 믿는 특허에 대해 실제 지식을 가진 개인은 W3C 특허 정책 6절에 따라 그 정보를 공개해야 한다.

이 문서는 2017년 3월 1일 W3C 프로세스 문서의 적용을 받는다.

1. 소개

휴대폰과 같은 최신 하드웨어에는 사용할 수 있는 여러 가지 모션 센서가 있다.

모션 센서는 Generic Sensor API [GENERIC-SENSOR]를 확장하여 저수준 센서 및 퓨전 센서 클래스를 노출한다. 이 문서는 이러한 센서들 사이의 관계를 설명한다.

저수준 센서에는 다음이 포함된다:

위 센서들의 데이터를 다양한 방식으로 사용하여 여러 새로운 센서를 만들 수 있다. 이들은 일반적으로 퓨전 센서라고 알려져 있다.

2. 보안 및 개인정보 보호 고려 사항

Generic Sensor API [GENERIC-SENSOR]에 설명된 것 외에는 특별한 보안 및 개인정보 보호 고려 사항이 없다.

3. 저수준 센서

3.1. 가속도계

원시 가속도계 센서는 3개의 서로 다른 방향에서 가속도 변화를 측정하지만, 중력의 영향을 받는다. Accelerometer 인터페이스[ACCELEROMETER] 명세에 정의되어 있다.

가속도계 센서는 관성 프레임 센서이다. 이는 장치가 자유 낙하 중일 때 낙하 방향의 가속도가 0 m/s2이고, 장치가 테이블 위에 평평하게 놓여 있을 때 위쪽 방향의 가속도는 지구의 중력, 즉 g ≡ 9.8 m/s2와 같다는 뜻이다. 이는 테이블이 장치를 위쪽으로 미는 힘을 측정하고 있기 때문이다.

가속도계는 그 자체만으로는 덜 유용하고 다른 퓨전 센서에 자주 참여하지만, 흔들림이나 걸음 수 등을 등록하는 것과 같은 몇 가지 용도는 있다.

이러한 사용 사례에서 개발자는 종종 선형 가속도에 관심을 가진다. 이는 중력이 제거된 가속도로, 중력 보상이라고 부른다(Linear Acceleration Sensor 참조). 또는 개발자는 중력 벡터를 알기 위해 분리된 중력에 관심을 가질 수 있다(Gravity Sensor 참조). 이는 자기 나침반을 만드는 것과 같은 일부 종류의 센서 퓨전에 유용할 수 있다.

가속도에 대해서는 일반적으로 큰 변화에 관심을 가지며 중력과 같은 노이즈를 피하고 싶어 한다. 따라서 고역 통과 필터선형 가속도를 분리하는 데 도움이 될 수 있고, 저역 통과 필터중력을 분리하는 데 도움이 될 수 있다. 따라서 저역 통과 필터는 기울기를 측정하는 데 유용할 수 있다. 안타깝게도 모든 고역 통과 필터 또는 저역 통과 필터는 지연을 유발하며, 이는 허용될 수도 있고 그렇지 않을 수도 있다.

가속도계는 가속도를 보고하므로 속도를 얻으려면 적분해야 한다는 점에 유의하라:

v = ∫a×∂t

그리고 다시 위치를 얻으려면:

x = ∫v×∂t

적분은 드리프트를 만들고, 이중 적분은 이를 증폭한다:

a = g×sin(θ), x = ½×at2

따라서 가속도계로부터 얻은 위치는 매우 부정확하며 그다지 유용하지 않다.

3.2. 자이로스코프

자이로스코프는 자기 자신을 기준으로 각속도를 감지하므로, 자신의 회전을 측정한다. 이는 코리올리 효과라고 불리는 관성력을 사용한다. 자이로스코프는 이를 측정하기 위해 비교적 높은 주파수로 진동하므로 전력 소모가 가장 큰 모션 센서 중 하나이다. 이는 또한 같은 장치의 진동(럼블) 모터나 스피커 같은 다른 진동의 영향을 쉽게 받을 수 있음을 의미한다. Gyroscope 인터페이스[GYROSCOPE] 명세에 정의되어 있다.

각속도를 감지하는 자이로스코프에서 회전(각도)을 얻으려면 단일 적분을 수행해야 한다.

f ≡ frequency

∫cos(2π×ft)) = (1/(2π×f)) × sin(2π×ft)

하지만 적분은 노이즈를 드리프트로 바꾼다는 점에 유의하라. 위에서 보듯이 적분은 바깥에 1/f를 만들며, 이는 높은 주파수(f) 노이즈가 적분으로 사라진다는 뜻이다. 즉, 어떤 주파수의 노이즈는 100분의 1로 줄어들지만, 매우 낮은 주파수는 증폭되어 자이로스코프가 시간이 지남에 따라 드리프트하게 된다.

따라서 이를 잘 수행하려면 빠르게 수행해야 하며, 아래에서 보듯이 ∂t를 곱하므로 보고된 시간 차이의 모든 오류는 위와 같은 드리프트로 나타난다.

θn = θn-1 + ω × ∂t

여기서 ω는 각속도를, θ는 결과 각도를 나타낸다.

대부분의 자이로스코프 센서는 장치의 인접 하드웨어로 인해 발생하는 알려진 저주파에 대해 하드웨어에서 일종의 드리프트 보상을 적용하여 보정을 수행한다.

3.3. 자력계

자력계자기장 센서이다. 이는 근처에 강한 자기 영향이 없으면 지구의 자기장을 감지한다는 뜻이며, 이 자기장은 대체로 북쪽 방향을 가리키지만 진북은 아니다. Magnetometer 인터페이스[MAGNETOMETER] 명세에 정의되어 있다.

앞서 말했듯이 자력계는 테이블 위에 있는 약간 자화된 물체와 같은 외부 영향에 매우 민감하며, 장치 내부의 다른 것들에도 영향을 받는다. 다만 장치 제조업체가 이를 어느 정도 보상할 수 있다. 실제로는 이러한 센서가 대부분의 일반적인 사용 사례에서 꽤 잘 동작한다.

주변에서 자화된 물체가 움직이지 않는 한, 자력계 판독값은 위에서 언급한 것처럼 중력을 분리하는 데 사용할 만큼 충분히 안정적이다.

자력계는 3축 센서이므로 가장 강한 자기장을 가리키는 3D 벡터를 제공한다. 이는 또한 동작하기 위해 특정 장치 방향을 강제하지 않는다는 뜻이기도 하다.

그러나 장치가 어떻게 잡혀 있는지 알려면 중력 벡터가 필요하다. 이는 최소한 저역 통과 필터링의 경우 가속도계를 필요로 하고, 더 정밀한 판독이 필요하면 추가로 자이로스코프를 필요로 한다. 이를 기울기 보상이라고 한다.

자력계의 가장 일반적인 사용 사례는 센서 퓨전의 일부로, 지구 평면에 고정된 Orientation Sensor를 생성하거나, 기본적으로 그 전자에 위치별 편각 보정을 적용하여 진북을 가리키도록 하는 나침반을 생성하는 것이다.

4. 고수준 센서

위에서 언급했듯이, 각 센서는 노이즈와 드리프트 같은 자체 문제가 있으며, 다른 센서의 입력을 사용한 어떤 종류의 보상이 필요한 경우가 많다. 달리 말하면, 하나의 센서는 그 자체로는 그리 정밀하지 않을 수 있지만, 여러 감각 입력의 합은 훨씬 더 안정적일 수 있다.

안타깝게도 센서는 전력을 필요로 하며, 센서가 많을수록, 측정 주파수가 높을수록 전력 소비가 증가한다. 자이로스코프는 각속도를 측정하기 위해 특정 주파수로 진동해야 하므로 일반적으로 다른 센서보다 전력 소모가 큰 것으로 간주된다.

위와 같은 이유로, 작업을 만족스럽게 해결하는 최소 센서 집합을 고려하는 것은 항상 중요하다. 오늘날 많은 장치가 하드웨어에서 특정 종류의 센서 퓨전을 수행할 수 있으므로, 전력 및 성능 관점에서 이를 사용하는 것이 대개 합리적이다.

4.1. 일반적인 퓨전 센서

아래는 퓨전 센서와 일반적으로 이들을 구성하는 센서 목록이다:

센서 타입 기반 물리 센서
Relative Orientation Sensor 가속도계, 자이로스코프, 자력계를 반드시 사용해서는 안 됨
Absolute Orientation Sensor 가속도계, 자력계, 그리고 (존재하는 경우) 자이로스코프
Geomagnetic Orientation Sensor 가속도계, 자력계, 자이로스코프를 반드시 사용해서는 안 됨
Gravity Sensor 가속도계, 자이로스코프
Linear Acceleration Sensor 가속도계, 그리고 자이로스코프 또는 자력계 중 하나

4.2. 저역 및 고역 통과 필터

앞서 언급했듯이, 저역 및 고역 통과 필터를 사용하여 노이즈(고주파 또는 저주파)를 제거할 수 있다. 이름이 나타내듯이, 필터는 낮거나 높은 주파수를 통과시켜 원하지 않는 주파수의 영향을 차단하거나 최소화한다.

4.2.1. 저역 통과 필터

저역 통과 필터를 만드는 일반적인 방법은 최신 값의 일정 비율만 사용하고 나머지는 기존 값에서 가져오는 것이다. 어떤 면에서 이는 필터가 일반적인 값을 기억하므로, 대부분 노이즈의 결과인 흔하지 않은 값을 평활화한다는 뜻이다. 기존 값의 큰 비율을 사용하기 때문에, 이 해법은 실제 이벤트를 등록하는 데 지연을 유발한다.

class LowPassFilterData {
  constructor(reading, bias) {
    Object.assign(this, { x: reading.x, y: reading.y, z: reading.z });
    this.bias = bias;
  }

  update(reading) {
    this.x = this.x * this.bias + reading.x * (1 - this.bias);
    this.y = this.y * this.bias + reading.y * (1 - this.bias);
    this.z = this.z * this.bias + reading.z * (1 - this.bias);
  }
};

const accl = new Accelerometer({ frequency: 20 });
              
// Isolate gravity with low-pass filter.
const filter = new LowPassFilterData(accl, 0.8);

accl.onreading = () => {
  filter.update(accl); // Pass latest values through filter.
  console.log(`Isolated gravity (${filter.x}, ${filter.y}, ${filter.z})`);
}

accl.start();

4.2.2. 고역 통과 필터

고역 통과 필터저역 통과 필터처럼 동작하지만, 높은 주파수만 통과하도록 허용한다.

이는 자이로스코프 판독값에서 시간이 지남에 따라 누적되는 드리프트를 제거하는 데 유용할 수 있다.

class HighPassFilterData {
  constructor(reading, cutoffFrequency) {
    Object.assign(this, { x: reading.x, y: reading.y, z: reading.z });
    this.cutoff = cutoffFrequency;
    this.timestamp = reading.timestamp;
  }

  update(reading) {
    let dt = reading.timestamp - this.timestamp / 1000;
    this.timestamp = reading.timestamp;

    for (let i of ["x", "y", "z"]) {
      let alpha = this.cutoff / (this.cutoff + dt);
      this[i] = this[i] + alpha * (reading[i] - this[i]);
    }
  }
};

const gyro = new Gyroscope({ frequency: 20 });
              
// Remove drift with a  high pass filter.
const filter = new HighPassFilterData(gyro, 0.8);

gyro.onreading = () => {
  filter.update(gyro); // Pass latest values through filter.
  console.log(`Steady gyroscope (${filter.x}, ${filter.y}, ${filter.z})`);
}

gyro.start();

4.3. Absolute Orientation Sensor

앞서 언급했듯이, Absolute Orientation Sensor자력계의 일반적인 사용 사례 중 하나이며, 지구 평면에 대해 정지된(자기장 벡터와 중력 벡터에 고정된) 방향을 나타내는 센서이다. AbsoluteOrientationSensor 인터페이스[ORIENTATION-SENSOR] 명세에 정의되어 있다.

절대 방향 센서는 미로 속 공 퍼즐 같은 게임 컨트롤이나, 디스플레이를 회전시켜 모든 방향을 볼 수 있어야 하는 헤드 마운트 디스플레이에 유용할 수 있다.

절대 방향 센서의 기준 프레임은 정지해 있으므로, 예를 들어 휴대폰에서 운전 게임의 컨트롤러로는 유용하지 않다. 이는 아주 조금 또는 천천히 움직이는 것도 운전 방향에 영향을 주지 않고서는 허용하지 않기 때문이다. (Relative Orientation Sensor 참조).

Absolute Orientation Sensor의 방향 벡터는 다음과 같은 방식으로 계산할 수 있다:

가속도계관성 프레임 센서이므로, 장치가 거의 정지해 있고 자유 낙하 중이 아닌 한 중력 벡터는 하늘을 향한다. 또한 지면 평면 위로 자기장 벡터를 투영하기에 충분한 벡터 길이가 있다.

참고, 이는 자기극에서는 실패한다. 자기장 벡터가 중력 벡터와 대체로 반대 방향을 가리키며 일반적으로 매우 신뢰할 수 없기 때문이다.

자기장 벡터와 중력 벡터 사이의 외적을 취하면 ( Gravity Sensor 참조), 오른손 법칙을 사용하여 지면 평면에서 동쪽을 가리키는 벡터를 얻는다.

이제 중력 벡터와 새로 찾은 동쪽 벡터 사이의 외적을 취하면, 결과 벡터는 지구의 자기장을 향한 북쪽 방향을 가리킨다.

아래 그림은 장치가 정지해 있고 y축이 북쪽을 향하는 경우를 나타낸다. 자력계의 판독값은 {x: 0, y: 11, z: -16}이고 가속도계는 {x: 0.11, y: 0.07, z: 9.81} 가속도를 보고한다. uG는 중력을 나타내는 단위 벡터이고, uB는 자기장 벡터를 나타내며, uE = uB × uG이고 동쪽을 가리킨다. uN = uG × uE는 북쪽 방향을 가리킨다.

OrientationSensor fusion.

이는 Absolute Orientation Sensor자력계가속도계의 퓨전 센서이며, 더 잘 분리된 중력을 위해 잠재적으로 자이로스코프도 포함될 수 있음을 의미한다 (Gravity Sensor 참조).

4.4. Geomagnetic Orientation Sensor

Geomagnetic Orientation SensorAbsolute Orientation Sensor와 같지만, 자이로스코프를 사용하지 않으므로 더 적은 전력을 사용한다. 이는 또한 흔들림과 움직임에 더 민감하다는 뜻이기도 하다.

Geomagnetic Orientation Sensor의 주요 사용 사례는 나침반을 만들거나 지도 애플리케이션에서 나침반 방향을 사용하는 것이므로, 사람들이 이러한 사용 사례에서는 보통 장치를 안정적으로 들고 있기 때문에 이는 큰 문제가 아니다.

실제 방위(N, S, E, W)는 현재 지리적 위치에서 계산한 로컬 편각 보상으로 회전 벡터를 조정하여 찾을 수 있다.

이 센서는 걸을 때처럼 더 안정적인 방위를 얻기 위해 가속도계를 사용하므로, 회전 벡터는 (가속도계에서 분리된) 중력 벡터에 수직인 평면에 투영되며, 이는 대체로 지면 평면을 나타낸다. 이는 또한 중력 벡터의 실제 방향에 관심이 있다면 대신 자력계를 직접 사용해야 함을 의미한다.

4.5. Relative Orientation Sensor

대부분의 센서 허브에서는 중력자이로스코프를 사용하여 가속도계에서 분리하고, 선형 가속도는 분리된 중력가속도계 값에서 제거하여 분리한다.

이는 저역 및 고역 통과 필터가 유발하는 지연을 피한다.

이를 수행하는 한 가지 방법은 칼만 필터 또는 상보 필터를 사용하는 것이며, 이는 Relative Orientation Sensor로 이어진다. 상보 필터는 꽤 좋은 결과를 제공하고 하드웨어에서 구현하기 쉬우므로, 이는 일반적인 해법이다.

4.5.1. 상보 필터

상보 필터저역 통과 필터고역 통과 필터가 하나로 결합된 것으로 생각할 수 있으며, 자이로스코프 값을 가속도계 값으로 보완한다:

θn = α × (θn-1 + ω × ∂t) + (1.0 - α) × a

여기서 α는 가중치 상수, a는 가속도계의 가속도, ω는 자이로스코프각속도, 그리고 ∂t는 측정 사이의 시간이다.

α의 일반적인 값은 0.98이며, 이는 가중치의 98%가 자이로스코프 측정값에 놓인다는 뜻이다.

상보 필터를 사용하여 오일러 각도(라디안)로 상대 방향을 수동 계산한다.

자이로스코프각속도를 측정하므로, 시간 차이를 곱하면 각도 변화를 얻는다. 이 변화는 항상 현재 장치 위치를 기준으로 계산되므로, 이를 지면 평면에 보정하려면 가속도계를 사용해야 한다. 가속도계에는 중력이 포함된다.

가속도계의 값은 방위(alpha, z축 주위의 회전)에 대한 정보를 제공하지 않으므로, 우리는 이를 alpha 구성 요소에 포함하지 않는다. 반면 가속도계는 (중력 때문에) 장치가 x축과 y축(beta 및 gamma) 주위에서 어떻게 잡혀 있는지에 대한 정보를 제공한다.

움직임이 없거나 거의 없을 때, 가속도계 판독값에서 얻은 벡터는 자이로스코프보다 (alpha, beta, gamma) 각도에 더 많이 기여한다.

안정적인 가속도계의 값은 중력 벡터를 나타내며, z 구성 요소를 alpha에 포함하지 않기 때문에, 그 결과 방향은 자이로스코프만을 따라가며 안정적이다. 하지만 방위의 원점은 시작 시 장치 위치에 의존하므로 이것은 장치 상대 방향 센서이다.

const options = { frequency: 50 };

const accl = new Accelerometer(options);
const gyro = new Gyroscope(options);

let timestamp = null;
let alpha = beta = gamma = 0;
const bias = 0.98;

gyro.onreading = () => {
   let dt = timestamp ? (gyro.timestamp - timestamp) / 1000 : 0;
   timestamp = gyro.timestamp;

   // Treat the acceleration vector as an orientation vector by normalizing it.
   // Keep in mind that the if the device is flipped, the vector will just be
   // pointing in the other direction, so we have no way to know from the
   // accelerometer data which way the device is oriented.
   const norm = Math.sqrt(accl.x ** 2 + accl.y ** 2 + accl.z ** 2);

   // As we only can cover half (PI rad) of the full spectrum (2*PI rad) we multiply
   // the unit vector with values from [-1, 1] with PI/2, covering [-PI/2, PI/2].
   const scale = Math.PI / 2;

   alpha = alpha + gyro.z * dt;
   beta = bias * (beta + gyro.x * dt) + (1.0 - bias) * (accl.x * scale / norm);
   gamma = bias * (gamma + gyro.y * dt) + (1.0 - bias) * (accl.y * -scale / norm);

   // Do something with Euler angles (alpha, beta, gamma).
 };

 accl.start();
 gyro.start();
장치에 맞춰 조정되는 상대 방향 센서.

위 예제에서 alpha가 초기 방위 방향을 나타낸다는 것을 알 수 있다. 또한 이 방위는 자이로스코프를 기반으로 하므로 시간이 지남에 따라 드리프트할 수 있다는 것도 알고 있다.

어떤 상황에서는 방향이 현재 위치를 향해 드리프트하기를 원할 수 있다. 이는 가상 현실 환경 내부의 컨트롤러에 유용할 수 있다. 예를 들어 자동차가 컨트롤러의 방위를 따라가기를 원하지만, 플레이 중에 사용자가 움직이고 몸을 돌릴 수 있다. 이는 실제 자동차를 운전하는 것과 거의 비슷하게 동작한다.

위 코드에서 한 줄을 바꾸면 이를 달성할 수 있다.

const zeroBias = 0.02;
alpha = (1 - zeroBias) * (alpha + gyro.z * dt);

위에서 alpha의 2%는 값 0으로 구성된다. 따라서 장치가 대체로 안정적으로 잡혀 있으면 방위는 0을 향해 이동하며, 이는 주변 환경에 따라 배치되는 것이 아니라 현재 장치 위치에 맞게 조정됨을 의미한다.

이 예제는 수동 퓨전이 때때로 얼마나 유용할 수 있는지 보여준다.

4.6. Gravity and Linear Acceleration Sensor

위에서 사용한 상보 필터중력을 분리하는 데 꽤 좋다. 따라서 대부분의 센서 허브는 자이로스코프를 사용하여 가속도계에서 중력을 분리하고, 선형 가속도는 분리된 중력가속도계 값에서 제거하여 분리한다.

이는 또한 대부분의 센서 허브가 노출하는 Linear Acceleration SensorGravity Sensor가 퓨전 센서일 가능성이 높다는 뜻이기도 하다.

중력자력계를 사용하여 선형 가속도 센서에서도 제거할 수 있다. 자기장 벡터가 대체로 안정적이기 때문이다.

LinearAccelerationSensor 인터페이스GravitySensor 인터페이스[ACCELEROMETER] 명세에 정의되어 있다.

참고, 중력은 움직임의 주파수에 따라 변한다. 즉 자유 낙하에서는 낙하 방향으로 0이므로, 흔들림을 감지하려는 경우 선형 가속도가 상당히 부정확할 수 있음을 염두에 두어야 한다.

4.7. 사용 사례 및 요구 사항

고급 모션 센서 사용 사례에는 정확한 센서 판독값, 하드웨어 센서가 동작하는 높은 샘플링 속도, 그리고 특정 애플리케이션에 적합한 판독 전달 속도에 대한 요구 사항이 있을 수 있다.

모션 센서는 다음과 같은 다양한 고급 사용 사례에 사용할 수 있다:

모션 센서를 사용하는 게임 또는 UI 애플리케이션의 일반적인 요구 사항은 렌더링되는 프레임마다 새로운 센서 판독값을 가지는 것이다. 이 경우 더 높은 샘플링 속도는 지연 시간을 줄여 사용자 경험을 향상시킨다.

가상 현실 HMD 추적의 경우, 센서는 매우 높은 샘플링 속도 (최대 수 kHz)로 동작할 수 있으며, 75-120Hz의 새로 고침 속도에서 렌더링되는 모든 프레임에 최신 센서 판독값을 제공하여 motion-to-photon 지연 시간을 최소화할 수 있다.

실내 내비게이션 또는 비실시간 동영상(이미지) 안정화 애플리케이션은 높은 샘플링 속도(80-100Hz)에서 고정확도 센서 판독값을 수집함으로써 데이터 처리 알고리즘이 정확한 결과를 제공하기에 충분한 샘플을 갖게 되어 이점을 얻을 수 있다.

색인

이 명세가 정의한 용어

참조에 의해 정의된 용어

참고 문헌

규범적 참고 문헌

[ACCELEROMETER]
Anssi Kostiainen; Alexander Shalamov. Accelerometer. URL: https://www.w3.org/TR/accelerometer/
[GENERIC-SENSOR]
Rick Waldron; et al. Generic Sensor API. URL: https://www.w3.org/TR/generic-sensor/
[GYROSCOPE]
Anssi Kostiainen; Mikhail Pozdnyakov. Gyroscope. URL: https://www.w3.org/TR/gyroscope/
[MAGNETOMETER]
Anssi Kostiainen; Rijubrata Bhaumik. Magnetometer. URL: https://www.w3.org/TR/magnetometer/
[ORIENTATION-SENSOR]
Mikhail Pozdnyakov; Alexander Shalamov; Kenneth Rohde Christiansen; Anssi Kostiainen. Orientation Sensor. URL: https://www.w3.org/TR/orientation-sensor/

정보성 참고 문헌

[3DSCANNING]
Grivon, Daniel, Enrico Vezzetti, and Maria Grazia Violante. 3D 스캐닝 애플리케이션을 위한 혁신적인 저비용 MARG 센서 정렬 및 왜곡 보상 방법론 개발. 2013. 정보성. URL: http://porto.polito.it/2511714/
[HMDTRACKING]
LaValle, Steven M., et al.. Oculus Rift를 위한 머리 추적. 2014. 정보성. URL: http://msl.cs.illinois.edu/~lavalle/papers/LavYerKatAnt14.pdf
[INDOORNAV]
Shala, Ubejd, and Angel Rodriguez. Android 장치에서 센서 퓨전을 사용한 실내 위치 측정. 2011. 정보성. URL: http://www.diva-portal.org/smash/record.jsf?pid=diva2%3A475619&dswid=9050
[IPIN]
Gallagher, Thomas, et al.. 시각 장애인 및 저시력자를 위한 센서 퓨전 기반 실내 위치 측정 시스템. 2012. 정보성. URL: http://ieeexplore.ieee.org/abstract/document/6418882/
[MEMSGESTURES]
Xu, Ruize, Shengli Zhou, and Wen J. Li. MEMS 가속도계 기반 비특정 사용자 손 제스처 인식. 2012. 정보성. URL: http://ieeexplore.ieee.org/abstract/document/6009159/
[PHYSMON]
Yang, Che-Chang, and Yeh-Liang Hsu. 신체 활동 모니터링을 위한 가속도계 기반 웨어러블 모션 감지기에 대한 검토. 2010. 정보성. URL: http://www.mdpi.com/1424-8220/10/8/7772/html
[ROLLSTABILIZER]
Karpenko, Alexandre, et al.. 자이로스코프를 사용한 디지털 동영상 안정화 및 롤링 셔터 보정. 2011. 정보성. URL: http://movement.stanford.edu/papers/stabilization/karpenko_gyro.pdf
[VIDEOSTABILIZER]
Hanning, Gustav, et al.. 관성 측정 센서를 사용한 휴대폰 동영상 안정화. 2011. 정보성. URL: http://ieeexplore.ieee.org/abstract/document/6130215/