안녕하세요 지식노동자s입니다.
로봇이 선을 따라가거나, 곡선을 부드럽게 돌거나, 과속하지 않고 제어되는 걸 보면 “어떻게 저렇게 매끄럽게 움직이지?”라는 생각 드시죠?
그 비밀은 바로 PID 제어입니다!
오늘은 아두이노로 자율주행 로봇을 만들고, 그 위에 PID 제어 알고리즘을 적용하는 방법을 알려드릴게요.
실제로 코딩까지 해보면 생각보다 어렵지 않고, 도파민이 터지듯이 뿌듯한 경험을 하실 수 있어요!!
PID 제어란? 아주 쉽게 설명하면...
PID = Proportional + Integral + Derivative
각각을 한글로 풀면:
-
P (비례항): 오차가 클수록 강하게 반응
-
I (적분항): 오차가 누적되면 보정
-
D (미분항): 갑작스러운 변화에 빠르게 반응
즉, 오차에 따라 부드럽고 똑똑하게 제어하는 알고리즘입니다.
PID 제어는 드론, 전기차, 산업용 로봇 등 거의 모든 정밀 제어 시스템에 쓰이고 있어요!
아두이노 기반 자율주행 로봇 구성
| 구성 요소 | 설명 |
|---|---|
| Arduino UNO | 제어의 두뇌 |
| IR 센서 (3~5개) | 선 추적용 센서 |
| L298N 모터 드라이버 | 모터 제어 |
| DC 모터 2개 | 바퀴 구동용 |
| 배터리 팩 | 전원 공급 |
| 섀시 키트 | 로봇 본체 |
센서는 바닥에 있는 선(흰/검 라인)을 감지하고, PID 알고리즘은 모터 속도를 조절하여 라인을 따라 움직이게 합니다.
PID 제어 아두이노 코드 예제 (라인 트레이싱)
핵심: 에러 값을 중심으로 PID를 계산하여 양쪽 모터의 속도를 다르게 제어함으로써 곡선에서도 정확하게 주행 가능!
PID 튜닝 팁
PID 제어는 **Kp, Ki, Kd 값 조정(tuning)**이 핵심입니다.
-
Kp만 높이면 반응은 빠르지만 오버슈팅 발생
-
Kd를 높이면 안정화되지만 반응이 느려짐
-
Ki는 거의 안 쓰거나 매우 작게 설정
직접 숫자를 바꿔가며 실험하면 로봇의 반응이 달라지는 게 신기할 거예요!
실습 팁: 센서 정렬과 노이즈 주의!
-
센서 간 간격은 일정하게 맞추기
-
센서 감도는 바닥 색상에 따라 다를 수 있음
-
아날로그 센서 > 디지털 센서가 PID에 유리함
