【로봇-AMR 실무】 신규 AMR을 공장에 처음 적용할 때 무엇을 검증해야 할까? | 관제 연동부터 현장
【Safety 기능안전】 STO란? Motor Drive의 Safe Torque Off 쉽게 이해하기【Safety 기능안전】 OSSD란? Safety Scanner 출력과 일반 PNP 센서의 차이AMR이나 산업용 로봇에 Safety Scanner, Light Curtain 같은 안전센서를
terrypack.tistory.com
【통신 실무】 RS-485에 120Ω 종단저항을 사용하는 이유 | 종단저항 위치와 측정 방법
RS-485 PHYSICAL LAYER왜 RS-485 양 끝에 120Ω을 넣는가?CAN과 비슷해 보이지만 Bias와 Transceiver 특성까지 같이 봐야 한다.RS-485 통신이 불안정할 때 가장 먼저 듣는 말 중 하나가 “양 끝에 120Ω을 넣었나요?
terrypack.tistory.com

SLAM은 지도를 그리는 기능만이 아니라, 지도를 만들면서 동시에 내가 어디 있는지 찾는 기술이다
LiDAR, Camera, IMU, Encoder가 각각 어떤 정보를 주고, Odometry Drift를 어떻게 보정하며 AMR이 Map 안에서 Pose를 유지하는지 시스템 관점으로 설명한다.
SLAM은 로봇 입문에서 자주 듣지만 막상 설명하려면 애매한 단어다. "LiDAR로 지도 만드는 기술"이라고만 이해하기 쉽지만 그것만으로는 부족하다.
SLAM은 Simultaneous Localization and Mapping의 약자다. 말 그대로 지도를 만드는 일과 그 지도 안에서 자신의 위치를 추정하는 일을 동시에 수행한다.
처음 들어간 창고에서 벽과 기둥을 보며 지도를 그리는 동시에 "지금 나는 지도에서 어디에 있는가?"를 계속 계산하는 것이 SLAM이다.
1. Mapping과 Localization은 무엇이 다른가?
| 기능 | 입력 | 출력 | 쉽게 말하면 |
|---|---|---|---|
| Mapping | LiDAR, Camera, Odometry 등 | Map | 주변환경을 지도화 |
| Localization | 기존 Map + Sensor | Robot Pose | 지도에서 현재 위치 찾기 |
| SLAM | Sensor + Motion Estimate | Map + Pose | 두 작업을 동시에 수행 |
2. SLAM이 왜 어려울까?
로봇이 움직인 거리를 완벽하게 알 수 있다면 문제는 쉬워진다. 하지만 Wheel Encoder는 Slip 때문에 Drift가 생기고 IMU는 Bias가 누적될 수 있다.
반대로 LiDAR Scan만 보고 위치를 찾으려 해도 긴 복도처럼 특징이 부족한 환경이나 움직이는 사람과 지게차가 많은 환경에서는 Matching이 어려울 수 있다.
그래서 여러 Sensor를 서로 보완하도록 사용한다.
3. Encoder는 무엇을 담당할까?
Wheel Encoder는 바퀴가 얼마나 회전했는지 측정한다. Differential Drive라면 좌우 바퀴의 이동량으로 전진거리와 회전량을 추정할 수 있다.
이렇게 이전 위치에서 얼마나 이동했는지를 누적하는 것을 Odometry라고 부른다. 문제는 Wheel Slip과 Wheel Diameter Error가 계속 누적된다는 점이다.
4. IMU는 Encoder가 놓치는 회전을 보완한다
IMU는 Angular Velocity와 Acceleration 정보를 제공한다. 특히 Yaw Rate를 이용하면 Robot이 얼마나 회전하고 있는지 빠르게 볼 수 있다.
하지만 IMU도 완벽하지 않다. Bias와 Noise를 적분하면 시간이 지날수록 Drift가 커질 수 있다. 현재 ROS2 Nav2 문서에서도 IMU는 시간에 따라 Drift하고 Wheel Encoder는 이동거리에 따라 Drift하기 때문에 둘을 결합해 서로의 약점을 보완하는 구성을 설명한다.
5. LiDAR는 Map과 현재 Scan을 비교하는 강한 기준이 된다
LiDAR는 주변 Wall, Rack, Pillar까지의 거리를 측정한다. Robot이 이동하면서 얻은 Scan을 이전 Scan 또는 Map과 Matching하면 상대적인 Pose를 추정할 수 있다.
2D LiDAR는 평면 구조가 뚜렷한 실내에서 많이 사용되고, 3D LiDAR는 높이정보까지 포함해 더 풍부한 환경특징을 사용할 수 있다.
6. Camera는 무엇을 보완할까?
Camera는 Texture와 Feature를 이용해 Motion을 추정하거나 Visual SLAM을 구성할 수 있다. Stereo 또는 Depth Camera는 Depth 정보도 제공한다.
LiDAR가 Geometry에 강하다면 Camera는 시각적 Feature와 Semantic 정보에 강하다. 반면 조명변화와 Motion Blur에 영향을 받을 수 있다.
7. Sensor Fusion은 단순히 Sensor 값을 평균내는 것이 아니다
Sensor Fusion의 목적은 서로 다른 Sensor가 가진 Noise와 Drift 특성을 이용해 더 일관된 State Estimate를 만드는 것이다.
8. Odometry와 SLAM Pose는 왜 따로 생각할까?
Odometry는 연속성이 좋다. Robot이 조금 움직였을 때 Pose가 갑자기 크게 점프하면 Motion Controller가 사용하기 어렵다. 대신 장시간 지나면 Drift가 누적된다.
Global Localization은 Map을 기준으로 Drift를 수정할 수 있지만 Correction 과정에서 Pose가 보정될 수 있다.
ROS2 Nav2는 이 역할을 map → odom → base_link Transform 구조로 분리한다. Global Positioning 또는 SLAM은 map → odom, Odometry System은 odom → base_link를 담당한다.
odom은 "방금 얼마나 움직였는가"를 연속적으로 잘 표현하고, map은 "전체 지도에서 실제로 어디 있는가"를 장기적으로 맞추는 기준이다.
9. Loop Closure는 왜 중요할까?
Robot이 오랫동안 이동하면 작은 오차가 누적된다. 한 바퀴 돌아 처음 지나온 장소를 다시 인식하면 "여기는 아까 지나왔던 곳"이라는 Constraint를 추가해 전체 Map과 Trajectory를 보정할 수 있다. 이 과정이 Loop Closure의 핵심 개념이다.
10. SLAM과 Navigation은 같은 기능이 아니다
SLAM이 Map과 Pose를 만든다고 해서 목적지까지 자동으로 가는 것은 아니다.
| 기능 | 역할 |
|---|---|
| SLAM | Map 생성과 Pose 추정 |
| Localization | 기존 Map에서 현재 Pose 추정 |
| Global Planner | 현재위치에서 목적지까지 큰 경로 생성 |
| Local Controller | 주변장애물을 고려해 실제 Velocity Command 생성 |
| Obstacle Layer | LiDAR 등으로 Costmap 업데이트 |
11. ROS1의 명령어는 현재 기준으로 보면 안 된다
ROS1에 대해 검색해보면 대부분 ROS Indigo와 과거 Navigation Stack을 기준으로 개발되어 있었다. Topic, TF, Odometry, Laser Scan, SLAM의 기본 개념을 공부하는 데는 비슷할 수는 있지만 현재 ROS2와는 다른 점을 구분해야된다.
또한 설치 명령, Package 이름, Ubuntu Version을 그대로 현재 환경에 적용하면 안되며,
현재 신규 Robot Project는 ROS2의 지원중인 Distribution과 Nav2, SLAM Toolbox 등을 기준으로 보는 것이 적절하다.
12. 현대 ROS2에서는 어떤 구조로 보는가?
Nav2 공식문서는 최소 Transform Tree를 map → odom → base_link → sensor frames로 설명하고, 기본 SLAM Tool로 SLAM Toolbox를 안내한다.
Wheel Odometry와 IMU는 robot_localization 같은 State Estimator로 융합할 수 있고, LiDAR의 LaserScan 또는 Point Cloud는 Mapping과 Obstacle Layer에 사용할 수 있다.
13. 실제 AMR에서 SLAM이 흔들리는 주요 원인
- Encoder Wheel Diameter와 Wheel Base Parameter가 정확한가?
- 바닥 Slip이 심한 구간이 있는가?
- IMU Axis와 Robot Coordinate가 정확히 맞는가?
- LiDAR와 base_link의 Extrinsic Calibration이 맞는가?
- Sensor Timestamp가 동기화되어 있는가?
- LiDAR Frame Rate와 Network Delay가 안정적인가?
- 동적인 사람과 차량이 Map Feature 대부분을 차지하지 않는가?
- 긴 복도처럼 Geometry Feature가 부족한 구간이 있는가?
14. 2D SLAM과 3D SLAM은 어떻게 선택할까?
| 환경 | 2D SLAM | 3D SLAM |
|---|---|---|
| 평탄한 공장 바닥 | 구현과 계산이 단순 | 정보가 과할 수 있음 |
| 높이 변화가 큰 환경 | 표현 한계 | 3D Geometry 활용 가능 |
| PC Load | 비교적 낮음 | Point Cloud 처리량 증가 |
| Sensor Cost | 상대적으로 단순 | 3D Sensor와 Computing 요구 증가 |
15. SLAM Sensor를 설계할 때 중요한 5가지
Sensor 성능보다 먼저 Coordinate와 Extrinsic이 맞아야 한다.
빠르게 움직일수록 Sensor Timestamp 오차가 Pose Error로 연결된다.
좋은 초기 Motion Estimate가 Scan Matching을 안정시킨다.
SLAM, Navigation, Safety Obstacle Detection을 같은 기능으로 혼동하지 않는다.
마무리
SLAM을 이해하려면 Algorithm 이름보다 Sensor 역할을 먼저 이해하는 것이 쉽다. Encoder는 짧은 구간 Motion을 알려주고, IMU는 회전을 빠르게 보고, LiDAR와 Camera는 주변환경을 기준으로 Drift를 보정할 정보를 제공한다.
이 Data를 잘 결합해 Map과 Pose를 유지하는 것이 SLAM의 핵심이고, 그 위에 Planner와 Controller를 올려야 실제 자율주행이 완성된다.
같이 보면 좋은 TerryPack 글
'【로봇-AMR 실무】' 카테고리의 다른 글
| 【로봇 제어 실무】 엔코더 A상 B상 Z상이란? | PPR, CPR, 4체배, 회전방향과 RPM 계산 (0) | 2026.10.07 |
|---|---|
| 【로봇 설계 실무】 델타로봇 역기구학이란? | Workspace와 링크 길이 설계 방법 (0) | 2026.10.04 |
| 【로봇 제어 실무】 DC 모터 위치 제어가 흔들리는 이유 | Encoder Resolution과 Gear Backlash (0) | 2026.10.04 |
| 【로봇 설계 실무】 로봇 모터 선정 방법 | 토크, 속도, 동역학 시뮬레이션으로 Motor Sizing (0) | 2026.10.03 |
| 【로봇 제어 실무】 DC 모터 PID 위치제어 | 전류센서, 엔코더와 Cascade 제어 구조 (0) | 2026.10.03 |