Wooseok Song Projects

Project

2D SLAM & Navigation in Gazebo

Gazebo Sim의 두 custom world에서 TurtleBot3로 2D LiDAR map을 생성하고, Nav2 경로 추종과 localization 안정성을 비교한 기록이다.

Date2025.12.11
PlatformGazebo Sim
RobotTurtleBot3
Stack2D LiDAR · SLAM · Nav2

실험 개요

가구와 차량이 배치된 indoor world와 벽으로 구성된 maze world를 직접 구성했다. 각 world에서 서로 다른 세 구역을 mapping하고, 생성된 map마다 다섯 번의 자율주행 경로를 지정해 주행 결과를 확인했다.

2 WorldsIndoor와 Maze custom world 비교
6 MapsWorld별 세 구역에서 occupancy map 생성
30 RunsMap별 다섯 경로에서 navigation 수행
가구와 차량, 벽이 배치된 Indoor custom world
Indoor world. 가구, 차량, 벽으로 구성한 custom world.
벽으로 구성된 Maze custom world
Maze world. 벽과 좁은 코너를 중심으로 구성한 custom world.

World 1. Indoor

Indoor world는 벽 외에도 가구와 차량이 배치되어 있어 LiDAR scan에서 비교적 다양한 구조적 특징을 얻을 수 있다.

Map 구성

Indoor world의 세 mapping 구역
Indoor mapping areas. 서로 다른 세 구역을 기준으로 map을 생성했다.
Indoor 1번 구역 occupancy map
indoor_00. 1번 구역에서 생성한 map.
Indoor 2번 구역 occupancy map
indoor_01. 2번 구역에서 생성한 map.
Indoor 3번 구역 occupancy map
indoor_02. 3번 구역에서 생성한 map.

Navigation 결과

indoor_00

빨강, 주황, 노랑, 초록, 파랑 순서로 다섯 경로를 추종했다. 오른쪽 그림은 5번 파란색 경로를 주행하는 과정이다.

Indoor 00의 다섯 navigation 경로
Navigation routes. indoor_00에서 설정한 다섯 경로.
Indoor 00의 5번 경로 주행 화면
Route 5. 파란색 경로를 추종하는 Gazebo·Nav2 실행 화면.
indoor_01

다섯 경로를 반복했으며, 2번 주황색 경로에서는 주변 특징이 줄어드는 구간에서 localization error가 발생했다.

Indoor 01의 다섯 navigation 경로
Navigation routes. indoor_01에서 설정한 다섯 경로.
Indoor 01의 localization error 화면
Localization error. 2번 주황색 경로 추종 중 위치 추정이 불안정해진 장면.
indoor_02

다섯 경로를 추종했으며, 오른쪽 그림은 3번 노란색 경로의 실제 주행 과정이다.

Indoor 02의 다섯 navigation 경로
Navigation routes. indoor_02에서 설정한 다섯 경로.
Indoor 02의 3번 경로 주행 화면
Route 3. 노란색 경로를 추종하는 실행 화면.
Indoor에서 확인한 점

벽이 큰 구조적 특징으로 작동하는 구간에서는 localization이 안정적이었다. 반면 indoor_01 오른쪽 위처럼 빈 공간이 넓어 주변 특징이 부족한 구간에서는 코너를 돌거나 관측 범위가 바뀔 때 위치 추정이 흔들렸고, 일부 상황에서는 2D Pose Estimate로 초기 자세를 다시 지정해야 했다.

World 2. Maze

Maze world는 벽과 좁은 통로를 중심으로 구성했다. 직선 구간과 큰 방향 전환이 반복되므로 코너에서의 경로 추종과 localization 안정성을 확인하기 적합했다.

Map 구성

Maze world의 세 mapping 구역
Maze mapping areas. 서로 다른 세 구역을 기준으로 map을 생성했다.
Maze 1번 구역 occupancy map
maze_00. 1번 구역에서 생성한 map.
Maze 2번 구역 occupancy map
maze_01. 2번 구역에서 생성한 map.
Maze 3번 구역 occupancy map
maze_02. 3번 구역에서 생성한 map.

Navigation 결과

maze_00

다섯 경로를 추종했다. 3번 노란색 경로에서는 경로를 제대로 따라가지 못하면서 localization error가 함께 발생했다.

Maze 00의 다섯 navigation 경로
Navigation routes. maze_00에서 설정한 다섯 경로.
Maze 00의 경로 추종 및 localization error 화면
Route-following failure. 3번 경로에서 경로 이탈과 localization error가 나타난 장면.
maze_01

4번 초록색 경로의 급격한 코너에서 회전 반경을 확보하지 못해 코너를 한 번에 통과하지 못했다.

Maze 01의 navigation 경로
Navigation route. maze_01의 4번 초록색 경로.
Maze 01의 코너 주행 실패 화면
Cornering failure. 급격한 방향 전환에서 코너를 벗어나는 장면.
maze_02

다섯 경로를 추종했다. 오른쪽 그림은 4번 초록색 경로를 주행하는 과정이다.

Maze 02의 다섯 navigation 경로
Navigation routes. maze_02에서 설정한 다섯 경로.
Maze 02의 4번 경로 주행 화면
Route 4. 초록색 경로를 추종하는 실행 화면.
Maze에서 확인한 점

직선 구간은 대체로 안정적이었지만 180도에 가까운 코너에서는 한 번에 회전하지 못하는 경우가 반복되었다. 해당 구간에는 waypoint를 추가해 회전을 두 단계로 나누었다. 코너에서 한쪽 벽이 scan상 얇게 관측되어 안정적인 구조 대응이 줄어드는 현상도 실패 원인 중 하나로 추정했다.

Maze 코너에서 벽이 얇게 관측되는 구간
Corner detail. 방향 전환 중 한쪽 벽의 관측 폭이 급격히 줄어드는 구간.

결론

조건관찰 결과대응
충분한 벽·가구 특징LiDAR localization과 경로 추종이 비교적 안정적기존 global path 유지
넓은 빈 공간코너 진입 시 localization이 흔들리거나 위치를 잃음필요 시 초기 pose 재설정
급격한 180도 코너회전 반경과 벽 관측 변화로 한 번에 통과하기 어려움중간 waypoint를 추가해 회전을 분할

Comments