2.1 노선 지도 생성(Route map generation)
먼저 이동 경로의 지도(map)를 생성하기 위하여 대상으로 하는 선로의 UTM 좌표를 취득하였다. 대상 이동 경로의 경우 특정 구간에서 GNSS 수신이
원활하지 못한 구간이 발생하였기 때문에 여러 번 반복 시험을 통해 데이터를 취득하였으며 이상치(outlier)를 제외하고 유의미한 데이터로 구성하기
위해 벌점최소제곱(penalized least square) 방법에 기초한 smoothing algorithm[11]을 이용하여 다음과 같이 $N$ 개의 이산점(discrete point)으로 구성되는 지도를 생성하였다.
(1)의 지도는 이산화된 지점의 좌표정보만을 갖기 때문에 거리정보를 산출하기 위해 다음과 같이 각 세그먼트의 거리정보를 포함하는 레이어(layer)를 추가한다.
GNSS 측정값은 측정 노이즈에 의한 변동이 발생하기 때문에 (1)~(4)에서 생성한 지도 정보를 이용하여 보정할 필요가 있다. 이를 위해 먼저 측정값에서 가장 가까운 점을 다음과 같이 탐색한다.
여기서, $p_{k}$ 는 현재 시점에 측정된 GNSS 측정값이다. (5)와 (3)을 이용하면 지도의 특정점을 기준으로 현재의 위치까지의 거리를 구할 수 있다. 하지만, 이 경우 단순히 생성된 지도의 이산점 개수에 따라 측정 정밀도가
결정되므로 다음의 투영(projection) 과정을 통해 이를 보완한다. 먼저, (5)에서 찾은 $m^{*}$를 제외한 지도를 $R_{map}^{*}$로 정의하고 이를 이용하여 측정값에서 두 번째로 가까운 점을 다음과 같이 탐색한다.
(5), (6)을 이용하여 $m^{*}$을 시점 $p_{k}$를 종점으로 하는 벡터를 $\vec{a}$, $m^{*}$을 시점 $m^{**}$를 종점으로 하는 벡터를
$\vec{b}$로 정의하면, 측정점을 지도에 투영했을 때의 거리 $L$과 해당 좌표 $p_{m}$은 다음의 관계를 이용하여 구할 수 있다.
여기서, $\vec{u}_{b}$는 $\vec{b}$의 단위벡터(unit vector)를 의미한다. 따라서 (5)~(7) 및 (3)을 이용하면 지도의 특정점을 기준으로 현재의 위치까지의 거리를 좀 더 정밀하게 계산할 수 있다. 이를 도식화하면 그림 2와 같다. 상기 지도 투영(map projection) 과정을 통해 GNSS 측정값에서 선로 기준의 횡방향 오차를 효과적으로 제거할 수 있다. 또한,
측정값이 지도의 끝점을 벗어난 경우는 $p_{m}$과 $m^{*}$와 $m^{**}$의 관계가 다음의 하나로 발생하게 되므로 이를 이용하면 측정값이
지도의 외부에 있는지 여부를 확인할 수 있다.
여기서, $f_{m_{x}}(x)$는 지도상의 특정점 $m_{x}$를 기준으로 $x$까지의 거리를 의미한다. 상기 과정으로 생성한 위치가 지도의 끝점을
벗어나는 상황이 발생하는 경우에는 지도의 끝점을 유지하도록 처리하였다.
그림 2. GNSS 측정값의 지도 투영
Fig. 2. Map projection of GNSS measurement
2.2 상태 추정기 설계(State estimator design)
이동 객체의 추적에는 일반적으로 KF(Kalman Filter) 및 변형된 형태, 입자 필터 등이 사용된다. KF의 설계를 위해서는 객체의 동적모델(dynamic
model) 및 측정모델(measurement model)을 구성해야 하는데 일반적으로 샘플링 구간동안 속도가 일정하다고 가정하는 CV(Constant
Velocity) 모델이 널리 사용된다[12]. 본 논문의 경우 GNSS, 타코미터 그리고 관성측정장치를 이용하여 차량의 위치, 속도 및 가속도를 측정하기 때문에 샘플링 구간동안 일정한 가속도를
가정하는 CA(Constant Acceleration) 모델을 도입하였다. 먼저 상태벡터(state vector)는 다음과 같이 정의한다.
여기서, $x(k)$ , $v(k)$ 및 $a(k)$는 각각 이산시간 $k$ 시점에서 대상 객체의 실제 위치(position), 속도(velocity),
가속도(acceleration)를 의미한다. 해당 상태벡터(state vector)를 이용하면 동적 모델은 다음과 같이 기술된다.
여기서, $w(k)$는 공분산 행렬(covariance matrix) $Q$를 갖는 프로세스 잡음(process noise)이고, $F$는 시간 시점
$k$에서 $(k+1)$로의 천이 행렬(transition matrix)로 다음과 같이 정의된다.
여기서, $T$는 측정시스템의 샘플링 간격(sampling interval)을 의미한다. 상기 과정을 통해 구성된 동적 모델은 KF의 목표상태(target
state) 예측단계에서 활용된다. 다음으로 측정모델을 구성하면, (15)와 같다.
여기서 $Z(k)$는 측정 벡터를 나타내며, $H$는 측정 행렬, $v(k)$는 공분산 행렬 $R$을 갖는 측정 잡음(measurement noise)이다.
(11)의 전체 상태(full state)를 모두 측정하는 경우를 가정하면 $H$는 다음과 같이 주어진다.
각 상태의 측정 오차가 각각 $\sigma_{x}^{2}$, $\sigma_{v}^{2}$, $\sigma_{a}^{2}$의 분산(variance)를
갖는다고 가정하면, $R$은 다음과 같이 쓸 수 있다.
상기 모델에 대한 KF는 다음과 같이 쓸 수 있다.
여기서, $K(k)$는 추정된 상태오차를 최소화하기 위한 필터 이득으로 다음식에 의해 계산된다.
여기서 $P(k)$는 상태오차의 공분산 행렬로 다음의 식으로 계산한다.
프로세스 잡음 $w(k)$를 랜덤 저크(random jerk) 입력으로 다음과 같이 가정하면,
공분산 행렬 Q는 다음과 같이 설정할 수 있다.
여기서,
객체 추적을 위한 상태 추정기의 구조는 상기 과정을 통해 비교적 간단하게 구성할 수 있으나 실제 적용에 있어서는 샘플링 주기에 따른 각 센서의 가용성
및 환경 조건에 따른 정확도에 제한이 있기 때문에 이를 고려하여 적절하게 구현하는 것이 중요하다.
2.3 상태 추정기 평가를 위한 위치 기준 생성(Position reference generation for state estimator evaluation)
시험에 사용하는 GNSS는 cm급의 정밀도를 갖는 RTK(Real-Time Kinematic) 시스템으로 GNSS 신호의 수신이 양호한 경우에는 이
값을 기준값으로 사용하여 측위 시스템의 추정값을 평가할 수 있다. 하지만 GNSS 신호의 수신이 제한되거나 데이터 처리량의 증가 등으로 샘플링 주기
이내의 업데이트가 지연되는 경우에는 이를 적절히 처리하여야 한다. 또한, 상태 관측기 응답의 천이 구간을 최소화하기 위해서는 초기값을 적절히 설정할
필요가 있다. 본 논문에서는 이를 고려하여 상태 관측기의 초기화 조건을 2가지로 분류하고 다음과 같이 상황별 처리 동작을 정의하였다.
· KF 시작 시 초기화 : 응답의 천이 구간을 최소화하기 위해서는 KF 상태를 측정값으로 초기화하기 전에 측정값의 문제는 없는지, 충분히 안정화
된 상태인지를 확인할 필요가 있다. 이를 위해 KF 시작 전에 매 샘플링 주기마다 GNSS 신호의 품질(quality) 지표를 확인한다. 일례로 시험에
사용한 NovAtel GNSS[13]의 경우 수신기에서 “best quality”로 정의되는 상태를 출력으로 제공하므로 이 지표가 연속으로 m회 이상 계수되는 경우에 해당 시점의 측정값으로
상태 변수를 초기화 할 수 있다. 본 논문에서는 데이터 샘플링 주기 0.1초 조건에서 50회 이상 계수되는 것을 기준으로 하였다. 단, 타코미터 측정에
따르면 차량의 움직임이 예상되나 GNSS 측정값이 직전 측정값과 동일하다면 이는 GNSS 갱신(update) 지연으로 판단하여 KF 초기화를 보류한다.
또한, GNSS 측정 위치가 2.1에서 생성한 디지털 맵의 범위 밖에 있는 경우에는 KF 초기화를 보류한다. 즉, GNSS 갱신 지연 문제가 없고,
생성한 디지털 맵의 범위 내에 있으며, 품질 지표가 안정화된 것으로 판단될 때 상태 변수를 센서 측정값으로 초기화하고 KF 동작을 시작한다.
· KF 동작 중 초기화 : 안정적인 상태에서 KF 동작을 시작하였어도 환경 조건에 따라 GNSS 측정값의 가용성이 항상 보장되지 않기 때문에
이에 대한 처리가 필요하다. 대표적인 경우는 KF 상태 추정값에는 차속이 존재하는데 다음번 측정 주기의 GNSS 측정값에 변동이 없는 경우이다. 이러한
경우 현재의 측정값을 무시하고 KF 추정값으로 대체한다. 다만 GNSS 수신이 안되는 조건에서 추정값으로 대체하는 시간이 길어지면 오차가 누적되기
때문에 이러한 상황이 일정 샘플을 초과하는 경우에는 동작을 중지하고 오류처리하도록 하였다.
그림 3은 그림 1의 시험선 노선에 대해 $m_{1}$에서 $m_{N}$으로 주행(방향 A로 정의) 후 $m_{N}$에서 $m_{1}$로 다시 돌아오는 주행(방향 B로
정의) 시의 GNSS, 타코미터 측정값을 기록한 것이다.
그림 3. 시험선 노선에서 방향 A 및 B 주행 중의 GNSS, 타코미터 측정값
Fig. 3. GNSS and tachometer measurements during driving on the test route in directions
A and B
해당구간의 GNSS 데이터를 살펴보면 차량의 모션은 존재하는데 GNSS 측정값에 변화가 없는 구간을 관찰할 수 있는데, 이를 보상하기 위해서 타코미터와
관성측정장치로 구성되는 KF를 설계하고 해당 구간의 GNSS 측정치를 대체하도록 하였다. 그림 3 상단의 그래프에서 빨간색 원으로 표시된 부분은 해당 시점의 측정값이 상태 관측기로 추정된 값으로 대체된 것을 나타낸다. 시험 데이터의 경우 방향
A로 주행 시 간헐적으로 발생하던 GNSS 업데이트 지연증상이 점차 증가하여 방향 B로 주행 시에는 약 1초 수준까지 증가하는 경향을 보이며, 해당
구간에서는 대부분의 구간에서 추정 상태(predicted state)로 대체된 것을 볼 수 있다.
2.5 추측항법 시스템 개선(Dead reckoning system improvements)
추측항법 시스템의 이러한 오차를 개선하기 위해 먼저 선로 구간의 태그를 이용한다. 태그가 설치된 위치의 고정값을 사용하면 차량이 해당 위치를 지나면서
태그가 검출될 때 다음과 같이 위치 추정값을 초기화 할 수 있다.
여기서, $i$는 $k$시점에 검출된 태그의 번호이고, $p_{tag}(i)$는 사전에 확인된 $i$번째 태그의 위치값을 나타낸다. 노선상에 n개의
태그가 있다고 가정하면 태그 지도는 다음과 같이 정의된다.
그림 5. 타코미터, 관성측정장치 및 태그를 이용한 상태추정 결과
Fig. 5. State estimation using tachometer, IMU and tag
시험에 사용된 태그는 1.2km 구간에서 총 7개이고, 간격은 50m에서 400m까지 분포되어 있으며, 평균거리는 189m이다. 그림 5는 이러한 초기화를 적용한 결과를 나타낸다. 태그를 지나는 시점에는 (28)과 같이 상태변수를 초기화하기 때문에 상태오차가 0으로 설정되나 이후에는 다시 오차가 누적되는 경향을 확인할 수 있다. 또한 이 형태를 살펴보면 특정
구간을 중심으로 오차가 증가하고 유지되는 것이 반복되는 특징을 발견할 수 있다. 그림 6은 이것을 주행방향의 가속도와 비교한 것인데 가속도, 감속도가 발생하는 위치와 추정 오차가 증가 혹은 감소하는 구간이 일치하는 경향을 확인할 수 있다.
이를 통해 볼 때 오차의 주요원인은 해당 구간에서 휠 슬립 혹은 슬라이드에 기인한 것으로 추정할 수 있다. 다만, 그림 6의 관성측정장치 가속도와 타코미터를 이용한 가속도 추정값의 비교에서 볼 수 있듯이 두 센서의 측정값에서 유의미한 차이를 발견하기 어려우므로 차량 속도과
휠 속도의 차이에 기반한 슬립 검출 방식[3,4]을 적용하는 데에 한계가 있으며 다른 방식의 접근이 필요하다. 따라서 본 논문에서는 가속도의 크기에 따른 유효반경 보정함수를 다음과 같이 정의하고
속도 측정값에 적용되도록 구성하였다.
여기서, $\omega_{pulse}(k)$는 휠펄스 계수를 통해 얻어진 각속도, $r_{n}$은 등속구간 각속도 및 GNSS 측정값 비교를 통해
산출된 공칭반경, $r_{eff}(a(k))$는 주행방향 가속도 값에 따라 결정되는 보정계수이다.
그림 6. 테스트 주행 시 차량의 종방향 가속도
Fig. 6. Longitudinal acceleration of the vehicle during the test drive
보정계수의 설정을 위해 최대 가속값 이내의 구간을 임의의 개수로 구분하고 각 구분 지점에 대해 그림 7과 같이 보정계수 테이블을 정의하였으며, 주행 중 발생하는 임의의 가속도에 대해서는 다음의 선형보간을 통해 보정계수를 적용하였다.
여기서, $a_{t1}<a(k)<a_{t2}$ 이고, $r_{t1}$,$r_{t2}$는 각각 사전에 정의된 $a_{t1}$,$a_{t2}$에 대응하는
보정계수 값을 의미한다.
그림 7. 차량 가속도에 따른 유효 반경 보정 테이블
Fig. 7. Effective radius correction table by vehicle acceleration
보정계수 테이블은 추정오차로 구성되는 성능지수가 최소화되도록 하는 최적설계 문제를 다음과 같이 구성하고 비선형 계획법을 이용하여 구할 수 있다.
Find $\overline{r}_{t}=(r_{t1},\: r_{t2},\: \cdots ,\: r_{tn})\in R^{n}$
To minimize $f(\overline{r}_{t})=f(r_{t1},\: r_{t2},\: \cdots ,\: r_{tn})$
Subject to $g(\overline{r}_{t})=0$
for $\overline{r}_{t}^{L}\le\overline{r}_{t}\le\overline{r}_{t}^{H}$
여기서, $k_{0}$, $k_{f}$는 상태추정 모의실험에서 KF 활성 플래그에 따른 시작시점과 종료시점을 나타내고, $\overline{r}_{t}^{L}$,
$\overline{r}_{t}^{H}$는 보정계수 테이블 각 요소들의 최소, 최대값을 의미한다. 성능지수는 시험주행 데이터를 이용한 모의시험을 통해
다음과 같이 정의할 수 있다.
본 시험에서는 $\overline{a}_{t}=(-1,\: -0.5,\: -0.3 ,\: -0.2,\: 0.2,\: 0.3,\: 0.4,\:
1)$에 대응하는 $\overline{r}_{t}$를 설계변수로 선정하고, $\overline{a}_{t}=(-1,\: -0.2,\: 0.2,\:
1)$에 대해서는 등가 제약을 설정하여 값을 고정하였다. 이를 적용한 상태추정 결과는 그림 8과 같다. 가속도의 크기에 따른 유효반경 보정에 따라 전반적인 오차의 수준의 효과적으로 개선되었으나, 방향 B 주행의 끝부분에서는 오차가 증가하는
경향을 볼 수 있는데, 이는 주행 선로의 기하학적 구조와 관련된 것으로 볼 수 있다.
그림 8. 가속도에 따른 유효 반경 보정을 적용한 경우의 상태추정 오차
Fig. 8. State estimation error wjth effective radius correction by acceleration
그림 1의 시험선 노선을 살펴보면 전체 구간은 대부분 직선 구간이나 방향 A 주행의 시작(방향 B 주행의 끝) 구간에서 25mR의 곡률을 갖는 형태로 구성된다.
따라서 해당 구간에서 선로 곡률에 의한 휠슬립의 발생을 예상할 수 있다. 이 구간은 노선 지도(route map)의 거리값으로 약 20m 이하의 구간에
해당하는 것으로 전체 거리의 2% 미만의 작은 구간이므로 가시적인 확인을 위해 그림 9에서는 거리의 로그값을 $x$축으로 하고 추정오차를 $y$축으로 하여 나타내었다. 예상한 바와 같이 약 20m 이하의 위치에서 오차가 선형적으로 증가하는
경향을 보이는 것으로 확인된다. 따라서 해당 구간에 보정계수를 추가적으로 적용하는 것을 고려할 수 있으며, 해당 결과는 그림 9의 하단과 그림 10에서 확인할 수 있다. 본 시험에서는 하나의 곡률에 대해 시험되었으나 노선 구간에 여러 개의 곡률을 갖는 구간에 존재하는 경우에는 각각의 노선 곡률에
따른 유효반경 테이블을 구성하여 보상할 수 있을 것이다.
그림 9. 곡선 구간의 상태추정 오차
Fig. 9. State estimation error around curve area
그림 10. 곡률에 따른 유효반경 보상을 적용한 경우의 상태추정 오차
Fig. 10. State estimation error wjth effective radius correction by curvature
위에서 언급한 보상방안을 단계적으로 적용한 경우의 관측오차의 RMS 값 및 절대값의 최대값을 정리한 결과는 표 1에서 확인할 수 있다. 여기서 ‘applied method’의 각 숫자는 적용된 개선사항을 의미한다. 0은 개선이 적용되기 전인 2.4절의 기본 상태를
나타내고 1은 태그 초기화가 적용된 경우, 2는 가속도에 따른 유효 반경 보정이 적용된 경우, 3은 곡률에 따른 유효반경 보상이 적용된 경우를 나타낸다.
각 단계의 개선은 이전단계의 개선을 포함한 상태에서 추가적으로 적용된 것이다. 모든 개선사항을 적용한 경우 주행 방향별 최대오차를 최대값 기준으로
약 20cm 수준까지 개선할 수 있음을 확인하였다.
표 1 추측항법 시스템 개선 방법의 단계적 적용에 따른 상태추정 오차
Table 1 State estimation error from the cumulative application of dead reckoning system
improvements
Applied method
|
Direction A [m]
|
Direction B [m]
|
RMS
|
Max(abs)
|
RMS
|
Max(abs)
|
0
|
0.6219
|
0.8762
|
0.5544
|
0.8604
|
1
|
0.1265
|
0.3824
|
0.2254
|
1.0180
|
2
|
0.0613
|
0.1929
|
0.1476
|
0.8392
|
3
|
0.0601
|
0.1846
|
0.0824
|
0.2016
|