1. 서론
매년 화물 선박의 전복사고가 지속적으로 발생하고 있으며, 대부분 과적, 복원력을 고려하지 않은 선적, 부실한 고박 관리 등으로 원인이 분석되고 있으나 여전히 개선되지 않고 있다. 특히 비규격 화물을 크레인으로 쌓아 올려 운반하는 RoRo(Rollon-Roll off)선이나 차량 운반선은 더 빠른 운항 속도를 내기 위하여 일반 컨테이너선보다 선폭이 좁게 설계되어 급격한 변침이 일어나는 경우 화물 쏠림 현상이 발생한다. 이와 같은 문제가 발생하는 경우 선박의 복원력을 완전히 상실할 수가 있으며, 이는 심각한 해양사고로 이어지게 된다. 실제로 2014년 세월호 사고로 304명이 사망·실종되었으며, 1994년 에스토니아호 침몰로 952명, 세계 최악의 해상사고로 꼽히는 2006 년 알살람 98‘호 침몰은 약 1000여의 사망·실종자가 발생하게 했으며, 해당 사고 선박들은 모두 비규격화물 운반선으로 밝혀졌다. 위와 같은 사고가 발생한 원인은 운송비 절감을 위해 한 번에 많은 양의 화물을 실어 운반하거나, 단속에 적발되더라도 지급해야 할 과태료보다 과적으로 인한 이익이 더 크기 때문에 무분별한 선적을 시도한 것에 있었다.
세월호 참사 이후 선박의 과적 운항을 예방하기 위해 공인계량소에서 화물 무게에 대한 계량 증명서를 발급받아 선사에 제출하는 계량 증명 제도가 도입되었지만, 계량 이후 화물을 추가 선적하거나 증명서위조 등의 문제도 발생하고 있어 이에 대한 대응책 마련이 필요하다. 특히 비규격 화물 운반선의 경우 규격 화물 운반선에 비해 선적 산출이 쉽지 않으며, 계량 증명서 및 외관 등의 정보에만 의존하고 있어 과적으로 인한 사고의 위험을 더욱 야기시키고 있다.
현재 비규격 화물 운반선에 적용되는 운영 시스템은 현장 작업자들이 수동으로 화물을 탑재한 후 고박장치로 화물을 고정하고, 선적 위치를 수기로 기록하여 관리하는 절차로 이루어져 있기 때문에 작업이 매우 비효율적이며 언제든지 사고 위험에 노출될 수 있다.이에 개별 화물에 대한 체계적이고 정확한 체적·중량 관리로 최적의 선적 배치설계를 지원하여선 박의 복원성을 높이고 선박 과적 운항 문제를 해결할 수 있는 화물 자동계측 시스템 구현 기술이 요구된다.
비규격 화물 자동계측 시스템은 선박 내 적재공간 및 복원력을 고려한 최적의 선적 위치 결정과 최대적재량 계산, 계측-선적-하역 각 단계의 화물 추적을 위해 화물 식별번호(ID), 무게, 체적(부피, 크기, 윤곽)등의 데이터를 수집·분석한 결과값을 상위 시스템에 제공하는 시스템으로, 차량번호 식별, 화물무게 측정, 화물 체적산출, 해당 화물에 대한 데이터 추출, 상위 시스템 전달 기능 순으로 동작 시나리오가 이루어진다. Fig.1은 이러한 시스템의 구성도를 나타낸다.
Fig. 1. Main components of the non-standard cargo auto- matic measurement system.
최근 전 세계적인 물동량 급증과 항만의 디지털화에 따라 화물 선적이나 컨테이너 배치 자동화를 위한 유전 알고리즘 기법이 많이 제안되고 있다[1, 2]. 유전알고리즘은 생물체가 특수한 환경에 적응하면서 최적화된 방법을 찾아내는 방법을 모방한 알고리즘이며, 이 방법을 사용할 경우 수학적으로 명확하게 정의할 수 없는 불규칙한 문제에 대한 최적화된 해법을 제시할 수 있게 된다. 그러나 대부분의 연구는 크기와 무게가 균일한 차량을 대상으로 선적 방법이 최적화되어 크기와 무게가 불규칙한 모든 비규격 화물을 자동 계측하여 선적 배치를 최적화하는 연구는 거의 전무하다.현재의 비규격 화물 계측은 사람에 의해 수행되기에 많은 시간과 인력이 요구되어 효율적인 화물 선적 처리가 지연되기 때문이다.
따라서 본 논문에서는 비규격 화물을 대상으로 실물 데이터 측정부터 3D모델링을 통한 정확한 계산까지 통합된 실시간 계측기술을 제안한다. 데이터 측정에는 외부환경 요인에 영향을 적게 받고 정밀도가 높은 LiDar센서를 사용하며, 3D모델링 연산 과정을 통해 최대 99%에 가까운 계측 정확도를 얻을 수 있어 체계적인 개별 화물 관리가 가능하여 항만 화물 선적을 보다 자동화하는 것에 기여할 것으로 보인다.
먼저 2장에서는 비규격 화물의 실시간 체적산출을 위한 제안 방법을 데이터 획득, 데이터 전처리, 체적 계산, 3D모델링의 단계별로 기술한다. 3장에서는 제안된 방법의 검증 및 실험 결과를 설명하고 마지막 4장에서는 결론 및 향후 연구 계획을 제시한다.
2. 제안된 방법
Fig.2는 본 논문에서 제안된 비규격 화물 체적산출 방법의 전체 흐름도를 나타낸 것이다.
Fig. 2. Flowchart of the Non-Standard Cargo Volume Calculation Process.
2.1 데이터 획득(Data Acquisition)
체적산출에 필요한 데이터 획득을 위하여 외부환경 요인에 영향을 적게 받고, 높은 분해능과 정밀도로 정확한 거리 데이터 취득이 가능한 2DLiDar센서 [3, 11]를 사용한다. 좌, 우, 중앙 센서 아래를 통과하는 물체의 윤곽을 스캐닝한 점군 데이터를 추출한다. 추출된 점군형태의 스캔 데이터는 센서의 중심에서 표적까지 측정된 거리와 각도로만 표시되므로, Fig 3의 삼각함수를 이용해 거리·각도 데이터를 xy좌표로 변환하여 좌표 데이터로 가공한다.
Fig. 3. The method of acquiring xy coordinates with distance and angle data.
그리고 각 센서의 다른 측정 위치로 인해 데이터의 좌표값이 일치되어 있지 않으므로, 기준점을 좌측 LiDar센서 위치 바로 아래의 지면을 원점으로 하는 직교좌표계(Cartesian coordinate system)에 맞게 프레임 데이터의 xy좌표를 이동시키고, 해당 xy좌표는 m 단위로 환산한다.
2.2 데이터 전처리(Data Preprocessing)
추출된 2차원의 점군 데이터에는 대상 물체뿐만 아니라 LiDar센서의 측정 가능 거리의 모든 물체들도 함께 생성된다[4].체적 산출에 필요한 물체 정보만을 추출하기 위해 불필요한 배경 제거, 좌표 일치 및 노이즈를 제거하는 데이터 전처리 작업이 필요하며, 이를 수행하기 위한 제안 방법은 Fig.4와 같이 구성된다.
Fig. 4. A Block Diagram of Data Processing.
우선, 불필요한 배경 제거를 위해 Fig.5와 같이 프레임 데이터에서 대상 물체가 통과하는 구역을 벗어난 좌표를 제거한다. 다음으로, 좌·우측 센서에서 획득한 2개의 프레임 데이터를 하나의 데이터로 정합하는 과정에서 물체의 상단 좌표가 겹치게 되는데, 이를 방지하기 위해 우측 센서에서 획득한 데이터는 우측 하단의 좌표부터, 좌측 센서에서 획득한 데이터는 좌측 하단의 좌표부터 동시에 탐색을 시작하여 상단의 서로 만나는 지점에서 탐색을 종료하게 되고, 탐색이 진행된 좌표만으로 하나의 평면 데이터를 구성한다.
Fig. 5. The method of Removing Background.
수집된 데이터는 외부환경으로 인한 센서 측정 오차로 노이즈가 발생하게 되는데, 미세한 먼지나 날아다니는 벌레 등으로 인해 생기는 외부 노이즈와 물체를 구성하는 유리로 인해 차량 내부 물체의 좌표가 획득되어 발생되는 내부 노이즈가 있으며, 정확한 체적 산출을 위해서는 이러한 노이즈를 제거하는 과정이 필요하다.
먼저, 외부 노이즈 제거를 위해 이상치 탐지 알고리즘인 Local Outlier Factor[5]를 적용하여 Fig. 6와같이 평면 데이터 여러 개를 합친 후, 가우시안 분포를 통해 통계적으로 99% 이하의 이상치를 가진 좌표를 추출하여 제거하는 방식으로 외부 노이즈를 제거한다.
Fig. 6. The method of Removing Noise using Local Outlier Factor Algorithm.
다음으로, 평면 데이터에 물체 크기보다 작은 사각형을 구현하여 사각형 내부의 좌표를 제거하는 방식으로 내부 노이즈를 제거한다.
2.3 체적 계산(Volume Calculation)
Fig.7은 전처리된 2D 형태의 데이터를 3D 모델링 화 하기 위해 물체의 넓이 및 체적 계산 과정을 나타낸 블록 다이어그램이다.
Fig. 7. A Block Diagram of Volume Calculation.
먼저 물체의 길이, 폭, 높이를 구하기 위해서는 중앙 LiDar센서의 좌표 데이터와 평면 데이터의 좌표 데이터가 필요하다. 물체가 중앙 센서 아래를 지나가는 동안의 프레임당 z좌표 데이터의 최댓값, 최솟값으로 프레임 개수에 해당하는 길이 데이터를 획득한다. 그리고 길이 데이터의 이상치를 제거하기 위해가우시안 분포로 통계적으로 평균에서 68% 이상 벗어나는 좌표를 제거하고, 남은 값들의 평균을 다시 계산하여 길이를 산출한다. 폭과 높이는 평면 데이터 x좌표의 최댓값, 최솟값과 y좌표의 최댓값, 최솟값을 이용하여 구한다.
다음으로, 평면 데이터의 넓이는 중앙 LiDar센서를 통해 획득된 물체의 길이를 적분하여 구할 수 있다. 우선 각 평면 데이터의 수십 개의 좌표로 이루어진 다각형의 넓이를 구해야 하는데, 이는 다각형 넓이 공식인 신발끈 공식(shoelaceformula)을 이용하여 계산한다. 이를 위해 Fig.8과 같이 좌푯값을 시계방향 또는 반시계 방향으로 순서대로 배치한 후, 식 (1)에 좌표를 대입하여 다각형의 넓이를 계산한다.
\(\begin{aligned} \frac{1}{2} &\left(x_{1} y_{2}+x_{2} y_{3}+\cdots+x_{n-1} y_{n}+x_{n} y_{1}\right) \\ &-\left(x_{2} y_{1}+x_{3} y_{2}+\cdots+x_{n} y_{n-1}+x_{1} y_{n}\right) \mid \end{aligned}\) (1)
Fig. 8. The method of using Shoelace formula.
마지막으로, 체적을 구하기 위하여 구분구적법으로 적분을 시행한다. 정확한 체적을 구하기 위해서는 넓이 데이터를 함수로 나타내고 정적분을 통해 계산해야 하지만, 데이터에 일치하는 함수를 만들기 위해서는 처리시간이 상당히 오래 걸리므로 본 연구에서는 변형된 식 (2)의 계산량이 적은 구분구적법을 사용한다. 여기서 A(k)는 식 (1)에서 구한 넓이, n은 데이터의 개수, 그리고 length는 물체의 길이를 의미한다.
\(\sum_{k=0}^{n-1} A(k) \times \frac{\text { length }}{n-1}\) (2)
2.4 3D 모델링(3D Modeling)
체적 계산이 완료된 데이터는 데이터 시각화를 위해 Fig.9의 블록 다이어그램과 같이 3D 재구성 작업을 수행한다. 해당 데이터는 xy좌표로 이루어진 2D 평면 데이터이므로, 중앙센서를 통해 물체에 해당하는 z좌표를 추가해야 한다. 이를 위해서 물체 앞부분 평면 데이터부터 순서대로 index(번호)를 부여하고 식 (3)을 사용하여, 같은 index에 해당하는 평면 데이터의 모든 좌표에 동일한 z좌표를 할당한다.
\(z=\frac{\text { length }}{n-1} \times \text { index }\) (3)
Fig. 9. A Block Diagram of 3D Modeling.
이렇게 구성된 xyz 좌표는 Open 3D[6]를 사용하여 3차원의 공간에서 표시할 수 있는데, 점군 데이터 전체로 모델링할 경우 작업 시간이 오래 걸리기 때문에, Voxel Grid Filter를 사용하여 데이터 경량화 작업을 거친다. Voxel Grid는 2차원의 도트(점)를 작은 3D 박스(Voxel)로 구성된 3차원의 형태로 구현하는 것으로[7], Voxel 내에 점이 1개 이상 존재한다면 Voxel의 중심점을 대표 좌표로 지정하고, 나머지 점은 제거하여 좌표 개수를 줄이는 다운샘플링(Down Sampling)으로 연산 부하를 감소시킴으로써 처리시간을 단축할 수 있다. Fig. 10은 다운샘플링한 결과를 보여주는 그림이다.
Fig. 10. the Method of Down Sampling using Voxel Grid.
이렇게 경량화된 데이터는 3D모델 구조화 진행을 위해 Mesh를 생성한다. 이를 위해 Open 3D에서 지원하는 Triangle Mesh 방법 중 Alpha Shapes Algorithm[8]과 BallPivotingAlgorithm[9]을 적용할 수 있다. 먼저 AlphaShapesAlgorithm은 모든 점에 대해 겹치지 않도록 점과 점을 연결한 삼각형의 Mesh를 생성한 뒤 반지름이 Alpha인 원을 삼각형 각 경계 주위에 그려 AlphaShape(알파형상)을 형성하며, 변수인 Alpha값을 변경하여 3D모델 형상을 조절할 수 있다.
Ball Pivoting Algorithm은 점의 표면을 따라 작은 공(ball)을 굴려 점과 점 사이의 공간에 걸리게 되면, 두 점을 연결하여 삼각형을 만들고 이러한 삼각형들이 모여 Mesh를 생성하게 된다[10].이 기법은 알고리즘 2개 이상의 이중 벡터로 구성된 원의 여러 반지름에 대해 표면 처리를 모두 시행하므로 Alpha Shapes Algorithm보다 수행 속도가 매우 느려, 실시간성을 확보해야 하는 본 연구에는 Alpha Shapes Algorithm기법을 사용하여 작업하는 것이 적합하다.
Table1은 Voxel크기와 Alpha값 차이에 따른 모델링 결과에 대한 비교표를 나타낸 것이다.Alpha Shapes Algorithm에서 Voxel크기와 Alpha값을 변경하여 3D모델의 형태를 조절했을 때, Voxel크기와 Alpha값이 작을수록 섬세하고 유연한 모양이 출력되고, Voxel크기와 Alpha값이 클수록 선명한 모양이 출력되는 것을 볼 수 있다.
Table 1. The comparison of modeling results according to the voxel size and alpha values.
3D모델 표면을 생성하기 위하여 표면 법선(Sur- faceNormal)의 방향 분포를 구해야 한다.좌표 중앙의 지점에서 Mesh로 생성된 삼각형의 각 꼭짓점에 해당하는 좌표까지 직선으로 연결한 후 길이를 1로 정규화하여 표면 법선 벡터를 구할 수 있으며, 이러한 수행 작업 화면은 Fig.11과 같다. 그리고 표면 법선 벡터의 방향에 따라 표면을 덮음으로써 3D 모델링 작업을 완료한다.
Fig. 11. 3D modeling procedure. (a) Mesh and (b) Normal vector.
3. 실험 결과 및 고찰
본 논문에서 제안된 비규격 화물의 실시간 체적산출 방법을 검증하기 위해, 윤곽 계측용 2DLiDar센서를 좌, 우, 중앙에 설치한 구조물을 교내 지하주차장에 설치하여 계측 환경을 구축하였다.
각기 다른 크기의 물체가 LiDar센서 아래를 통과하는 방식으로 각각 5회에 걸쳐 실험을 진행하여 실제값과 측정값의 차이를 비교하였다. Table2의 a는 길이, 폭, 높이가 1m 이내인 크기가 작은 물체에 대한 측정 결과이며, b는 길이, 폭, 높이가 1m를 초과하는 크기가 큰 물체에 대한 측정 결과이다.
Table 2. Experimental results in indoor measurement environment.
먼저 길이, 폭, 높이의 표준편차를 구하여 측정값의 정밀도를 알아보았다. 크기가 작은 물체의 길이, 폭, 높이에 대한 표준편차는 0.0058 m, 0.0066 m, 0.0015m이며, 크기가 큰 물체의 표준편차는 0.028 m, 0.073m, 0.006m로 모두 0.1m를 넘지 않았으며, 이는 측정값들이 평균값에서 크게 벗어나지 않아 측정값의 정밀도가 높다는 것을 확인하였다.
계측 정확도의 경우 크기가 작은 물체의 길이, 폭, 높이 모두 95% 이상의 정확도가 측정되었는데, 이는 매우 높은 신뢰도로 자동계측을 하게 된다는 의미이다. 크기가 큰 물체의 경우 길이와 폭의 정확도가 매우 높게 나오지만, 높이에 대한 정확도는 비교적 낮게 측정되었는데, 이는 체적산출 대상 물체의 크기에 따라 높이 측정값은 변동될 수 있음을 알 수 있다.
4. 결론
본 논문에서는 화물 계측의 자동화를 위한 비규격화물의 실시간 체적산출 방법을 제안하였다. 2D LiDar센서로부터 취득한 윤곽 스캔 데이터의 전처리를 위해 배경 제거와 센서 좌표를 통합하여 데이터를 정합하고, Local Outlier Factor알고리즘으로 외부 노이즈 제거와 직접 구현한 필터를 이용하여 내부노이즈를 제거하였다. 전처리된 데이터는 통계적 기법을 활용하여 체적을 계산하는데, 이 때 점군데이터전체로 모델링할 경우 처리시간이 오래 걸리므로 실시간성 확보를 위해 Voxel Grid Filter를 이용하여 데이터를 경량화하였다. 최종적으로 3D모델링 이미지를 구현하기 위하여 Mesh를 생성하여 Alpha Shapes 알고리즘으로 3D모델 구조화를 한 후, 표면 법선벡터를 구해 표면을 생성하였다.
측정값 검증 결과 차량의 체적(길이, 폭, 높이) 측정값의 정밀도가 높은 것을 확인할 수 있었으며, 정확도 역시 매우 높은 신뢰도로 자동계측할 수 있음을 확인하였다.
비규격 화물 운반선에 화물을 선적하기 위해서는 화물의 높이를 측정하여 이에 맞는 적재 공간을 선택하여야 하며 길이, 너비에 따라 선박 내 적재할 수 있는 화물의 수와, 적재 후 화물을 고정시키기 위한 고박 위치 또한 달라진다. 향후에는 화물 차량에서의 화물 추출 방법에 대한 추가 연구와, 본 논문에서 제안한 방법을 항만 게이트의 계측 구조물에 적용하여 비규격 화물 차량의 체적(길이, 너비, 높이)을 측정함으로써, 실시간 화물 자동 계측 시스템을 구현할 것이다.
참고문헌
- J. Cha, J. Choi, Y. Bae, and Y. Woo, "An Optimization Method of Spatial Placement for Effective Vehicle Loading," Journal of the Korea Institute of Information and Communication Engineering, Vol. 24, No. 2, pp. 186- 191, 2020. https://doi.org/10.6109/JKIICE.2020.24.2.186
- J. Kim, W. Cho, Y. Jeon, and S. Jeong, "A Design of Cargo Optimal Arrangement Algorithm for Shipment Planning," Journal of Korea Multimedia Society, Vol. 24, No. 2, pp. 41-42, 2021.
- J. Kim, Y. Kim, S. Yoo, and Y. Nam, "3D Point-Cloud Data Acquisition using 2D LiDar and Surface Reconstruction," Proceeding of the Spring Conference of the Korean Society of Mechanical Engineers, pp. 34-35, 2017.
- H. Kim, S. Lee, and E. Ahn, "Creation of a 3D Object and Surface Restoration Using Multiple 3D Point Cloud Data," Proceeding of the Winter Conference of the Korean Institute of Information Scientists and Engineers, pp. 1174-1176, 2015.
- M.M. Breunig, H.-P. Kriegel, R.T. Ng, and J. Sander, "LOF: Identifying Density-Based Local Outliers," Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data, pp. 93-102, 2000.
- Open 3D-A Modern Library for 3D Data Processing, http://www.open3d.org/ (accessed January 24, 2022).
- J. Ryde and M. Brunig, "Non-Cubic Occupied Voxel Lists for Robot Map," Proceedings of IEEE International Conference on Intelligent Robots and Systems, pp. 4771-4776, 2009.
- H. Edelsbrunner, D.G. Kirkpatrick, and R.G. Seidel, "On the shape of a set of points in the plane," IEEE Transactions on Information Theory, Vol. 29, No. 4, pp. 551-559, 1983. https://doi.org/10.1109/TIT.1983.1056714
- F. Bernardini, J. Mittleman, H. Rushmeier, C. Silva, and G. Taubin, "The Ball-Pivoting Algorithm for Surface Reconstruction," IEEE Transactions on Visualization and Computer Graphics, Vol. 5, No. 4, pp. 349-359, 1999. https://doi.org/10.1109/2945.817351
- S. Park and S. Lee, "A Surface Reconstruction Algorithm using Weighted Alpha Shapes," Korean Journal of Society for Computational Design and Engineering, pp. 267-275, 2005.
- J. An, and Y. Ko, "Ceiling-Based Localization of Indoor Robots Using Ceiling- Looking 2D-LiDAR Rotation Module," Journal of Korea Multimedia Society, Vol. 22, No. 7, pp. 780-789, 2019. https://doi.org/10.9717/KMMS.2019.22.7.780