[개념 정리] SLAM을 공부하면서 알게 된 개념 정리
DiSCo-SLAM: Distributed Scan Context-Enabled Multi-Robot LiDAR SLAM With Two-Stage Global-Local Graph Optimization 을 읽으며..
SLAM이란?
동시 위치 추정 및 지도 작성(SLAM)은 로봇 내비게이션에서 중요한 기능으로, 모바일 로봇이 알지 못하는 환경을 지도화하면서, 그 환경에 대한 상대적인 측정을 바탕으로 자신을 위치를 추정하는 것.
Low bandwidth conditions
저대역폭 조건을 의미. 대역폭(bandwidth)은 통신 네트워크에서 데이터를 전송할 수 있는 최대 속도나 용량을 나타냅니다. 즉, 대역폭이 낮다는 것은 데이터 전송 속도가 느리거나, 한 번에 처리할 수 있는 데이터 양이 적다는 것을 의미합니다.
Loop closure detection
Simultaneous Localization and Mapping (SLAM) 시스템에서 중요한 개념입니다. 이는 로봇이 이미 지나쳤던 장소를 다시 지나칠 때, 그 장소를 인식하고 자신의 위치를 재조정하는 과정입니다.
- 목적:
- 로봇은 주행 중에 환경을 탐색하며 맵을 작성하고 동시에 자신의 위치를 추정합니다. 그러나 주행 중 위치 추정에 오차가 쌓이게 되어, 맵이 점점 왜곡되거나 부정확해질 수 있습니다.
- Loop closure는 로봇이 이전에 지나쳤던 위치나 구역을 다시 지나칠 때, 그 위치를 인식하고 과거의 위치 추정과 맵을 조정하는 작업입니다. 이 과정을 통해 맵과 로봇의 위치 추정이 더 정확해지고, 누적된 오차를 줄일 수 있습니다.
- 어떻게 작동하는가?
- 로봇이 주행하는 동안 센서를 사용하여 주변 환경에 대한 정보를 수집합니다.
- 로봇이 이미 지나갔던 위치와 동일한 장소에 도달하면, 그때의 센서 데이터(예: 카메라 이미지, 라이다 스캔 등)를 이전에 저장된 데이터와 비교합니다.
- 이 데이터 비교를 통해 로봇은 자신이 이미 지나쳤던 곳임을 인식하고, 이를 loop closure로 탐지합니다.
- Loop closure detection을 통해 로봇은 위치 추정 오차를 수정하고, 전체 맵을 더 정확하게 갱신합니다.
- 왜 중요한가?
- SLAM 시스템에서 로봇의 위치 추정에 누적된 오차는 시간이 지남에 따라 더 커지며, 맵이 왜곡될 수 있습니다. 루프 클로저 탐지는 이 오차를 수정하고, 정확한 위치와 지도를 유지하는 데 도움을 줍니다.
- 특히 대규모 환경에서 로봇이 여러 번 지나가는 구역을 다시 지나칠 때, 루프 클로저 탐지는 전체 SLAM 성능을 크게 향상시킬 수 있습니다.
예시:
- 실제 상황: 로봇이 복잡한 건물 내에서 탐사를 진행하는 동안, 처음에 지나쳤던 구역으로 다시 돌아가게 되면, 그 이전에 수집한 데이터와 새로 수집한 데이터를 비교하여 "이곳은 이미 지나쳤던 곳이다"라는 것을 인식하고, 그 정보를 바탕으로 맵을 수정합니다.
결론: Loop closure detection은 SLAM 시스템에서 로봇이 환경을 탐색하고 자율적으로 맵을 작성하는 과정에서 매우 중요한 역할을 하며, 로봇이 정확하게 자신의 위치를 추정하고 맵을 개선하는 데 필수적인 과정입니다.
Odometry (오도메트리)
로봇이나 차량이 이동한 거리를 추정하는 기술입니다. 로봇이 자신의 위치를 추적하고, 이동 경로를 계산하기 위해 사용됩니다. 로봇의 이동과 회전을 추적하는 방법으로, 로봇이 일정한 속도로 이동할 때 휠이나 구동 시스템의 회전수를 측정하여 이동한 거리를 계산합니다.
Gauss-Seidel (DGS) approach
Gauss-Seidel 방법은 선형 방정식 시스템을 풀기 위한 반복적 방법입니다. 이 방법은 주어진 시스템을 한 번에 하나의 변수씩 해결하여 점진적으로 해를 찾아가는 방식입니다. 일반적으로 Ax = b와 같은 선형 방정식 시스템을 해결할 때 사용됩니다.
- 연립방정식:
- Ax = b라는 선형 시스템을 풀고자 할 때, Gauss-Seidel 방법은 각 변수의 값을 순차적으로 갱신하여 시스템을 해결합니다.
- 방법:
- 각 변수는 이전 단계에서 계산된 값을 사용하여 갱신됩니다.
- 각 변수는 한 번에 하나씩 계산되며, 계산된 값은 즉시 다음 변수의 계산에 사용됩니다.
- 반복을 통해 각 변수의 값이 수렴할 때까지 이 과정을 반복합니다.
분산 Gauss-Seidel (DGS):
분산 Gauss-Seidel(DGS)은 여러 개의 분산된 시스템에서 Gauss-Seidel 방법을 적용한 것입니다. 즉, 여러 로봇이나 장치가 각각 로컬 계산을 수행하며, 이를 통해 협력적 최적화를 이끌어내는 방식입니다.
- 분산 시스템에서의 활용:
- 각 로봇이나 장치가 자신의 로컬 데이터를 사용하여 최적화를 수행하며, 계산 결과를 서로 교환하면서 시스템을 전체적으로 최적화합니다.
- 예를 들어, 다중 로봇 SLAM 시스템에서 각 로봇은 자신이 위치한 지역에 대한 데이터를 처리하지만, 전체 로봇 시스템의 일관된 최적화를 위해 정보를 주고받습니다.
- 문제점:
- 초기 추정값이 부정확할 경우, DGS 방법은 수렴하지 않거나 불안정한 결과를 초래할 수 있습니다. 이 문제는 초기 추정값이 잘못된 경우, 각 로봇이 자신이 처리한 결과를 바탕으로 점차적으로 잘못된 경로를 따라가게 만들 수 있습니다.
DGS의 한계:
DGS는 매우 유용한 방법이지만, 잘못된 초기 추정값을 가진 경우 최적화 과정에서 수렴하지 않거나 비효율적인 결과를 초래할 수 있습니다. 따라서, 초기 추정값이 중요한 역할을 하며, 이 문제를 해결하기 위해 두 단계의 글로벌 및 로컬 최적화 전략이 제안됩니다.
[모델 이름] LeGO-LOAM
extract point features representing edge and planar structures to scale down the data while ensuring high performance.
[모델 이름] Segmap
extracts segments from LiDAR point clouds and describes them with CNN-based features.
[모델 이름] DARE-SLAM
extracts visual features from 2D occupancy grid maps as geometric verification for inter-robot loop closures.
[모델 이름] Scan Context
describes the raw LiDAR point cloud by projecting the scan onto a low-resolution 2D plane, which is easily searched and exchanged.
The z-coordinate value of each 3D point is encoded in the intensity of the corresponding 2D point.
6DoF robot poses
6 degrees of freedom (6DoF)을 갖는 로봇의 위치와 방향을 나타내는 개념입니다. "6DoF"는 로봇이 3D 공간 내에서 가질 수 있는 자유도의 수를 의미하며, 이는 로봇이 어떻게 위치하고 회전할 수 있는지를 나타냅니다.
6DoF의 구성
- 3개의 변환 자유도 (Translation): 로봇의 위치를 정의하는 세 가지 축입니다.
- X축 (가로 방향)
- Y축 (세로 방향)
- Z축 (높이 방향)
- 3개의 회전 자유도 (Rotation): 로봇의 회전을 정의하는 세 가지 축입니다.
- 롤 (Roll): X축을 중심으로 로봇이 회전하는 것
- 피치 (Pitch): Y축을 중심으로 로봇이 회전하는 것
- 요 (Yaw): Z축을 중심으로 로봇이 회전하는 것
6DoF 표현 방법
- 위치 (Position)는 3개의 좌표값으로 정의됩니다: (x,y,z)
- 방향 (Orientation)은 3개의 회전 값으로 정의됩니다: 롤, 피치, 요 혹은 쿼터니언(Quaternion) 또는 회전 행렬(Rotation Matrix)을 사용할 수 있습니다. 회전 행렬은 로봇이 어떻게 회전했는지를 수학적으로 나타내는 방법이며, 쿼터니언은 회전을 표현하는 또 다른 방식으로 흔히 로봇 및 컴퓨터 비전에서 사용됩니다.
SE(3)
3차원 공간에서의 특수 유클리드 군(Special Euclidean Group).
3D 공간에서 강체 변환을 표현하는 군으로, 회전과 이동을 모두 포함하는 변환.
로봇이 3D 공간에서 움직일 때, 로봇의 위치와 방향은 SE(3)의 변환으로 나타낼 수 있다.
SO(3)
3차원 회전군 (Special Orthogonal Group of 3), 3차원 공간에서의 회전을 나타내는 변환 집합.
다음 조건을 만족하는 모든 3x3 정규 직교 행렬들의 집합입니다:
- 정규 직교성 (Orthogonality): 행렬 RR의 각 열과 행은 서로 직교(orthogonal)합니다.
- 행렬식이 1 (Determinant is 1): det(R)=1\det(R) = 1
따라서, SO(3)의 구성 요소들은 회전 행렬로, 이 회전 행렬은 3차원 공간에서의 회전을 표현하는 데 사용됩니다. SO(3)의 행렬들은 특정 축을 중심으로 한 회전이나 회전 각도를 나타낼 수 있습니다.
'로보틱스' 카테고리의 다른 글
[도커/Docker] 도커 run 실행 후 실행 중인 컨테이너에 접속하는 명령어 (2) | 2024.12.23 |
---|---|
[ROS2] sensor_msgs/msg/PointCloud2 Message (0) | 2024.12.12 |
[ROS2] bag 파일 열고 보는 방법 (0) | 2024.12.10 |
[ROS2] "혼자 공부하는 로봇 SW" 책을 읽으며 알게 된 기본 개념 정리 -2- (0) | 2024.12.03 |
[ROS2] "혼자 공부하는 로봇 SW" 책을 읽으며 알게 된 기본 개념 정리 -1- (1) | 2024.11.29 |