0

실험 프로그램을 진행하고 있습니다. 나는 자동차 대시 보드에 고정 된 스마트 폰을 지원하고, 여행 중에 관성 센서의 일부 값을 애플리케이션에서 읽었습니다.변위 가속도

정확하게 각 등록의 가속도계 데이터 시간 (고정 간격으로)을 초 단위로 읽습니다.

이제 수직 가속도에서 수직 이동으로 넘어 가고 싶습니다. 이렇게하려면 이중 통합을 수행해야합니다.

나는 오일러 방법을 시도했다. 초기 조건 :

v0=0.v0=0 이것은 시간 0에서의 초기 속도입니다.

x0=0.x0=0 이것은 시간 0에서의 초기 위치입니다.

각 등록이 이루어 위해

후, 내가 할

deltaT=registrationinterval.deltaT=registrationinterval

(내 경우는 0,04s) 정의 :

vi=vi−1+ayi∗deltaT.vi=vi−1+ayi∗deltaT

xi=xi−1+vi∗deltaT.xi=xi−1+vi∗deltaT

i가를 나타냅니다 현재, i-1 선례.

그러나 실제로 얻을 수있는 차트는 사실적이지 않습니다. 사실 속도와 변위 모두가 커지기 만합니다. 그 대신에 수직적 변위가 가속 그래프와 비슷한 것으로 나왔습니다.

이 절차를 적용하면 높은 오차가 발생할 수 있습니다. 그래프가 커지기 만하고 수직 진동이 보이지 않을 수도 있습니다.

나는 또한 칼만 필터를 읽을 수있는 솔루션을 사전에 신호를 청소 적용 할 수 있습니까?

또는 통합 방법을 변경하고 Runge Kutta의 오일러로 전환해야합니까? (마지막으로, 나는 그것이 어떻게 설정 될 수 있는지에 대해 조금이라도 생각하지 못했다.)

누군가 나를 도울 수있는 알고리즘을 알고 있습니까?

여기에 도움이 될 수있는 경우에는 등록 데이터의 example있다 :

답변

0

오일러 룽게 쿠타 모두가 통합 수치. 하나는 통합하려는 방정식의 유형에 따라 다른 것보다 더 정확할 수 있지만 둘 모두 동일한 양적 결과를 제공해야합니다. 하나는 당신에게 속도가 증가하고 다른 하나는 그렇지 않다면, 당신은 버그가 있습니다.

저는 이것이 프로그래밍 문제보다 물리학 문제에 더 가깝다고 생각합니다.

데이터를 보면 수직 가속도계 데이터에 중력 가속도가 포함되어있는 것처럼 보입니다.이 가속도계는 지구 표면에서 약 9.8m/s^2입니다. 물론, 당신의 자동차는 도로에서 지원되므로 실제 가속을하지는 않습니다.

방정식은 경기에 다른 힘이 없다고 가정하기 때문에 자동차의 속도와 위치가 지속적으로 증가하고 있음을 정확하게 나타냅니다 (헬리콥터에서 차를 떨어 뜨린 것처럼). 그러나 다른 세력 (타이어를 밀어 올리는 도로)이 있으므로, 당신은 그 힘을 모델링 할 수있는 방법을 찾아야합니다.

당신이 할 수있는 한 가지 일은 처음 몇 번의 측정을 기준선 (9.8m/s^2에 가까워 야 함)으로 평균화 한 것이고 그 값을 다음 판독 값에서 뺍니다. 차가 언덕을 오르 내릴 때 센서 값은 기준선에 따라 달라지며 이러한 차이점이 신경 쓰이는 부분입니다.

괜찮은 첫 번째 근사치입니다. 그러나 언덕을 오르 내릴 때 전화는 더 이상 중력장에 대한 수평이 아니므로 중력의 일부가 수평 센서에 반영됩니다. 정확한 결과를 얻으려면이를 고려해야합니다.