3.1 전차선 데이터 획득
전차선로 상부 구성품들에 대한 데이터는 2D LiDAR를 이용해 획득되고 이는 트롤리에 부착되어 인력에 의해 이동된다. 2D LiDAR는 트롤리의
이동 방향과 2D LiDAR의 회전축이 일치하도록 설치하여 전차선 상의 한 점을 항상 측정할 수 있도록 했다. 이때 2D LiDAR의 데이터를 3D
좌표계에 배치하기 위해서 트롤리의 차륜에 엔코더를 부착해 이동 거리에 따라 점구름 데이터를 배치하였다. 데이터는 Robot Operating System
환경에서 rosbag 형태로 저장되었으며 2D LiDAR는 25 Hz, 엔코더는 100 Hz의 샘플링 속도로 측정되었다.
2D LiDAR로 획득한 점구름에서 분할된 전차선의 높이에 대한 정확도를 확인하기 위해 드로퍼와 곡선당김금구 지점에 레이저 거리 측정기(그림 2)를 위치하여 전차선의 높이를 측정했다. 표 1에는 사용된 센서의 성능이 정리되어 있다.
표 1 사용된 센서 성능 정보
Table 1 Specifications of the used sensors
Type
|
Model
|
Specification
|
2D LiDAR
|
SICK LMS511-20100
|
Systematic error: ±25 mm
Statistical error: 7 mm
Horizontal Field of View: 190°
|
Laser Rangefinder
|
Leica DISTO
|
Systematic error: ±1 mm
|
Encoder
|
Autonics Encoder
|
Resolution: 1024
|
데이터는 단일 전차선과 오버랩 구간 등에 나타나는 복수의 전차선에서 획득했으며, 높이 오차 확인을 위해 레이저 거리 측정기로 총 76지점에 대하여
정지상태에서 높이에 대한 정답 데이터를 측정하였다. 2D LiDAR로부터 적당한 밀도의 점구름 데이터 획득을 위하여 트롤리는 보행속도(2~3 km/h)
정도를 유지하며 이동했다.
3.2 데이터 전처리
획득된 데이터는 두 번의 전처리 과정을 거친다. 첫 번째 과정은 2D LiDAR에서 획득한 2D 점구름 데이터를 3D 좌표계에 대한 점구름 데이터로
변환하는 것으로, xy 평면에 대한 데이터만 지닌 2D 점구름 데이터에 이동 거리만큼 z축 방향으로 평행 이동한 뒤 동일한 3D 공간에 배치한다.
모든 2D 점구름 데이터에 대해 해당 과정을 진행하여 단일 3D 좌표계의 점구름으로 결합한다.
이렇게 결합된 단일 3D 점구름은 전차선에 해당하는 직선을 검출하기 위해 z축 방향으로 3 m 간격 및 전차선과 조가선이 위치하는 높이와 폭으로 분할된다.
그림 3은 데이터 전처리 과정을 나타낸 것으로 (a)는 2D LiDAR에서 획득한 하나의 time stamp의 점구름 데이터를 보여주고 (b)는 이동 거리를
이용해 하나의 3D 점구름 데이터로 결합된 결과이다. 그리고 (c)는 전차선에 해당하는 직선 검출에 쓰이기 위해 분할된 일정 길이 구간의 3D 점구름
데이터이다.
그림 3. 데이터 전처리 과정 (a) 2D 점구름, (b) 이동 거리와 결합된 3D 점구름, (c) 분할된 3D 점구름
Fig. 3. Procedure of data preprocessing. (a) 2D point cloud, (b) 3D point cloud based-on
odometry, (c) sliced 3D point cloud
3.3 전차선 분할 알고리즘
전차선 분할은 두 단계로 진행된다. 1차적으로 전차선에 해당하는 점구름이 형성한 직선 영역을 검출하고, 2차적으로 직선만으로는 표현하지 못하는 전차선의
곡선부를 표현하고 2D LiDAR 측정 노이즈를 감소시키기 위해 전차선을 개선하고 분할한다. 1차 전차선 검출에는 RANSAC (RANdom SAmple
Consensus)[8], 2차 전차선 개선에는 GMMs (Gaussian Mixture Models)와 GMRs (Gaussian Mixture Regressors)가
사용된다.
1차적으로 RANSAC을 이용한 직선 검출은 다음과 같은 방법으로 수행된다. 전차선은 실제로는 중력 및 다양한 환경 영향에 의해 완전한 직선은 아니지만
짧은 구간에 대해서는 직선으로 근사할 수 있으므로 이동 거리 방향인 z축 방향으로 분할한 점구름에서 RANSAC을 이용해 3D 직선 모델을 추정한다.
직선 검출을 위해 Hough 변환 등의 방법도 사용할 수 있으나 데이터가 증가할수록 연산 시간이 RANSAC에 비해 크게 증가하므로 수백 m에서 수
km까지 측정하는 철도 환경에서는 적용이 어려울 수 있다.
한편, 전차선에 해당하는 적절한 직선을 검출하기 위해 여러 조건이 적용되었다. RANSAC에서 검출된 직선의 길이가 직선 검출용으로 분할된 3D point
cloud 길이인 3 m의 90%보다 짧은 경우 폐기하였다. 이때 상대적으로 짧은 길이를 지닌 드로퍼는 전차선 검출에서 제외되었다. 검출된 직선에
포함된 점구름이 이루는 직선의 직경은 35 mm로 제한하였다. 실제 전차선의 경우 약 16 mm의 직경을 지니지만 2D LiDAR의 측정 노이즈로
인해 점구름 데이터는 전차선의 실제 직경보다 더 크게 측정되기 때문에 직경 임계치는 다르게 설정했다. 전차선에 해당하는 직선은 130개 이상의 점을
포함하도록 설정했고 전차선의 진행 방향은 레일의 방향과 같으므로 트롤리의 이동 방향인 z축과 평행에 가까운 직선이 전차선에 해당한 것으로 판단했다.
이를 위해 검출된 직선이 앞선 모든 조건과 z축 간의 내적이 0.5 이상의 값을 지녔을 때 전차선에 해당하는 직선이라고 판단했다. 그림 4는 RANSAC으로 검출한 결과를 나타내며 녹색은 전차선, 청색은 조가선에 해당한다.
그림 4. RANSAC으로 검출된 전차선에 해당하는 직선(하단 녹색)과 조가선에 해당하는 직선(상단 청색)
Fig. 4. Line for contact wire (lower green) and line for messenger cable (upper blue)
detected by RANSAC
전차선 결합은 이동 거리에 따라 RANSAC으로 검출된 다수의 직선을 단일 또는 다중 전차선으로 결합하는 과정이다. 앞서 3 m 간격으로 분할된 각
점구름 데이터에서 RANSAC으로 검출된 직선을 하나의 직선으로 결합하는 과정으로, 전차선이 하나만 존재할 경우, 전차선과 조가선은 높이 차이로 구분하면
각각을 하나의 직선으로 쉽게 결합할 수 있다. 하지만 전차선이 다수이거나 서로 교차하는 구간이 존재할 경우, 각각의 전차선에 대한 연속적인 직선의
집합이 필요하다. 그림 5는 검출 된 모든 직선을 zy 평면에 사영하여 표현한 것으로 약 115 m 길이의 전차선과 조가선에서 72개의 직선 성분이 검출된 것을 나타낸다.
그림 5. 분할된 각 점구름에서 검출된 직선
Fig. 5. Detected lines from sliced point clouds
여러 직선을 하나의 집합으로 결합하기 위해 이전 분할 구간의 직선들과 현재 분할 구간에서 검출된 직선의 내부 점(inlier point)들 간의 가장
가까운 거리를 사용했다. 그리고 현재 검출된 직선의 방정식과 이전에 검출된 직선들의 중심점 간의 거리 및 방향 벡터 간의 내적을 계산하여 세 가지
결과의 각각에 대한 임계치를 충족하는 이전 직선과 현재 직선을 하나의 직선으로 포함시켰다. 현재 직선과 이전 직선 내부 점들 간의 거리 최솟값 및
중심점 간의 거리에 대한 임계치는 0.01 m로 설정했다. 이는 트롤리의 이동 속력이 1 m/s 미만에 엔코더의 샘플링 속도는 100 Hz로 측정된
점들 간의 이동 방향 z축에 대한 거리 차이는 0.01 m 미만이기 때문이다. 현재 직선과 이전 직선의 중심점 간 거리의 경우, 설계속도 120 km/h
기준 콘크리트도상 궤도의 본선 최소 곡선반경은 600 m로, 레일 상에서 3 m 이동 시 전차선의 편위는 약 0.008 m 차이가 발생하기 때문에
편의를 위해 0.01 m로 임계치를 설정해 해당 임계치 미만의 두 직선을 하나의 전차선으로 판단했다. 두 직선의 방향 벡터 내적에 대한 임계치는 0.8로
설정했다. 그림 6은 그림 5에 직선 결합을 적용한 결과를 보여준다. 조가선의 경우 전차선 및 다른 전차선 구성 요소에 의해 LiDAR의 레이저가 가려지면서 측정되지 않은 구간이
일부 존재한다.
2차적으로 GMMs와 GMRs로 전차선 검출 결과의 개선이 진행된다. 실제 전차선은 완전한 직선은 아니며 중력 및 다른 외력에 의해 일부 곡률을 지니고
있다. 하지만 RANSAC으로 검출된 전차선은 오직 직선의 조합으로만 표현되기 때문에 이러한 전차선을 이용해 높이를 측정하게 되면 실제 높이를 반영하지
못하게 된다. 여기에 추가로 2D LiDAR에서 측정된 전차선의 데이터는 노이즈와 정밀도 한계로 실제 전차선의 지름인 약 16 mm보다 더 큰 편차로
측정된다.
그림 6. 직선 결합 후 출력된 연속된 전차선(하단 녹색)과 조가선(상단 청색)
Fig. 6. Continuous contact wire (lower green) and messenger cable (upper blue) after
line merging
GMMs는 단일 Gaussian 모델로 추정하기 어려운 복잡한 분포를 다중 Gaussian 모델과 각 모델에 대한 가중치를 통해 추정할 수 있다.
그러므로 GMMs를 적용해 전차선의 곡선 구간과 곡선당김금구에서 상대적으로 급격하게 변하는 점구름 데이터를 여러 Gaussian 모델로 추정할 수
있게 된다. 이렇게 전차선의 분포를 추정한 GMMs를 기반으로, GMRs를 통하여 불연속적으로 측정된 전차선의 점구름 데이터를 연속적으로 표현할 수
있으며 GMMs의 평균 효과를 통해 측정 노이즈를 감소시킬 수 있다.
그림 7의 십자 점은 2D LiDAR로 측정된 데이터로 30 cm 길이의 이동 거리 동안 측정된 전차선을 xy 평면에 사영한 것이다. 이 데이터에서 전차선의
폭은 최대 20 mm로 측정되며 이러한 센서의 특성과 RANSAC의 직선으로만 검출되는 전차선에서 더욱 정확한 높이 측정을 위해 2차적으로 앞서 검출된
전차선을 개선했다.
GMMs는 식 (1)로 표현되며 확률 분포를 모델링하고 복잡한 데이터를 클러스터링하는 데 사용한다. GMMs는 데이터를 여러 개의 가우스 분포(정규 분포)의 선형 조합으로
모델링한다. 식 (1)에서 $K$는 사용할 Gaussian 분포 $N_{k}(x,\: y \vert\mu_{xy_{k}},\: \Sigma_{xy_{k}})$의 개수,
$\pi_{k}$는 각 Gaussian 분포에 대한 가중치, $u_{xy_{k}}$는 분포의 평균, $\Sigma_{xy_{k}}$는 분포의 표준편차를
나타낸다. GMMs는 기댓값 최대화 알고리즘을 통해 훈련된다. 이후 GMRs는 조건부확률인 $p(y \vert x)$를 통해 $y$의 값을 예측할
수 있다. 각 Gaussian 모델에 대한 조건부 확률 분포는 식 (2)와 같다.
또한 GMMs에서 각 Gaussian 모델에 대한 조건부확률 분포와 prior를 계산할 수 있다.
그리고 최종적으로 $p(y \vert x)$를 얻을 수 있다.
이렇게 GMMs와 GMRs를 적용하여 이동 거리에 따른 전차선 검출 결과를 개선하여 분할을 완료하였다. 그림 7의 원은 GMRs를 통해 개선된 점구름 데이터를 나타내며, 매우 균일하게 위치한다.
그림 7. RANSAC으로 검출한 전차선 위치(십자)와 GMRs로 개선된 위치(원)
Fig. 7. Contact wire location detected by RANSAC (cross) and refined location by GMRs
(circle)
3.4 결과
그림 8과 그림 9는 단일 전차선과 복수의 전차선에 대해서 획득한 점구름으로부터 전차선을 분할한 결과를 각각 나타낸다. 그림 8의 단일 전차선은 약 115 m 이동하는 동안 교차하는 전차선이 없다. 그림 9의 복수의 전차선은 약 300 m 이동 거리 중 건넘선이 존재했고, 알고리즘에 의하여 분할되어 나타났다. 그림 9에서 높이를 나타내는 상단 그래프의 붉은 점선 박스 내부는 본선과 높이가 다른 건넘선의 높이가 함께 측정되고 GMRs로 개선된 것을 나타내며, 이러한
다수의 전차선이 나타나는 구간에 대해서도 제대로 분할되었다. 분할된 전차선의 높이와 실제 높이를 비교하기 위한 기준 높이 측정은 두 레일의 중심과
레일의 상단을 기준으로 레이저 거리 측정기를 이용해
그림 8. 단일 전차선 분할 결과
Fig. 8. Segmentation results for single wire
그림 9. 복수의 전차선 분할 결과. 점선 상자 내부는 건넘선의 높이가 함께 측정된 결과
Fig. 9. Segmentation results for multiple wires. The dotted boxes indicate heights
of crossing wires.
그림 10. 단일 전차선(상단)과 복수의 전차선(하단)에 대해 측정된 기준 높이(십자)와 분할된 전차선에서 추출한 높이(원)
Fig. 10. Reference points (cross) and points from segmented wires (hollow circle).
Upper graph for single wire and lower graph for multiple wires
총 76지점에서 측정하였다(그림 10). 기준 높이와 분할된 전차선의 높이를 비교한 결과 평균 -1.2 mm, 표준편차는 3.4 mm로 나타났다.