ROBOT ENGINEERING NOTES

로봇과 AMR의
전장 설계부터 인증까지

회로 실무, 산업자동화, Functional Safety, ISO 규격과 로봇 인증을 실제 설계 관점에서 정리합니다.

회로 실무 AMR / AGV Functional Safety ISO 13849 EMC / CE
AMR ENGINEERING GUIDE →

【로봇-AMR 실무】 SLAM이란? | LiDAR, Camera, IMU, Encoder는 어떻게 함께 쓰일까

 

【로봇-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

AMR AUTONOMOUS NAVIGATION

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라면 좌우 바퀴의 이동량으로 전진거리와 회전량을 추정할 수 있다.

가장 단순한 Wheel Travel
Distance = Wheel Circumference × Encoder Revolutions

이렇게 이전 위치에서 얼마나 이동했는지를 누적하는 것을 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는 높이정보까지 포함해 더 풍부한 환경특징을 사용할 수 있다.

Point 수가 많다고 Localization이 자동으로 좋아지는 것은 아니다.Sensor Extrinsic Calibration, Time Synchronization, Motion Distortion, Dynamic Object와 Map Quality가 모두 영향을 준다.

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를 만드는 것이다.

MOTIONWheel Encoder짧은 구간 이동량
ROTATIONIMUYaw Rate
PERCEPTIONLiDAR환경 Geometry
VISIONCameraVisual Feature
FUSIONState EstimateOdom / Pose
GLOBALSLAMMap + Localization

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이 흔들리는 주요 원인

SLAM Troubleshooting Checklist
  • 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가지

KEY 01Calibration

Sensor 성능보다 먼저 Coordinate와 Extrinsic이 맞아야 한다.

KEY 02Time Sync

빠르게 움직일수록 Sensor Timestamp 오차가 Pose Error로 연결된다.

KEY 03Odometry Quality

좋은 초기 Motion Estimate가 Scan Matching을 안정시킨다.

KEY 04Role Separation

SLAM, Navigation, Safety Obstacle Detection을 같은 기능으로 혼동하지 않는다.

마무리

SLAM을 이해하려면 Algorithm 이름보다 Sensor 역할을 먼저 이해하는 것이 쉽다. Encoder는 짧은 구간 Motion을 알려주고, IMU는 회전을 빠르게 보고, LiDAR와 Camera는 주변환경을 기준으로 Drift를 보정할 정보를 제공한다.

이 Data를 잘 결합해 Map과 Pose를 유지하는 것이 SLAM의 핵심이고, 그 위에 Planner와 Controller를 올려야 실제 자율주행이 완성된다.

같이 보면 좋은 TerryPack 글

반응형
LIST