accelcal
설명
예제
가속도계 측정값 보정하기
측정 데이터를 생성하기 위한 imuSensor
객체를 만듭니다. 기본적으로 객체의 기준 프레임은 NED(북쪽-동쪽-아래쪽) 프레임입니다. 측정값에 상수 편향과 랜덤 잡음이 포함되도록 가속도계 파라미터를 지정합니다.
accelParams = accelparams(ConstantBias=[.1 .2 -.1],...
NoiseDensity=1e-2*ones(1,3));
imu = imuSensor(Accelerometer=accelParams);
disp(imu.ReferenceFrame)
NED
6개 보정 방향에 대한 오일러 각을 정의하고 이를 쿼터니언으로 변환합니다.
orients = [... 0 90 0 % xUp 0 0 -90 % yUp 0 180 0 % zUp 0 -90 0 % xDown 0 0 90 % yDown 0 0 0]; % zDown quats = quaternion(orients,"eulerd","ZYX","frame"); N = numel(quats);
외부 가속도와 각속도가 모두 0이라고 가정합니다. IMU 센서를 시뮬레이션하여 보정 측정값을 구합니다.
exAcc = zeros(N,3); angVel = zeros(N,3); D = imu(exAcc,angVel,quats)
D = 6×3
-9.6490 0.2225 -0.1925
0.0146 -9.5593 0.0153
-0.0210 0.1928 -9.9271
9.9363 0.1840 -0.0210
0.0008 9.9094 -0.0655
0.2828 0.1528 9.7232
accelcal
함수를 사용하여 보정 파라미터를 구합니다.
[A,b] = accelcal(D)
A = 3×3
1.0018 0.0019 -0.0087
0.0006 1.0078 0.0041
-0.0154 0.0020 0.9986
b = 1×3
-0.0956 -0.1852 0.0779
보정 측정값을 사용하여 보정 파라미터를 확인합니다.
DCali = D*A+b
DCali = 6×3
-9.7587 0.0199 -0.0298
-0.0872 -9.8187 0.0534
0.0365 -0.0111 -9.8339
9.8589 0.0196 -0.0284
-0.0875 9.8012 0.0535
0.0380 -0.0109 9.7852
무작위 방향을 만들고 가속도계 측정값을 구한 다음 측정값을 보정합니다.
M = 10; randomQuats = randrot(M,1); U = imu(zeros(M,3),zeros(M,3),randomQuats); C = U*A+b
C = 10×3
9.1400 3.5374 -1.3008
-7.1185 -6.8126 -0.7088
7.1372 -6.8065 -0.5943
-7.9362 1.5605 5.6203
7.4397 -2.3143 -6.2363
7.0758 -4.0794 -5.7321
3.1250 -5.4306 7.2655
0.8261 -9.7286 1.3509
0.8486 2.8606 -9.2705
-2.4922 8.5000 -3.9532
입력 인수
D
— 6개 보정 방향에서의 측정값
N×3 행렬
가속도계의 6개 보정 방향에서의 측정값으로, N×3 행렬로 지정됩니다. 여기서 N은 총 측정값 개수입니다. 이 행렬의 각 행은 가속도계 보정 방향에 설명된 가속도계의 6개 보정 방향 각각에서 측정된 측정값입니다. 최상의 결과를 얻으려면 행렬이 모든 6개 방향에 대해 같은 개수의 측정값을 가져야 합니다.
함수는 기본적으로 D
의 데이터를 해석할 때 9.81m/s2과 1 중에서 데이터의 노름 평균에 더 가까운 값을 지구 중력 상수 g
의 값으로 가정합니다.
데이터형: single
| double
XUP
— x-up 방향에서의 측정값
N1×3 행렬
가속도계의 x-up 방향에서의 측정값으로, N1×3 행렬로 지정됩니다. N1은 총 x-up 측정값 개수입니다. 행렬의 각 행이 하나의 가속도계 측정값입니다. x-up 방향의 정의는 가속도계 보정 방향 섹션을 참조하십시오.
데이터형: single
| double
XDOWN
— x-down 방향에서의 측정값
N2×3 행렬
가속도계의 x-down 방향에서의 측정값으로, N2×3 행렬로 지정됩니다. N2는 총 x-down 측정값 개수입니다. 행렬의 각 행이 하나의 가속도계 측정값입니다. x-down 방향의 정의는 가속도계 보정 방향 섹션을 참조하십시오.
데이터형: single
| double
YUP
— y-up 방향에서의 측정값
N3×3 행렬
가속도계의 y-up 방향에서의 측정값으로, N3×3 행렬로 지정됩니다. N3은 총 y-up 측정값 개수입니다. 행렬의 각 행이 하나의 가속도계 측정값입니다. y-up 방향의 정의는 가속도계 보정 방향 섹션을 참조하십시오.
데이터형: single
| double
YDOWN
— y-down 방향에서의 측정값
N4×3 행렬
가속도계의 y-down 방향에서의 측정값으로, N4×3 행렬로 지정됩니다. N4는 총 y-down 측정값 개수입니다. 행렬의 각 행이 하나의 가속도계 측정값입니다. y-down 방향의 정의는 가속도계 보정 방향 섹션을 참조하십시오.
데이터형: single
| double
ZUP
— z-up 방향에서의 측정값
N5×3 행렬
가속도계의 z-up 방향에서의 측정값으로, N5×3 행렬로 지정됩니다. N5는 총 z-up 측정값 개수입니다. 행렬의 각 행이 하나의 가속도계 측정값입니다. z-up 방향의 정의는 가속도계 보정 방향 섹션을 참조하십시오.
데이터형: single
| double
ZDOWN
— z-down 방향에서의 측정값
N6×3 행렬
가속도계의 z-down 방향에서의 측정값으로, N6×3 행렬로 지정됩니다. N6은 총 z-down 측정값 개수입니다. 행렬의 각 행이 하나의 가속도계 측정값입니다. z-down 방향의 정의는 가속도계 보정 방향 섹션을 참조하십시오.
데이터형: single
| double
g
— 지구 중력 상수
양의 스칼라
지구 중력 상수로, 양의 스칼라로 지정됩니다 이 인수를 지정하지 않으면 함수는 9.81m/s2과 1 중에서 D
에 있는 데이터의 노름 평균에 더 가까운 값을 지구 중력 상수 g
로 가정합니다.
예: 9.807
데이터형: single
| double
출력 인수
A
— 보정 행렬
3×3 행렬
보정 행렬로, 3×3 행렬로 반환됩니다.
데이터형: single
| double
b
— 보정 오프셋 벡터
1×3 벡터
보정 오프셋 벡터로, 1×3 벡터로 반환됩니다.
데이터형: single
| double
세부 정보
가속도계 보정 방향
가속도계 보정을 위한 측정 데이터를 구하려면 가속도계 측정 프레임(X-Y-Z)의 방향을 이 다이어그램에 표시된 6개 방향 중 하나와 맞춥니다. 예를 들어 x-up 측정값을 구하려면 첫 번째 그림처럼 가속도계 측정 프레임의 양의 X 방향을 중력의 반대 방향으로 정렬합니다.
가속도계에 보정 오류가 없고 그림과 같이 측정 프레임이 완벽하게 정렬되면 다음 표에 나와 있는 이상적인 측정값을 구할 수 있습니다.
방향 | aX | aY | aZ |
---|---|---|---|
X-Up | -g | 0 | 0 |
X-Down | +g | 0 | 0 |
Y-Up | 0 | -g | 0 |
Y-Down | 0 | +g | 0 |
Z-Up | 0 | 0 | -g |
Z-Down | 0 | 0 | +g |
표에서 aX, aY, aZ는 각각 X 가속 성분, Y 가속 성분, Z 가속 성분입니다. g
는 로컬 지구 중력 상수입니다.
참고 문헌
[1] AN4508 Application Note: Parameters and Calibration of a Low-G 3-Axis Accelerometer.
버전 내역
R2023b에 개발됨
참고 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)