Robotics & Control Physics
기계와 지능의 결합인 로봇 아키텍처, 제어 이론(PID), 그리고 로봇 운영체제(ROS)의 물리적 가동 원리를 다루는 학습 노드입니다.
Article
M
Me
hyunyoun's Blog
web-emerging-technologieswebemerging-technologiesphysical-systemsroboticscontrol-physicscontrol-mechanicsrobotics-mechanics8 min read
1. Overview
로보틱스 및 제어 역학(Robotics & Control Physics)은 센서로 현실 세계의 혼돈(Noise)을 읽어 들이고, 소프트웨어로 판단한 뒤, 모터와 액추에이터를 통해 물리적 세계에 힘(Force)을 가하는 폐루프(Closed-loop) 제어 시스템의 극의를 다룹니다.
웹 서버가 데이터베이스의 확실한 1과 0을 다루는 반면, 로봇 공학은 먼지, 바람, 마찰력이라는 무한한 물리적 노이즈 속에서 기계가 스스로 균형을 잡게 만드는 제어 이론(Control Theory)의 최전선입니다. 학습자는 로봇이 드론처럼 공중에 떠 있기 위해 센서의 오차를 걸러내는 칼만 필터(Kalman Filter)의 수학적 확률 보정과, 목적지에 도달할 때 브레이크를 부드럽게 밟도록 조절하는 PID 제어기(Proportional-Integral-Derivative)의 시계열 물리 피드백 룹을 체화합니다. 나아가 ROS(Robot Operating System)를 통해 분산된 하드웨어 노드들이 실시간으로 토픽을 주고받는 메시지 통신망을 해부합니다.
2. Scope & Boundaries
In-Scope
- 제어 이론(Control Theory): PID 제어기(비례/적분/미분), 폐루프 피드백(Closed-loop Feedback), 오버슈트 통제.
- 센서 및 상태 추정: 센서 퓨전(Sensor Fusion), 칼만 필터(Kalman Filter), IMU(관성 측정 장치), 라이다(LiDAR).
- 소프트웨어 아키텍처: ROS(Robot Operating System), 노드(Node)/토픽(Topic) 통신, Publish-Subscribe 메시징.
- 운동학(Kinematics): 로봇 팔의 관절 각도를 통한 좌표 계산(Forward/Inverse Kinematics), 동력학 물리.
Out-of-Scope
- 로봇 팔의 금속 재질 강도 계산: 모터의 토크가 기어를 부수는 응력(Stress)을 계산하는 순수 기계공학 기계 공학/재료 공학 영역.
- 딥러닝 이미지 인식을 통한 자율주행 모델 학습: 카메라 이미지를 CNN으로 분석해 고양이를 분류하는 AI 모델 11-01. AI & Machine Learning Foundations 영역으로 위임.
Boundaries
- 로보틱스 제어 vs 일반 소프트웨어 (14-01-03 vs 09-03): 일반 소프트웨어 아키텍처(09-03)는 버그가 나면 앱이 꺼지고 끝나지만, 로보틱스 제어(14-01-03)는 버그가 나면 1톤짜리 자동차가 벽을 뚫고 지나가거나 드론이 사람 머리 위로 추락하는 치명적인 실시간(Real-time) 물리 세계의 파괴를 동반하는 책임의 차이가 존재합니다.
3. Counterexample
- 센서 절대 신뢰의 환상 (Perfect Sensor Fallacy): 드론의 고도를 유지하기 위해 초음파 센서에서 나온 값(고도 10m)을 100% 믿고 모터 속도를 바로 세팅해버리는 아마추어 설계. 센서 값은 새가 날아가거나 바람이 불면 0m나 100m로 노이즈(스파이크)가 튑니다. 이를 그대로 믿으면 드론이 미친 듯이 요동치며 추락합니다. 현재 위치와 과거 속도를 조합해 센서의 노이즈를 수학적으로 깎아내는 '칼만 필터(Kalman Filter)' 방패가 반드시 필요합니다.
- 단순 On/Off 제어의 붕괴 (Bang-Bang Control Fallacy): 온도를 25도로 맞추기 위해, 24도면 에어컨을 100%로 켜고 26도면 완전히 꺼버리는 방식. 이런 단순 조건문(if-else)을 로봇의 관절 조향에 적용하면(예: 차선 넘으면 핸들 100% 꺾기), 목적지를 지나쳐 반대로 튕겨 나가는 오버슈트(Overshoot) 발산 상태에 빠집니다. 오차의 크기, 누적량, 속도를 미적분하는 PID 제어로 부드럽게 감속시켜야 합니다.
4. Prerequisites
- 수학적 모델링 (Basic): 미분(변화율)과 적분(누적량)의 기초 개념을 직관적으로 알아야 PID 제어기의 원리를 이해할 수 있습니다. (고교 미적분학 수준)
- 메시지 큐 통신 아키텍처 (Recommended): Pub/Sub 모델의 비동기 메시지 통신을 알아야 ROS의 노드 간 통신 핑퐁을 파악하기 쉽습니다. (08-04. Message Queues & Event Streaming)
5. Learning Map
6. Learning Topics
Basic
Core Topic 01: 센서 노이즈와 상태 추정 (Kalman Filter)
- Why to Learn: 현실 세계의 모든 센서(카메라, GPS)는 오차가 존재하므로, 이 노이즈를 그대로 믿으면 로봇이 미쳐 날뛰는 것을 막기 위함입니다.
- What to Learn: Sensor Noise, State Estimation, Kalman Filter, IMU(관성 센서), Sensor Fusion.
- How to Learn: 터널에 들어가서 GPS(절대 위치)가 끊겼을 때, 바퀴가 굴러간 속도(추측 항법)를 이용해 내 위치를 예측(Predict)하고, 다시 터널 밖에서 GPS가 잡히면 두 데이터를 확률적으로 섞어 오차를 보정(Update)하는 칼만 필터의 2단계 마법을 다이어그램으로 분해합니다.
- Implement: 엑셀이나 파이썬에 고의로 노이즈가 심하게 낀 사인파(Sine Wave) 데이터를 넣고, 1차원 칼만 필터 방정식을 코딩하여 노이즈가 깎여나가고 부드러운 진짜 곡선이 도출되는 신호 처리 물리 시뮬레이션 구현.
Core Topic 02: 폐루프 제어와 PID 역학 (Proportional, Integral, Derivative)
- Why to Learn: 드론을 공중 10m에 띄우라고 명령했을 때, 12m까지 솟구쳤다가 8m로 떨어지는 요동(발산) 없이 10m에 스무스하게 정박시키기 위해서입니다.
- What to Learn: Closed-loop System, Proportional(P/비례), Integral(I/적분), Derivative(D/미분), Overshoot, Damping.
- How to Learn: 차선 유지 자율주행 시, 오차에 비례해(P) 핸들을 꺾고, 시간이 지나도 안 맞는 오차를 누적해(I) 힘을 더하며, 차선에 빠르게 다가갈수록 반대로 브레이크를 걸어주는(D) 미분 제어의 환상적인 감속 물리 그래프를 분석합니다.
- Implement: 시뮬레이션 환경(예: Gazebo 또는 물리 엔진)에서 온도를 조절하거나 차량을 목표 선에 맞추는 PID 컨트롤러 함수를 작성하고, P, I, D 계수(Gain) 값을 비틀었을 때 시스템이 안정화되거나 발산(Crash)하는 현상 튜닝 테스트.
Recommended
Core Topic 03: 운동학(Kinematics)과 로봇 팔 조향
- Why to Learn: 로봇 손으로 앞에 있는 컵을 집기 위해, 로봇의 어깨 모터와 팔꿈치 모터를 각각 몇 도로 꺾어야 하는지 삼각함수 연립방정식으로 풀어내기 위함입니다.
- What to Learn: Forward Kinematics (순운동학), Inverse Kinematics (역운동학), 관절 공간(Joint Space), 작업 공간(Task Space), 특이점(Singularity).
- How to Learn: 모터 각도를 주면 손끝 위치가 나오는 쉬운 계산(순운동학)과 달리, "컵이 (x,y,z)에 있으니 모터 각도를 찾아라"라는 역운동학은 해답이 여러 개이거나 아예 관절이 꼬여버리는 특이점(Singularity) 병목에 빠지는 물리적 제약을 해부합니다.
- Implement: 2개의 관절을 가진 평면 로봇 팔(2D) 모델을 코드로 짜고, 역운동학 수식(아크탄젠트)을 적용하여 마우스 커서가 움직이는 대로 로봇 손끝이 자연스럽게 따라오도록 관절 각도를 실시간 도출하는 시각화 로직 구축.
Core Topic 04: 로봇 운영체제(ROS) 통신 아키텍처
- Why to Learn: 눈(카메라), 뇌(컴퓨터), 팔다리(모터) 모듈을 각기 다른 회사가 만들더라도, 이들을 하나의 네트워크 안에서 레고 블록처럼 실시간으로 결합하기 위함입니다.
- What to Learn: ROS (Robot Operating System), Node, Topic, Publish/Subscribe, Message (msg), Service (Request/Reply).
- How to Learn: 라이다(LiDAR) 센서 노드가 초당 100번씩 장애물 거리 데이터를 토픽으로 쏘면(Publish), 바퀴를 굴리는 모터 노드가 이를 낚아채어(Subscribe) 브레이크를 밟는 분산 비동기 처리 아키텍처를 스케치합니다.
- Implement: ROS 환경(Python/C++)에서 임의의 "배터리 센서" 노드를 생성하여 토픽을 퍼블리시하고, "경고등 모터" 노드가 이를 구독하여 배터리가 10% 이하일 때 경고 메시지를 로깅하는 분산 프로세스 통신망 셋업.
7. Terminology
8. References
Primary References
- [CS2023: Systems Fundamentals / Cyber-Physical Systems] — 임베디드 실시간 제어 스루풋(Throughput), 센서-액추에이터(Sensor-Actuator) 피드백 루프 물리.
- [SWEBOK v3: Embedded & Real-time Systems] — 경계 조건(Boundary Conditions) 제어, 데드라인 붕괴 시의 치명적 시스템 장애(Hard Real-time) 물리학.
Secondary References
- [Probabilistic Robotics (Thrun, Burgard, Fox)] — 마르코프 가정(Markov Assumption) 기반 상태 추정(State Estimation), 확장 칼만 필터(EKF)의 비선형성 보정.
- [Modern Robotics: Mechanics, Planning, and Control] — 강체(Rigid Body) 모션, 로봇 팔 매니퓰레이터(Manipulator) 야코비안(Jacobian) 특이점 회피.
Industry References
- [ROS (Robot Operating System) Documentation] — 마스터 노드(Master) 토폴로지 구조, 토픽(Topic) 대역폭 병목 및 서비스(Service) 동기 호출 제약.
- [PX4 Autopilot User Guide] — 드론 비행 제어기(Flight Controller)의 멀티콥터 PID 튜닝 게인(Gain) 계수 및 진동 억제(Damping) 가이드.
9. Final Checklist
Primary Checklist
- 로봇의 모터를 제어할 때 단순히 오차만큼 힘을 가하는 On/Off 방식을 쓰지 않고, 비례/적분/미분(PID)을 조합해 오버슈트(Overshoot)를 막아내는 궤적을 설명할 수 있는가?
- 바람이 부는 실외에서 드론의 GPS 위치 데이터가 튀어버릴 때, 가속도 센서(IMU) 데이터와 융합하는 칼만 필터(Kalman Filter)로 노이즈를 수학적으로 깎아냈는가?
Secondary Checklist
- 3개의 관절을 가진 로봇 팔의 손끝을 특정 (x, y) 좌표로 이동시킬 때, 역운동학(Inverse Kinematics) 해가 2개 이상이거나 관절이 꺾일 수 없는 특이점(Singularity) 병목을 회피하게 설계했는가?
- 카메라가 물체를 인식하는 노드와 모터를 굴리는 노드를 분리할 때, ROS의 Publish-Subscribe 토픽(Topic) 아키텍처를 통해 두 스레드 간 비동기 메시지를 병목 없이 교환하는가?
Industry Checklist
- 자율주행이나 로봇 조향 시스템에서 브레이크를 밟아야 하는 연산이 OS의 가비지 컬렉터(GC)에 의해 1초 지연될 경우 발생할 물리적 파괴(Crash)를 막기 위해, Hard Real-Time OS(RTOS) 분리를 고려했는가?
- 휠 엔코더(바퀴 회전수)만 믿고 로봇의 이동 거리를 계산(추측 항법, Odometry)하다가 바퀴가 미끄러져(Slip) 발생하는 누적 오차를 외부 카메라나 라이다(LiDAR)로 보정(Loop Closure)하는 아키텍처를 짰는가?