학습 목표

이 장을 마치면 다음 내용을 설명할 수 있습니다.

  • 로봇을 전원, 구동, 감지, 연산, 통신, 기구의 여섯 서브시스템으로 나누어 설명할 수 있다.
  • 각 서브시스템의 대표 부품과 역할을 구분할 수 있다.
  • 하나의 서브시스템에서 발생한 문제가 다른 서브시스템의 증상으로 나타나는 과정을 설명할 수 있다.
  • SBC와 MCU의 특성을 비교하고 두 연산 장치가 역할을 나누는 이유를 설명할 수 있다.
  • 위치, 속도, 전류·토크 제어의 차이와 중첩 제어 구조를 이해할 수 있다.
  • 전원 계통의 이상이 센서나 소프트웨어 오류처럼 보이는 이유를 설명할 수 있다.
  • 증상에서 원인 후보를 세우고 측정으로 확인하는 기본적인 고장 진단 절차를 적용할 수 있다.

1. 로봇은 하나의 부품이 아니라 하나의 시스템이다

완성된 로봇을 보면 먼저 눈에 띄는 것은 바퀴, 로봇팔, Camera 같은 부품입니다. 그러나 로봇은 모터 몇 개와 컴퓨터 한 대를 연결한 장치가 아닙니다.

에너지를 공급하고, 환경을 측정하고, 정보를 처리하고, 명령을 전달하고, 힘을 만들어 실제 구조물을 움직이는 여러 장치가 함께 작동하는 시스템입니다.

앞 장에서는 로봇을 다음과 같은 정보의 고리로 살펴보았습니다.

Sense → Decide → Act → 환경 변화 → 다시 Sense

이번 장에서는 이 고리를 실제로 구현하는 하드웨어와 소프트웨어를 살펴봅니다.

복잡한 로봇을 이해할 때는 전체를 다음 여섯 서브시스템으로 나누면 편리합니다.

Power          전원
Actuation      구동
Sensing        감지
Computation    연산
Communication  통신
Mechanical     기구

이것은 로봇을 분석하기 위한 실용적인 분류입니다. 로봇의 종류나 조직의 설계 방식에 따라 안전, 소프트웨어, 열관리 등을 별도의 서브시스템으로 구분하기도 합니다.


2. 여섯 서브시스템을 한눈에 보기

각 서브시스템은 다음과 같은 역할을 담당합니다.

서브시스템 역할 대표 부품
전원 Power 에너지 저장, 변환, 분배, 차단 Battery, BMS, DC-DC Converter, Fuse, Contactor
구동 Actuation 전기·유압·공압 에너지를 힘과 운동으로 변환 Motor, Motor Driver, Gearbox, Gripper
감지 Sensing 로봇과 환경의 물리량을 측정 Encoder, IMU, LiDAR, Camera, Force Sensor
연산 Computation 상태 추정, 판단, 계획, 제어를 계산 MCU, SBC, CPU, GPU, NPU
통신 Communication 서브시스템 사이에서 데이터와 명령 전달 CAN, UART, EtherCAT, Ethernet, Wi-Fi
기구 Mechanical 하중을 지지하고 힘과 움직임을 전달 Frame, Joint, Wheel, Bearing, Cover

여섯 요소는 따로 작동하지 않습니다.

                    ┌──────── 감지 ────────┐
                    │                       ↓
전원 ──→ 구동 ──→ 기구와 환경 ──→ 연산 ──→ 구동
  │         ↑                          ↕
  └─────────┴──── 전력 공급          통신

전원은 모터뿐 아니라 센서와 컴퓨터에도 에너지를 공급합니다. 연산 장치는 통신망으로 센서 값을 받고 구동 명령을 보냅니다. Actuator가 만든 힘은 기구 구조를 통해 실제 움직임으로 변환됩니다. 그 결과를 Sensor가 다시 측정합니다.

따라서 한 계통의 문제가 다른 계통의 증상으로 나타날 수 있습니다.


3. 전원 계통 — 모든 동작의 출발점

Power System은 필요한 에너지를 저장하고, 각 부품이 요구하는 전압으로 바꾸어 안전하게 분배합니다.

이동 로봇의 전원 흐름을 단순화하면 다음과 같습니다.

Battery
  ↓
BMS · Main Fuse · Main Switch
  ↓
Power Distribution
  ├── Motor Rail ── Motor Driver ── Motor
  ├── 12V Rail ─── LiDAR · Fan
  └── 5V Rail ──── SBC · MCU · Sensor

Battery는 에너지를 저장합니다.

BMS는 Battery의 전압, 전류, 온도와 충전 상태를 감시하고 위험 조건에서 보호 기능을 수행합니다.

Fuse는 허용 범위를 넘는 전류가 흐를 때 회로를 차단합니다.

DC-DC Converter는 Battery 전압을 12V, 5V 등 부품에 필요한 전압으로 바꿉니다.

Power Distribution Board는 여러 부하에 전원을 나누어 공급합니다.

전원 설계에서는 정상 동작 때의 평균 소비전력만 보면 안 됩니다. 모터 기동, 급가속, 연산 가속기 사용처럼 짧은 순간에 발생하는 Peak Current와 Battery가 방전될 때의 최저 전압도 고려해야 합니다.


4. 구동 계통 — 명령을 힘과 운동으로 바꾸다

Actuation System은 연산 장치가 만든 명령을 물리적인 힘과 움직임으로 바꿉니다.

전기 모터를 사용하는 관절은 보통 다음 부품으로 구성됩니다.

Controller Command
  ↓
Motor Driver
  ↓
Electric Motor
  ↓
Gearbox
  ↓
Joint / Wheel

Motor Driver는 작은 논리 신호를 Motor에 필요한 큰 전압과 전류로 바꾸어 공급합니다.

Motor는 전기 에너지를 회전 운동으로 변환합니다.

Gearbox는 Motor의 빠른 회전 속도를 낮추고 출력 Torque를 높입니다.

Brake는 전원이 꺼지거나 정지 명령을 받았을 때 축을 유지하거나 멈추게 합니다.

Actuator에는 전기 모터만 있는 것이 아닙니다. 큰 힘이 필요한 건설 로봇에는 Hydraulic Cylinder가 사용될 수 있고, 가볍고 빠른 반복 동작에는 Pneumatic Cylinder가 사용되기도 합니다.

Actuator를 선택할 때는 최대 Torque만 비교하지 않습니다. 속도, 정밀도, 효율, 무게, 소음, 발열, 충격 하중, 유지보수성, 고장 시 상태를 함께 고려해야 합니다.


5. 감속기는 속도와 토크를 바꾼다

일반적인 Motor는 빠르게 회전할 때 효율적이지만 로봇 관절은 비교적 느린 속도에서 큰 Torque를 요구하는 경우가 많습니다. Gearbox는 이 차이를 맞춰 줍니다.

이상적인 감속기에서 감속비가 100:1이라면 출력 속도는 Motor 속도의 1/100이 되고 출력 Torque는 100배가 됩니다.

출력 속도 ≈ 입력 속도 / 감속비

출력 Torque ≈ 입력 Torque × 감속비 × 효율

실제 장치에서는 마찰과 변형 때문에 에너지 손실이 있으므로 효율을 고려해야 합니다.

감속비가 높아지면 Torque는 커지지만 대가도 생깁니다.

Backlash는 회전 방향이 바뀔 때 기어 사이의 틈 때문에 출력이 바로 따라오지 않는 현상입니다.

Friction은 작은 힘이나 섬세한 접촉을 표현하기 어렵게 만듭니다.

낮은 Backdrivability는 외부에서 관절을 밀었을 때 Motor 쪽으로 힘이 잘 전달되지 않는 특성입니다.

Harmonic Drive, Cycloidal Gear, Planetary Gear, Belt Drive 등은 각각 정밀도, Torque 밀도, 가격, 충격 내구성에서 다른 장단점을 가집니다.


6. 위치·속도·전류 제어는 무엇이 다른가?

“Motor를 돌린다”는 말만으로는 어떤 값을 제어하는지 알 수 없습니다. 로봇에서는 주로 세 가지 제어 모드를 사용합니다.

Position Control은 목표 위치나 각도를 명령합니다.

관절을 30°로 이동하라.

Velocity Control은 목표 속도나 각속도를 명령합니다.

바퀴를 5rad/s로 회전시켜라.

Current 또는 Torque Control은 Motor가 만들 힘의 크기를 명령합니다. 많은 전기 Motor에서 Torque는 허용 동작 범위 안에서 전류와 밀접한 관계가 있습니다.

관절에 3N·m의 Torque를 만들어라.

로봇팔의 궤적 추종에는 Position Control이 많이 사용됩니다. 이동 로봇의 바퀴에는 Velocity Control이 흔합니다. 물체 접촉이나 힘 조절이 중요한 조립과 협동 작업에는 Torque Control이 필요할 수 있습니다.


7. 중첩 제어 — 느린 바깥 고리와 빠른 안쪽 고리

Position, Velocity, Current Control은 서로 완전히 분리된 경우보다 여러 겹의 고리로 구성되는 경우가 많습니다. 이를 Cascade Control, 즉 중첩 제어라고 합니다.

목표 위치
  ↓
Position Loop ──→ 목표 속도
  ↓
Velocity Loop ──→ 목표 전류·Torque
  ↓
Current Loop ───→ PWM / Voltage Command
  ↓
Motor + Gearbox + Joint
  ↓
Encoder / Current Sensor Feedback

바깥쪽 Position Loop는 비교적 느리게 동작하며 큰 목표를 다룹니다.

안쪽 Current Loop는 매우 빠르게 동작하며 Motor의 즉각적인 전기적 반응을 제어합니다.

일반적으로 안쪽 고리는 바깥쪽 고리보다 충분히 빨라야 합니다. 그러나 정확한 주기율은 Motor와 Driver, 기구 구조, 제어 방식에 따라 달라집니다. 특정 숫자를 모든 로봇에 그대로 적용해서는 안 됩니다.

이 구조에서 가장 빠르고 시간 제약이 엄격한 Current Loop는 Motor Driver나 MCU에서 실행되는 경우가 많습니다.


8. 감지 계통 — 내부 상태와 외부 환경을 측정하다

Sensor는 크게 Proprioceptive Sensor와 Exteroceptive Sensor로 나누어 생각할 수 있습니다.

Proprioceptive Sensor는 로봇 자신의 상태를 측정합니다.

  • Encoder: 관절이나 바퀴의 회전 위치와 속도
  • IMU: 가속도와 각속도
  • Current Sensor: Motor나 전원 계통의 전류
  • Temperature Sensor: Motor, Battery, Computer의 온도

Exteroceptive Sensor는 로봇 바깥의 환경을 측정합니다.

  • LiDAR: 주변 물체까지의 거리
  • Camera: 밝기와 색으로 이루어진 영상
  • Depth Camera: 영상과 깊이
  • Ultrasonic Sensor: 음파를 이용한 거리
  • Force/Torque Sensor: 외부와 접촉할 때 발생하는 힘과 Torque
  • Bumper: 물리적인 접촉 여부

같은 Sensor도 설치 위치와 용도에 따라 두 역할이 겹칠 수 있습니다.

Sensor의 사양을 볼 때는 해상도만 확인해서는 안 됩니다. 측정 범위, 정확도, 반복성, 갱신 속도, 지연, 시야각, 온도 범위, 진동 내성, 방진·방수 등급을 함께 봐야 합니다.


9. 연산 계통 — SBC와 MCU가 역할을 나누다

실전 로봇에는 성격이 다른 여러 연산 장치가 함께 들어가는 경우가 많습니다.

SBC, 즉 Single Board Computer는 Linux 같은 범용 운영체제를 실행할 수 있는 컴퓨터입니다. Raspberry Pi, NVIDIA Jetson 계열, x86 기반 산업용 Computer 등이 여기에 해당합니다.

SBC는 풍부한 Memory와 높은 연산 성능을 이용하여 ROS 2 Node, 영상 인식, SLAM, 경로 계획, 사용자 Interface 같은 작업을 수행하기 좋습니다.

MCU, 즉 Microcontroller Unit는 Processor, Memory, Timer, 통신 주변 장치가 하나의 Chip에 통합된 작은 제어용 Computer입니다. STM32, ESP32 같은 제품군이 대표적입니다.

MCU는 Encoder Counting, PWM 생성, 짧고 일정한 주기의 Motor Control, Watchdog, 저수준 안전 상태 감시처럼 실행 시각의 예측 가능성이 중요한 작업에 적합합니다.

항목 SBC MCU
대표 환경 Linux, 범용 OS Bare Metal 또는 RTOS
강점 높은 연산력, 큰 Memory, 풍부한 Software 짧고 예측 가능한 반응, 주변 장치 직접 제어
대표 작업 인식, SLAM, Planning, ROS 2 Encoder, PWM, Motor Control, Watchdog
흔한 통신 Ethernet, USB, PCIe CAN, UART, SPI, I2C
주요 고려사항 OS Scheduling, 부하, 발열 Deadline, Interrupt, Memory 제한

MCU를 사용한다고 자동으로 Hard Real-time이 보장되는 것은 아닙니다. Interrupt 우선순위, 최악 실행 시간, RTOS 설정, 통신 지연까지 분석해야 정해진 Deadline을 만족한다고 말할 수 있습니다.

반대로 SBC도 Real-time Kernel과 적절한 Software 설계를 이용하면 높은 예측성을 얻을 수 있습니다. 중요한 것은 이름이 아니라 해당 제어 작업의 Deadline을 실제 시스템이 만족하는지 측정하고 검증하는 것입니다.


10. SBC와 MCU는 어떻게 연결되는가?

SBC와 MCU 사이에서는 상위 목표와 하위 상태가 오갑니다.

SBC / ROS 2
  │
  │ 목표 속도, 목표 위치, Mode
  ↓
CAN · UART · Ethernet
  ↓
MCU
  │
  │ PWM, Driver Command
  ↓
Motor

MCU
  │
  │ Encoder, Current, Temperature, Fault
  ↑
SBC / ROS 2

SBC는 “0.5m/s로 전진하라”처럼 비교적 높은 수준의 명령을 보냅니다.

MCU는 이를 바퀴별 목표 속도와 전류 명령으로 바꾸고 빠른 제어 고리를 실행합니다.

MCU는 Encoder, Current, Temperature, Fault 상태를 다시 SBC로 보냅니다.

두 장치의 통신이 끊어졌을 때도 반드시 동작이 정의되어 있어야 합니다. 예를 들어 MCU가 일정 시간 동안 새 명령을 받지 못하면 Motor 명령을 0으로 만들고 안전 상태로 전환하는 Command Timeout이 필요합니다.

ROS 2와 MCU는 전용 Driver Node, CAN Gateway, Serial Protocol 또는 micro-ROS 같은 방법으로 연결할 수 있습니다.


11. 통신 계통 — 데이터가 이동하는 길

Communication System은 Sensor 측정값, 제어 명령, 상태와 오류 정보를 필요한 장치에 전달합니다.

로봇 내부에서는 목적에 따라 다양한 통신 방식을 사용합니다.

통신 방식 대표적인 용도 특징
I2C Board 내부의 저속 Sensor 배선이 적지만 거리와 Noise에 민감
SPI ADC, IMU, Memory 짧은 거리에서 빠르고 단순
UART / RS-485 MCU, Sensor, Motor Driver 구현이 쉽고 RS-485는 차동 신호 사용
CAN / CAN FD Motor Controller, 차량형 Robot 오류 검출과 다중 장치 연결에 유리
EtherCAT 다축 Motion Control 짧고 예측 가능한 주기 구성에 적합
Ethernet SBC, LiDAR, Camera 높은 대역폭과 범용성
Wi-Fi / 5G 외부 관제와 원격 연결 이동성이 좋지만 지연과 연결 상태가 변함

통신을 선택할 때는 최대 속도만 비교해서는 안 됩니다.

필요한 대역폭, 허용 지연, 장치 수, 케이블 길이, 전기 Noise, 오류 검출, 시간 동기화, 배선 무게, 장애 발생 시 동작을 함께 고려해야 합니다.

무선 통신은 편리하지만 안전에 필요한 가장 안쪽의 제어 고리를 불안정한 외부 Network에 의존하게 만들면 안 됩니다. 연결이 끊겨도 로봇 내부에서 안전 상태로 전환할 수 있어야 합니다.


12. 기구 계통 — 힘을 지지하고 움직임을 전달하다

Mechanical System은 로봇의 모양을 만드는 껍데기만을 뜻하지 않습니다. 하중을 지지하고 Actuator의 힘을 원하는 방향으로 전달하며 Sensor와 배선을 보호하는 핵심 구조입니다.

Frame은 모든 부품을 지지합니다.

Joint는 허용된 방향의 움직임을 만듭니다.

Bearing은 회전축을 지지하면서 마찰을 줄입니다.

Wheel과 Tire는 구동력을 바닥에 전달합니다.

Cover와 Seal은 먼지, 물, 충격으로부터 내부 부품을 보호합니다.

Cable Guide와 Strain Relief는 움직이는 관절에서 Cable이 꺾이거나 당겨지지 않도록 합니다.

기구 설계가 좋지 않으면 Software로 해결하기 어려운 문제가 생깁니다.

Frame의 진동은 IMU Noise로 나타납니다.

바퀴의 변형과 미끄러짐은 Odometry 오차가 됩니다.

Joint의 Backlash는 목표 위치 주변의 흔들림과 오차를 만듭니다.

냉각 구조가 부족하면 Computer가 온도 때문에 속도를 낮추는 Thermal Throttling이 발생합니다.


13. 한 계통의 문제가 다른 계통의 오류처럼 보인다

로봇의 고장 진단이 어려운 이유는 증상이 발생한 곳과 원인이 시작된 곳이 다를 수 있기 때문입니다.

예를 들어 로봇이 정지해 있을 때는 모든 Sensor가 정상인데 급가속하는 순간 USB Camera가 사라지고 SBC가 재부팅된다고 생각해 봅시다.

Software Log에는 USB 연결 오류만 남을 수 있습니다. 그러나 실제 원인은 다음 경로에 있을 수 있습니다.

Motor 급가속
  ↓
큰 기동 전류 발생
  ↓
Battery와 배선에서 순간 전압 강하
  ↓
DC-DC Converter 출력이 허용 범위 아래로 내려감
  ↓
USB Hub 또는 SBC Reset
  ↓
Camera Node와 ROS 2 통신 종료

겉으로 드러난 증상은 감지 또는 Software 문제지만 시작점은 전원 계통입니다.

다른 예도 있습니다.

IMU 값이 심하게 흔들리는 원인은 Sensor 고장이 아니라 느슨한 Bracket이나 Frame 진동일 수 있습니다.

Motor가 목표 위치 주변에서 진동하는 원인은 제어 Gain뿐 아니라 Gearbox Backlash일 수 있습니다.

Topic 지연의 원인은 Network뿐 아니라 CPU 과부하나 온도 상승에 따른 연산 성능 저하일 수 있습니다.


14. Power Rail을 분리하는 이유

Motor는 기동과 부하 변화 때 큰 전류를 빠르게 요구합니다. 이 변화가 Sensor와 Computer가 사용하는 전원에 그대로 전달되면 Reset, 측정 Noise, 통신 오류가 발생할 수 있습니다.

따라서 Motor처럼 Noise와 부하 변화가 큰 계통과 Logic 계통을 서로 다른 DC-DC Converter나 적절히 설계된 전원 분기에서 공급하는 방법이 널리 사용됩니다.

Battery
  ├── Protection ── Motor Power Converter ── Motor Driver
  │
  └── Protection ── Logic DC-DC ── SBC · MCU · Sensor

단순히 전선을 두 갈래로 나누는 것만으로 충분하지는 않습니다.

Converter의 입력 전압 범위와 Peak Current 용량을 확인해야 합니다.

배선의 굵기와 길이에 따른 전압 강하를 계산해야 합니다.

Fuse와 보호 장치의 정격을 부하와 배선에 맞게 선택해야 합니다.

Motor Driver 가까이에 적절한 Decoupling과 Bulk Capacitor를 배치해야 합니다.

Ground와 Shield 연결은 전류 귀환 경로와 전자기 적합성을 고려하여 설계해야 합니다. “Ground는 항상 한 점에서만 연결한다”처럼 하나의 규칙을 모든 로봇에 적용할 수는 없습니다. 높은 전류, 고속 신호, Chassis 접지 구조에 따라 적절한 방식이 달라집니다.


15. 비상정지는 일반 정지 명령과 다르다

일반 정지 명령은 정상적으로 동작하는 Software와 통신을 이용하여 로봇을 멈춥니다.

Emergency Stop, 즉 비상정지는 위험한 움직임을 가능한 한 빠르게 정지시키기 위한 안전 기능입니다. Software가 멈추거나 통신이 끊긴 상황도 고려해야 하므로 일반적인 ROS 2 Topic 하나에만 의존해서는 안 됩니다.

실제 안전 회로는 위험 분석과 적용 표준에 따라 Safety Relay, Safety PLC, Contactor, 안전 등급 Motor Drive 등을 이용할 수 있습니다.

E-Stop Button
  ↓
Safety Circuit
  ↓
Torque를 만드는 에너지 차단 또는 안전 정지 수행

비상정지가 반드시 모든 전원을 즉시 끈다는 뜻은 아닙니다. 로봇의 구조에 따라 전원을 갑자기 끄면 중력으로 팔이 떨어지거나 이동체가 제어력을 잃어 더 위험할 수 있습니다. 어떤 정지 방식과 정지 범주가 안전한지는 위험 분석을 통해 결정해야 합니다.

진단 Log를 남길 수 있도록 연산 장치의 전원은 유지하면서 위험한 구동 에너지만 안전하게 제어하는 구조가 사용되기도 합니다.

비상정지 회로의 실제 설계와 인증은 해당 장비에 적용되는 안전 표준과 자격을 갖춘 전문가의 검토가 필요한 영역입니다.


16. 고장 진단은 추측이 아니라 측정이다

고장이 발생하면 보이는 증상과 같은 이름의 부품부터 교체하기 쉽습니다. 그러나 로봇은 서브시스템이 연결되어 있으므로 다음 순서로 접근하는 것이 좋습니다.

첫째, 증상이 발생하는 조건을 재현합니다.

정지 상태인지, 급가속할 때인지, Battery 잔량이 낮을 때인지, 특정 온도에서만 발생하는지 기록합니다.

둘째, 증상과 관련된 서브시스템을 여러 개 후보로 세웁니다.

셋째, 후보를 구분할 수 있는 측정값을 정합니다.

Battery와 각 Power Rail의 전압, Motor Current, CPU 사용률, Temperature, Packet Error, Message Age 등을 함께 기록합니다.

넷째, 사건 전후의 시간을 맞추어 비교합니다.

모든 Log에 Timestamp가 있어야 “전압 강하 뒤에 SBC가 Reset되었는가?” 같은 인과 순서를 확인할 수 있습니다.

다섯째, 한 번에 하나의 조건만 바꾸어 가설을 검증합니다.

증상 관찰
  ↓
원인 후보 설정
  ↓
구분 가능한 값 측정
  ↓
시간 순서 비교
  ↓
한 조건씩 변경하여 재시험
  ↓
원인 확인과 재발 방지

전원 문제는 Software가 기록하는 Battery Topic만으로 보이지 않을 수 있습니다. 매우 짧은 전압 강하는 Update Rate가 낮은 Monitoring 값에서 사라지기 때문입니다. 이런 경우에는 Oscilloscope처럼 충분히 빠른 측정 장비가 필요합니다.


17. 실전 코드 — 증상에서 의심 계통 좁히기

다음 Python 코드는 증상과 원인 후보를 서브시스템별로 정리하는 간단한 예제입니다.

이 코드는 고장을 자동으로 판정하지 않습니다. 어떤 계통을 먼저 측정할지 정하는 점검표 역할을 합니다.

from dataclasses import dataclass

POWER = "전원"
DRIVE = "구동"
SENSE = "감지"
COMPUTE = "연산"
COMMS = "통신"
MECHANICAL = "기구"


@dataclass(frozen=True)
class Symptom:
    keyword: str
    description: str
    suspects: tuple[str, ...]
    first_checks: tuple[str, ...]


SYMPTOMS = (
    Symptom(
        keyword="USB",
        description="주행을 시작하면 USB Sensor가 사라진다.",
        suspects=(POWER, COMMS, COMPUTE),
        first_checks=(
            "Motor 기동 순간 Logic Power Rail의 전압",
            "Kernel의 USB Reset 또는 Disconnect Log",
        ),
    ),
    Symptom(
        keyword="Odometry",
        description="Odometry가 실제 이동 거리보다 크게 나온다.",
        suspects=(SENSE, MECHANICAL),
        first_checks=(
            "바퀴 지름과 축간거리 Parameter",
            "바퀴 마모, 공기압, 미끄러짐",
        ),
    ),
    Symptom(
        keyword="진동",
        description="관절이 목표 위치 근처에서 계속 진동한다.",
        suspects=(DRIVE, SENSE, MECHANICAL),
        first_checks=(
            "Encoder Noise와 Control Loop 주기",
            "Control Gain, Gearbox Backlash, Joint 마찰",
        ),
    ),
    Symptom(
        keyword="지연",
        description="ROS 2 Message 지연이 간헐적으로 커진다.",
        suspects=(COMMS, COMPUTE, POWER),
        first_checks=(
            "Message Timestamp로 계산한 Age와 Packet Error",
            "CPU 부하, Temperature, Clock 동기화 상태",
        ),
    ),
)


def triage(keyword: str) -> None:
    matches = [item for item in SYMPTOMS if keyword in item.keyword]

    if not matches:
        print(f"'{keyword}'에 해당하는 점검표가 없습니다.")
        return

    for item in matches:
        print(f"증상: {item.description}")
        print(f"의심 계통: {' → '.join(item.suspects)}")
        for index, check in enumerate(item.first_checks, start=1):
            print(f"  {index}. {check}")


if __name__ == "__main__":
    for query in ("USB", "Odometry", "진동", "지연"):
        triage(query)
        print()

프로젝트에서는 이 표에 실제 Robot의 Connector 번호, 정상 전압 범위, Topic 이름, 장비별 점검 절차를 추가할 수 있습니다.

중요한 점은 “의심 계통”이 곧 원인 확정은 아니라는 것입니다. 후보를 세운 뒤 반드시 측정으로 확인해야 합니다.


18. 로봇 구조를 설계할 때 확인할 질문

새 로봇을 설계하거나 기존 로봇을 분석할 때 다음 질문을 순서대로 확인해 봅시다.

전원 계통

  • 평균 전류와 Peak Current는 얼마인가?
  • Battery의 최저 전압에서도 모든 Converter가 동작하는가?
  • Fuse, 차단, 역극성, 과전압 보호가 있는가?

구동 계통

  • 필요한 속도와 Torque는 얼마인가?
  • Position, Velocity, Torque 중 무엇을 제어해야 하는가?
  • 전원이 끊겼을 때 Actuator와 하중은 어떻게 움직이는가?

감지 계통

  • 어떤 상태와 환경 정보를 측정해야 하는가?
  • 필요한 정확도, 범위, 주기, 지연은 얼마인가?
  • Sensor의 Timestamp와 Frame은 어떻게 관리하는가?

연산과 통신 계통

  • 각 작업의 Deadline은 얼마인가?
  • SBC와 MCU는 어떤 역할을 나누는가?
  • 통신이 끊기거나 Message가 오래되면 어떻게 동작하는가?

기구 계통

  • Frame이 최대 하중과 충격을 견디는가?
  • 진동, Backlash, 열, Cable 움직임을 고려했는가?
  • 점검과 부품 교체가 가능한 구조인가?

19. 이 장의 핵심 정리

로봇은 여러 서브시스템이 서로 영향을 주는 하나의 시스템입니다.

전원 계통은 에너지를 저장하고 변환하며 분배합니다.

구동 계통은 명령을 힘과 움직임으로 바꿉니다.

감지 계통은 로봇 내부 상태와 외부 환경을 측정합니다.

연산 계통은 상태 추정, 판단, 계획, 제어를 수행합니다.

통신 계통은 Sensor 값, 명령, 상태와 오류 정보를 전달합니다.

기구 계통은 하중을 지지하고 힘과 움직임을 전달합니다.

SBC는 인식과 Planning처럼 계산량이 크고 복잡한 작업에, MCU는 짧고 예측 가능한 반응과 하드웨어 직접 제어가 필요한 작업에 주로 사용됩니다.

Position, Velocity, Current·Torque 제어는 중첩된 고리로 구성될 수 있으며 안쪽 고리일수록 더 빠르게 동작합니다.

한 계통의 원인이 다른 계통의 증상으로 나타날 수 있으므로 고장 진단에서는 여러 원인 후보를 세우고 Timestamp가 있는 측정값으로 검증해야 합니다.

비상정지는 일반적인 Software 정지 명령과 다르며 위험 분석과 적용 안전 표준에 맞게 설계해야 합니다.


ROBOT GLOSSARY

용어 정리

전체 용어 찾아보기 →
Subsystem서브시스템
복잡한 로봇 전체에서 전원, 구동, 감지처럼 하나의 주요 역할을 담당하는 하위 시스템입니다.
Power System전원 계통
에너지를 저장하고 필요한 전압으로 변환해 각 부품에 안전하게 분배하고 차단하는 계통입니다.
BMS배터리 관리 시스템
배터리의 전압, 전류와 온도를 감시하고 위험한 충전·방전 상태에서 보호하는 장치입니다.
DC-DC Converter직류 전압 변환기
배터리의 직류 전압을 센서, 컴퓨터와 모터 계통이 요구하는 다른 직류 전압으로 바꾸는 장치입니다.
Motor Driver모터 구동기
제어기의 작은 명령 신호를 모터에 필요한 전압과 전류로 변환해 공급하는 장치입니다.
Gearbox감속기
모터의 빠른 회전 속도를 낮추고 출력 토크를 높여 로봇 관절이나 바퀴에 전달하는 기구입니다.
Backlash기어 틈새
회전 방향이 바뀔 때 기어 사이의 틈 때문에 입력 변화가 출력에 바로 전달되지 않는 현상입니다.
Position Control위치 제어
관절이나 바퀴가 지정한 위치 또는 각도에 도달하도록 제어하는 방식입니다.
Velocity Control속도 제어
모터나 이동체가 지정한 속도 또는 각속도를 유지하도록 제어하는 방식입니다.
Torque Control토크 제어
모터가 목표로 한 회전력이나 힘을 만들도록 전류와 출력을 조절하는 방식입니다.
Cascade Control중첩 제어
위치, 속도, 전류 같은 제어 고리를 여러 겹으로 구성하고 안쪽 고리를 더 빠르게 동작시키는 구조입니다.
Proprioceptive Sensor내부 상태 센서
Encoder나 전류 센서처럼 로봇 자신의 관절, 속도, 힘과 상태를 측정하는 센서입니다.
Exteroceptive Sensor외부 환경 센서
Camera나 LiDAR처럼 로봇 주변의 물체, 거리와 환경을 측정하는 센서입니다.
SBC단일 보드 컴퓨터
운영체제와 고성능 연산을 이용해 인식, 계획과 ROS 2 프로그램을 실행하기 좋은 소형 컴퓨터입니다.
MCU마이크로컨트롤러
프로세서, 메모리와 주변 장치를 한 칩에 넣어 빠르고 예측 가능한 저수준 제어에 사용하는 장치입니다.
Command Timeout명령 시간 초과
정해진 시간 동안 새 명령이 오지 않으면 이전 명령을 폐기하고 감속이나 정지 상태로 전환하는 안전 기능입니다.
Emergency Stop비상정지
소프트웨어나 통신 고장까지 고려해 위험한 움직임을 가능한 한 안전하게 정지시키는 독립적인 안전 기능입니다.
Timestamp측정 시각
센서 데이터가 언제 측정되었는지를 나타내며 데이터의 최신 여부와 시간 정렬에 사용되는 정보입니다.

연습 문제

  1. 로봇을 구성하는 여섯 서브시스템과 각각의 역할을 설명하시오.
  2. Motor가 급가속할 때 USB Camera가 사라지는 과정을 서브시스템 사이의 영향으로 설명하시오.
  3. Motor Driver와 Gearbox는 각각 어떤 역할을 하는가?
  4. 감속비가 50:1일 때 이상적인 출력 속도와 Torque는 입력에 비해 어떻게 변하는가?
  5. Position, Velocity, Current·Torque Control의 차이를 설명하시오.
  6. 중첩 제어에서 안쪽 Current Loop가 바깥쪽 Position Loop보다 빨라야 하는 이유는 무엇인가?
  7. Proprioceptive Sensor와 Exteroceptive Sensor의 예를 각각 두 가지씩 드시오.
  8. SBC와 MCU가 역할을 나누는 이유를 실행 시각과 연산량의 관점에서 설명하시오.
  9. MCU를 사용한다는 사실만으로 Hard Real-time이 보장되지 않는 이유는 무엇인가?
  10. CAN과 Ethernet을 로봇 내부 통신에 사용할 때 고려할 차이점을 설명하시오.
  11. Frame 진동과 Gearbox Backlash가 Sensor와 제어 결과에 어떤 영향을 줄 수 있는가?
  12. Software가 발행하는 Battery 전압 Topic에서 짧은 전압 강하가 보이지 않을 수 있는 이유는 무엇인가?
  13. 일반 정지 명령과 비상정지의 차이를 설명하시오.
  14. 통신이 끊겼을 때 MCU의 Command Timeout이 필요한 이유는 무엇인가?
  15. 고장 진단에서 모든 Log에 Timestamp가 필요한 이유는 무엇인가?

참고 자료

  • John J. Craig, 「Introduction to Robotics: Mechanics and Control」
  • Bruno Siciliano, Oussama Khatib, 「Springer Handbook of Robotics」
  • Roland Siegwart, Illah R. Nourbakhsh, Davide Scaramuzza, 「Introduction to Autonomous Mobile Robots」
  • ROS 2 Documentation, https://docs.ros.org/
  • micro-ROS Documentation, https://micro.ros.org/
  • ISO 8373, Robotics — Vocabulary