학습 목표
이 장을 마치면 다음 내용을 설명할 수 있습니다.
- 로봇을 감지 → 판단 → 동작이 반복되는 폐루프 시스템으로 설명할 수 있다.
- Sensor, Controller, Actuator가 각각 어떤 역할을 하는지 설명할 수 있다.
- 단순 자동화 장치와 로봇을 구분할 때 고려해야 할 기준을 사례에 적용할 수 있다.
- 제어 주기와 지연이 로봇의 반응 거리와 안전거리에 어떤 영향을 주는지 계산할 수 있다.
- 자율성의 수준을 구분하고 자신이 만드는 로봇이 어느 수준에 해당하는지 판단할 수 있다.
- 오래된 센서 데이터와 통신 단절에 안전하게 대응하는 제어 원칙을 이해할 수 있다.
1. 로봇을 한 문장으로 정의해 보자
로봇의 모양은 매우 다양합니다.
공장에는 여러 관절로 이루어진 로봇팔이 있고, 물류창고에는 바퀴로 움직이는 AMR이 있습니다. 하늘을 나는 드론도 있고, 사람과 비슷한 몸을 가진 휴머노이드도 있습니다. 겉모양만으로는 이들을 하나로 묶기 어렵습니다.
대신 로봇이 정보를 처리하는 방식을 보면 공통된 구조를 발견할 수 있습니다.
로봇은 환경과 자신의 상태를 감지하고, 그 정보로 행동을 판단하며, 물리적인 동작을 수행한 뒤 그 결과를 다시 감지하는 기계입니다.
이 구조를 가장 간단하게 표현하면 다음과 같습니다.
Sense
감지
↓
Decide
판단
↓
Act
동작
↓
환경과 로봇의 상태가 변함
│
└──────── 다시 Sense로
중요한 것은 이 과정이 한 번으로 끝나지 않는다는 점입니다. 로봇이 작동하는 동안 이 고리는 계속 반복됩니다.
이를 Sense–Decide–Act Loop라고 부릅니다.
2. Sense — 물리 세계를 숫자로 바꾸다
컴퓨터는 거리, 빛, 힘, 회전 같은 물리 현상을 직접 이해하지 못합니다. Sensor는 이러한 물리량을 전기 신호로 바꾸고, 다시 프로그램이 처리할 수 있는 숫자로 변환합니다.
대표적인 센서와 측정값은 다음과 같습니다.
| 센서 | 주로 측정하는 값 | 로봇이 알 수 있는 것 |
|---|---|---|
| Encoder | 회전량, 각도, 속도 | 바퀴나 관절이 얼마나 움직였는가 |
| LiDAR | 물체까지의 거리 | 주변 벽과 장애물이 어디에 있는가 |
| Camera | 빛의 밝기와 색 | 무엇이 보이는가 |
| IMU | 가속도, 각속도 | 로봇이 어떻게 기울고 회전하는가 |
| Force/Torque Sensor | 힘과 토크 | 물체를 얼마나 세게 누르고 있는가 |
| Bumper | 접촉 여부 | 장애물과 부딪혔는가 |
센서 값에는 숫자만 있어서는 안 됩니다. 적어도 두 가지 정보가 함께 필요합니다.
첫째는 Timestamp, 즉 측정 시각입니다.
장애물이 0.4m 앞에 있다는 정보가 있어도 그것이 0.01초 전의 값인지 1초 전의 값인지에 따라 의미가 완전히 달라집니다.
둘째는 Frame, 즉 기준 좌표계입니다.
장애물의 위치가 센서 기준인지, 로봇 몸체 기준인지, 지도 기준인지 알아야 올바르게 사용할 수 있습니다. ROS 2 메시지에서 자주 만나는 header.stamp와 header.frame_id가 바로 이 정보를 담습니다.
3. Decide — 측정값을 행동으로 바꾸다
센서가 보내는 것은 측정값입니다. 측정값 자체가 곧 행동은 아닙니다. 로봇은 먼저 현재 상태를 추정하고, 목표와 안전 조건을 고려하여 다음 행동을 결정해야 합니다.
예를 들어 LiDAR가 여러 거리 값을 보냈다고 생각해 봅시다.
LiDAR 측정값
↓
왼쪽 앞 0.4m에 벽이 있다고 추정
↓
현재 속도로 직진하면 충돌한다고 판단
↓
감속한 뒤 오른쪽으로 회전하기로 결정
여기에는 서로 다른 두 문제가 들어 있습니다.
Estimation은 센서 값에서 세계의 상태를 알아내는 일입니다.
Decision은 추정한 상태에서 목표에 맞는 행동을 고르는 일입니다.
센서에는 노이즈가 있고 현실에는 예상하지 못한 상황이 있기 때문에 판단 결과도 언제나 완벽하지는 않습니다. 그래서 로봇은 한 번 내린 판단을 계속 고집하지 않고 다음 센서 값을 받아 다시 판단합니다.
4. Act — 숫자를 물리적인 움직임으로 바꾸다
Actuator는 프로그램이 만든 명령을 실제 힘과 움직임으로 바꾸는 장치입니다.
모터는 바퀴나 관절을 회전시킵니다.
유압 실린더는 큰 힘으로 구조물을 밀고 당깁니다.
공압 밸브는 압축 공기의 흐름을 조절합니다.
그리퍼는 물체를 잡거나 놓습니다.
하지만 명령한 값과 실제 결과는 항상 조금씩 다릅니다.
바닥에서 바퀴가 미끄러질 수 있습니다. 배터리 전압이 낮아질 수 있습니다. 기어에는 유격이 있고 로봇이 든 물체의 무게도 달라질 수 있습니다.
예를 들어 Controller가 모터에 90° 회전을 명령했지만 Encoder가 87°를 측정했다면 오차는 다음과 같습니다.
오차 = 목표값 - 실제값
= 90° - 87°
= 3°
Controller는 이 오차를 줄이도록 다시 명령합니다. 동작의 결과를 측정하여 다음 명령에 반영하는 이 구조가 Feedback Control의 기본입니다.
5. Closed Loop — 왜 결과를 다시 감지해야 하는가?
문이 자동으로 3초 동안 열리도록 모터를 작동시킨다고 생각해 봅시다. 문이 실제로 완전히 열렸는지 확인하지 않고 시간이 지나면 모터를 끈다면 Open-loop Control, 즉 개루프 제어에 가깝습니다.
반대로 Encoder로 문의 각도를 측정하고 목표 각도에 도달할 때까지 오차를 보정한다면 Closed-loop Control, 즉 폐루프 제어입니다.
목표값
↓
Controller
↓
Actuator
↓
Robot / Environment
↓
Sensor
│
└──── 측정값을 Controller로 Feedback
폐루프에서 닫혀 있다는 것은 상자나 전기 회로가 닫혀 있다는 뜻이 아닙니다. 동작의 결과가 센서를 통해 다음 판단으로 되돌아오는 정보의 경로가 닫혀 있다는 뜻입니다.
고리가 끊기면 로봇은 위험해질 수 있습니다.
센서가 멈췄는데 모터가 계속 움직인다면 로봇은 눈을 감고 달리는 것과 같습니다. 따라서 실제 로봇은 측정값뿐 아니라 센서가 정상적으로 갱신되고 있는지도 확인해야 합니다.
6. 자동화 장치와 로봇은 어떻게 다른가?
자동화와 로봇 사이에 모든 사람이 동의하는 하나의 경계선이 있는 것은 아닙니다. 분야와 목적에 따라 정의가 달라질 수 있습니다. 다만 로봇공학을 공부할 때는 다음 질문이 유용합니다.
환경이 예상과 달라졌을 때, 감지한 정보를 이용하여 스스로 다른 행동을 선택하는가?
컨베이어 벨트는 정해진 속도로 제품을 옮깁니다. 스위치를 켜면 사람의 도움 없이 작동하므로 자동화 장치이지만, 주변 상황에 따른 판단의 폭은 거의 없습니다.
세탁기는 정해진 순서에 따라 급수, 세탁, 배수, 탈수를 수행합니다. 무게나 오염도를 감지하여 물의 양과 시간을 바꾸는 제품이라면 제한적인 폐루프와 판단 기능을 가지고 있습니다.
엘리베이터는 버튼과 도어 센서에 반응하지만 레일이라는 완전히 구조화된 공간 안에서 움직입니다. 자동화와 로봇의 경계 사례로 볼 수 있습니다.
로봇 청소기는 주변 지도를 만들고, 장애물에 따라 경로를 다시 계획하며, 갇히면 탈출 행동을 시도합니다. 환경에 따라 선택을 바꾸므로 로봇의 특징이 분명합니다.
| 시스템 | 감지 | 판단과 적응의 범위 | 실용적 분류 |
|---|---|---|---|
| 단순 컨베이어 | 거의 없음 | 정해진 동작 반복 | 자동화 장치 |
| 센서가 있는 세탁기 | 무게, 수위 등 | 정해진 조건 안에서 과정 조절 | 제한적 자동화 |
| 티칭 재생 로봇팔 | 관절 Encoder | 저장된 궤적 추종 | 산업용 로봇 |
| 로봇 청소기 | LiDAR, Camera, Bumper 등 | 지도 작성, 경로 변경, 탈출 | 자율 이동 로봇 |
| 자율주행차 | Camera, LiDAR, Radar, GNSS 등 | 인식, 예측, 계획, 제어 | 고자율 로봇 시스템 |
이 표의 목적은 이름표를 엄격히 붙이는 것이 아닙니다. 시스템이 어떤 정보를 감지하고 어느 범위까지 스스로 행동을 바꾸는지 구체적으로 설명하는 것이 더 중요합니다.
7. 로봇은 몸과 두뇌만으로 이루어지지 않는다
로봇을 사람에 비유하면 Sensor는 감각기관, Controller는 두뇌, Actuator는 근육과 비슷합니다. 그러나 실제 로봇을 만들려면 이 세 가지 외에도 여러 요소가 함께 작동해야 합니다.
전원 ──────────────┐
↓
Sensor → Computer / Controller → Actuator
↑ ↕ ↓
└──────── Communication ───── Robot Body
Power System은 모든 부품에 필요한 전력을 공급합니다.
Mechanical Structure는 힘을 지지하고 움직임을 전달합니다.
Communication은 센서, 컴퓨터, 모터 드라이버 사이에서 데이터를 전달합니다.
Software는 상태 추정, 계획, 제어, 안전 감시를 수행합니다.
로봇의 성능은 가장 뛰어난 부품 하나로 결정되지 않습니다. 센서는 빠른데 통신이 느리거나, 판단은 정확한데 모터가 명령을 늦게 실행하면 전체 시스템의 반응도 느려집니다.
8. 제어 주기 — 로봇은 얼마나 자주 판단하는가?
로봇의 Sense–Decide–Act 고리는 일정한 속도로 반복됩니다. 1초에 이 고리를 반복하는 횟수를 Control Loop Rate, 즉 제어 주기율이라고 하며 단위는 Hz입니다.
주기율과 한 번 반복하는 데 걸리는 시간의 관계는 다음과 같습니다.
주기 T = 1 / 주기율 f
10Hz라면 한 주기는 0.1초, 즉 100ms입니다.
100Hz라면 한 주기는 0.01초, 즉 10ms입니다.
로봇이 1.0m/s로 달리고 제어 주기율이 10Hz라면 한 주기 동안 이동하는 거리는 다음과 같습니다.
이동 거리 = 속도 × 시간
= 1.0m/s × 0.1s
= 0.1m
로봇은 다음 판단을 하기 전까지 약 10cm를 더 움직일 수 있습니다. 속도가 빨라질수록, 제어 주기가 느려질수록 한 번의 판단 사이에 이동하는 거리는 길어집니다.
단, 제어 주기율을 무조건 높인다고 모든 문제가 해결되는 것은 아닙니다. 센서의 갱신 속도, 계산 시간, 통신 대역폭, Actuator의 물리적인 응답 속도도 함께 고려해야 합니다.
9. Latency — 오래된 정보로 움직이는 시간
Latency는 정보를 측정한 시점부터 그 결과가 실제 동작으로 나타날 때까지의 지연입니다.
예를 들어 다음과 같은 시스템을 생각해 봅시다.
센서 측정과 데이터 생성 20ms
네트워크 전송 5ms
상태 추정과 판단 15ms
모터의 실제 반응 30ms
──────────────────────────────
처리 경로의 총 지연 70ms
10Hz 제어 루프에서는 작업의 실행 시점에 따라 다음 주기를 기다리는 시간도 생길 수 있습니다. 보수적으로 최대 한 주기인 100ms를 더하면 로봇이 오래된 상황을 기준으로 움직이는 시간은 최대 170ms가 될 수 있습니다.
속도가 1.0m/s라면 이 시간에 이동하는 거리는 다음과 같습니다.
1.0m/s × 0.17s = 0.17m
즉 새 판단이 실제 움직임에 반영되기 전에 약 17cm를 이동할 수 있습니다.
이 계산은 단순화한 상한 예시입니다. 실제 시스템에서는 각 작업의 스케줄링, 센서와 제어 루프의 위상 차이, 지연의 변동인 Jitter까지 측정하여 최악 조건을 정해야 합니다.
10. 반응 거리와 제동 거리
장애물을 발견한 순간 로봇이 바로 멈추는 것은 아닙니다. 정보를 처리하고 제동을 시작하기까지 이동하는 반응 거리와, 제동을 시작한 뒤 실제로 정지할 때까지의 제동 거리가 필요합니다.
일정한 감속도를 가정하면 제동 거리는 다음과 같이 계산할 수 있습니다.
제동 거리 = v² / (2a)
v: 현재 속도
a: 감속도의 크기
속도 1.0m/s, 감속도 1.0m/s²라면 제동 거리는 0.5m입니다.
앞에서 계산한 지연 중 이동 거리 0.17m를 더하면 이론적인 최소 정지 거리는 다음과 같습니다.
최소 정지 거리 = 반응 거리 + 제동 거리
= 0.17m + 0.50m
= 0.67m
그러나 실제 안전거리를 단순히 0.67m로 설정해서는 안 됩니다. 센서 오차, 바닥 마찰 변화, 통신 Jitter, 제동 성능의 편차, 사람의 움직임 등을 고려한 안전 여유가 필요합니다. 안전에 관련된 실제 설계는 적용 분야의 위험 분석과 관련 표준에 따라 검증해야 합니다.
11. 데이터의 나이를 확인하라
센서 메시지를 방금 받았다고 해서 그 측정값도 반드시 최신인 것은 아닙니다. 네트워크 큐에 오래 머물렀거나 처리 프로그램이 밀린 뒤 늦게 도착했을 수 있습니다.
따라서 데이터의 나이는 수신 시각이 아니라 측정 시각을 기준으로 계산합니다.
데이터 나이 = 현재 시각 - 메시지의 Timestamp
값의 모양이 정상이어도 허용 시간보다 오래되었다면 신뢰해서는 안 됩니다.
안전한 시스템은 다음과 같은 조건을 감시합니다.
- 센서 데이터가 정해진 주기로 계속 도착하는가?
- Timestamp가 실제로 갱신되고 있는가?
- 데이터의 나이가 허용 한도 안에 있는가?
- 값이 센서의 물리적인 범위 안에 있는가?
- 여러 센서의 시간 기준이 서로 맞는가?
하나라도 만족하지 못하면 속도를 제한하거나 안전하게 정지하는 전략이 필요합니다. 불확실하거나 고장 난 상태에서 안전한 방향으로 전환하는 원칙을 Fail-safe라고 합니다.
12. 자율성이란 무엇인가?
Autonomy, 즉 자율성은 로봇이 사람의 실시간 개입 없이 상황을 인식하고 행동을 선택할 수 있는 범위를 말합니다.
자율성은 로봇의 종류에 붙는 단순한 이름이 아닙니다. 같은 로봇도 작업과 운용 조건에 따라 자율성 수준이 달라질 수 있습니다. 예를 들어 배송 로봇이 실내에서는 스스로 이동하지만 엘리베이터에서는 원격 조작을 받는다면 구간별 자율성이 다른 것입니다.
학습을 위해 다음과 같이 다섯 단계로 단순화해 볼 수 있습니다.
| 수준 | 사람이 하는 일 | 로봇이 하는 일 | 예시 |
|---|---|---|---|
| L0 원격조작 | 모든 동작을 실시간 지시 | 명령을 실행 | 재난 현장 원격 로봇 |
| L1 프로그램 재생 | 동작을 미리 가르침 | 저장된 궤적 반복 | 용접 로봇의 티칭 재생 |
| L2 반응 행동 | 반응 규칙을 작성 | 센서 조건에 따라 규칙 선택 | 범퍼 접촉 시 후진 |
| L3 계획 기반 | 목표와 운용 범위를 지정 | 지도에서 경로 생성과 재계획 | Nav2 기반 배송 로봇 |
| L4 학습·적응 | 목표, 데이터, 안전 제약 제공 | 경험이나 데이터로 행동을 개선 | 학습 기반 조작 시스템 |
이 표는 모든 산업에서 통용되는 공식 표준 등급이 아니라 개념을 이해하기 위한 교육용 분류입니다.
자율성이 높다고 항상 더 좋은 것도 아닙니다. 작업이 일정하고 안전이 매우 중요하다면 단순하고 검증하기 쉬운 L1 시스템이 더 적합할 수 있습니다.
13. 자율성이 높아질수록 검증은 어려워진다
프로그램 재생 로봇은 정해진 조건에서 가르친 궤적을 정확하게 반복하는지 확인하면 됩니다. 그러나 계획 기반 로봇은 장애물의 위치, 사람의 움직임, 통로의 폐쇄처럼 다양한 상황에서 안전하게 재계획하는지 확인해야 합니다.
학습 기반 로봇은 더 어렵습니다. 학습 데이터에 없던 물체나 환경에서도 안전한 행동을 하는지 확인해야 하기 때문입니다.
자율성 증가
↓
가능한 행동과 상황의 수 증가
↓
시험해야 할 경우의 수 증가
↓
안전 검증의 어려움 증가
따라서 자율성을 설계할 때는 “얼마나 똑똑한가?”만 묻지 말아야 합니다.
어떤 환경에서 동작하는가?
어디까지 스스로 결정하는가?
판단할 수 없을 때 어떻게 안전하게 멈추는가?
사람은 언제 개입하는가?
이 질문에 명확히 답할 수 있어야 합니다.
14. 실전 코드 — 가장 작은 감지·판단·동작 고리
다음 코드는 ROS 2 없이 Sense–Decide–Act 구조를 확인하는 간단한 Python 예제입니다.
가상의 거리 센서 값이 1.5m에서 점점 줄어듭니다. 로봇은 장애물이 멀리 있을 때 정상 속도로 움직이고, 1.0m 안에 들어오면 감속하며, 0.35m 이내에서는 정지합니다.
from dataclasses import dataclass
MAX_SPEED = 0.6 # m/s
STOP_DISTANCE = 0.35 # m
SLOW_DISTANCE = 1.00 # m
MAX_DATA_AGE = 0.30 # s
@dataclass
class Scan:
distance_m: float
stamp: float
def sense(step: int, now: float) -> Scan:
"""벽에 가까워지는 상황을 가상으로 측정합니다."""
distance = max(0.0, 1.5 - 0.08 * step)
return Scan(distance_m=distance, stamp=now)
def decide(scan: Scan, now: float) -> float:
"""거리 측정값으로 안전한 속도를 결정합니다."""
age = now - scan.stamp
if age > MAX_DATA_AGE:
return 0.0
if scan.distance_m <= STOP_DISTANCE:
return 0.0
if scan.distance_m >= SLOW_DISTANCE:
return MAX_SPEED
ratio = (
(scan.distance_m - STOP_DISTANCE)
/ (SLOW_DISTANCE - STOP_DISTANCE)
)
return round(MAX_SPEED * ratio, 3)
def act(speed_mps: float) -> None:
"""실제 로봇에서는 모터 드라이버에 명령을 보냅니다."""
print(f"speed command: {speed_mps:.2f} m/s")
def main() -> None:
control_hz = 10.0
dt = 1.0 / control_hz
for step in range(20):
now = step * dt
scan = sense(step, now) # Sense
speed = decide(scan, now) # Decide
print(f"distance: {scan.distance_m:.2f} m, ", end="")
act(speed) # Act
if speed == 0.0:
print("안전 정지")
break
if __name__ == "__main__":
main()
이 코드에서 주목할 부분은 세 가지입니다.
센서 값에 Timestamp가 있습니다.
오래된 데이터는 사용하지 않고 정지합니다.
장애물에 가까워질수록 속도 명령을 제한합니다.
실제 ROS 2 프로그램에서는 sense()가 Sensor Topic을 구독하는 Callback으로, act()가 속도 명령 Topic을 발행하는 Publisher로 바뀔 수 있습니다. 구조는 달라 보여도 핵심 고리는 같습니다.
15. ROS 2에서 Sense–Decide–Act는 어떻게 보이는가?
ROS 2에서는 로봇의 모든 기능을 하나의 거대한 프로그램에 넣기보다 여러 Node로 나눕니다.
이동 로봇을 단순화하면 다음과 같습니다.
LiDAR Driver Node
↓ /scan
Localization / Perception Node
↓ 현재 상태
Navigation Node
↓ /cmd_vel
Motor Controller Node
↓
Robot
LiDAR Driver는 Sense에 해당합니다.
Localization과 Navigation은 Decide에 해당합니다.
Motor Controller는 Act에 해당합니다.
로봇이 움직이면 Encoder, IMU, LiDAR가 변화를 다시 측정합니다. 따라서 ROS 2의 Topic과 Node를 배우는 것은 단순히 통신 문법을 배우는 일이 아닙니다. Sense–Decide–Act 고리를 여러 프로그램이 함께 구성하는 방법을 배우는 것입니다.
통신이 연결되었다고 폐루프가 완성되는 것은 아닙니다. 메시지의 Timestamp, Frame, 주기, 지연, 유실, 안전 정지 조건까지 올바르게 설계해야 실제 로봇이 안전하게 동작합니다.
16. 로봇 프로젝트를 시작할 때 물어야 할 질문
로봇을 설계할 때 부품이나 알고리즘 이름부터 정하면 전체 목적을 놓치기 쉽습니다. 다음 질문을 먼저 정리하면 시스템의 경계가 분명해집니다.
무엇을 감지해야 하는가?
센서 값은 얼마나 정확하고 얼마나 자주 갱신되어야 하는가?
로봇은 어떤 목표와 규칙으로 행동을 결정하는가?
어떤 Actuator가 물리적인 동작을 수행하는가?
명령의 결과를 무엇으로 다시 확인하는가?
허용할 수 있는 최대 지연은 얼마인가?
센서나 통신이 고장 나면 어떻게 안전하게 정지하는가?
사람이 개입해야 하는 순간은 언제인가?
이 질문에 답하면 필요한 Sensor, Computer, Network, Actuator와 Software의 요구사항도 자연스럽게 드러납니다.
17. 이 장의 핵심 정리
로봇은 모양이 아니라 정보와 행동이 순환하는 구조로 이해할 수 있습니다.
Sense → Decide → Act → 환경 변화 → 다시 Sense
Sense는 물리 세계를 숫자로 바꿉니다. 측정값에는 Timestamp와 Frame이 필요합니다.
Decide는 측정값에서 상태를 추정하고 목표와 안전 조건에 맞는 행동을 선택합니다.
Act는 명령을 실제 힘과 움직임으로 바꿉니다. 명령과 실제 결과에는 언제나 차이가 있으므로 Feedback이 필요합니다.
자동화와 로봇의 경계는 하나로 고정되어 있지 않지만, 환경 변화에 따라 스스로 행동을 바꾸는 범위가 중요한 판단 기준입니다.
제어 주기와 Latency는 로봇이 오래된 정보로 얼마나 멀리 움직이는지를 결정합니다.
안전 정지 거리는 반응 거리, 제동 거리, 불확실성에 대한 안전 여유를 함께 고려해야 합니다.
자율성이 높아질수록 가능한 상황과 행동이 늘어나므로 검증도 어려워집니다.
ROS 2의 Node와 Topic은 여러 프로그램이 하나의 Sense–Decide–Act 고리를 구성하도록 연결합니다.
- Sense감지
- 센서로 환경과 로봇 자신의 상태를 측정해 프로그램이 처리할 수 있는 데이터로 바꾸는 단계입니다.
- Decide판단
- 측정값으로 현재 상태를 추정하고 목표와 안전 조건을 고려해 다음 행동을 선택하는 단계입니다.
- Act동작
- 판단 결과를 모터나 구동기에 명령하여 물리적인 움직임으로 실행하는 단계입니다.
- Closed Loop폐루프
- 동작 결과를 다시 측정하고 다음 판단에 반영하는 과정이 끊임없이 이어지는 제어 구조입니다.
- Sensor센서
- 거리, 빛, 힘, 회전 같은 물리량을 로봇 프로그램이 사용할 수 있는 전기 신호와 숫자로 바꾸는 장치입니다.
- Controller제어기
- 센서 정보와 목표를 바탕으로 로봇이 수행할 동작 명령을 계산하는 장치 또는 프로그램입니다.
- Actuator구동기
- 제어 명령을 회전, 직선 운동이나 힘 같은 실제 물리 동작으로 바꾸는 장치입니다.
- Timestamp측정 시각
- 센서 데이터가 언제 측정되었는지를 나타내며 데이터의 최신 여부와 시간 정렬에 사용되는 정보입니다.
- Frame기준 좌표계
- 센서 값이나 물체 위치가 센서, 로봇 몸체 또는 지도 중 어디를 기준으로 표현되었는지 나타냅니다.
- Estimation상태 추정
- 불완전하고 오차가 있는 센서 값으로 로봇과 환경의 실제 상태를 가능한 정확하게 계산하는 과정입니다.
- Latency지연
- 센서 측정부터 계산과 통신을 거쳐 동작 명령이 실제로 반영되기까지 걸리는 시간입니다.
- Control Frequency제어 주기율
- 로봇의 감지·판단·명령 갱신 과정이 1초에 몇 번 반복되는지를 나타내는 값입니다.
- Jitter지연 변동
- 처리나 통신에 걸리는 시간이 매번 일정하지 않고 달라지는 현상입니다.
- Fail-safe고장 안전
- 센서나 통신에 문제가 생겼을 때 위험한 동작을 계속하지 않고 속도를 제한하거나 안전하게 정지하는 원칙입니다.
- Autonomy자율성
- 로봇이 사람의 실시간 개입 없이 상황을 인식하고 행동을 선택할 수 있는 범위입니다.
연습 문제
- 로봇을 Sense–Decide–Act 구조로 정의해 보시오.
- Closed Loop에서 무엇이 닫혀 있다는 뜻인지 설명하시오.
- Sensor 값에 Timestamp와 Frame이 필요한 이유는 무엇인가?
- Estimation과 Decision의 차이를 예를 들어 설명하시오.
- 자동화 장치와 로봇을 구분할 때 사용할 수 있는 실용적인 질문은 무엇인가?
- 제어 주기율이 20Hz일 때 한 주기의 시간은 몇 초인가?
- 로봇이 1.5m/s로 움직이고 총 지연이 200ms라면 지연 중 이동 거리는 얼마인가?
- 속도 2.0m/s, 감속도 2.0m/s²일 때 이론적인 제동 거리를 계산하시오.
- 센서 데이터의 나이를 수신 시각이 아니라 측정 Timestamp로 계산해야 하는 이유는 무엇인가?
- 자율성이 높아질수록 안전 검증이 어려워지는 이유를 설명하시오.
- Fail-safe의 의미를 로봇의 센서 고장 사례로 설명하시오.
- ROS 2 이동 로봇에서 Sense, Decide, Act에 해당하는 Node를 각각 하나씩 들어 보시오.
참고 자료
- John J. Craig, 「Introduction to Robotics: Mechanics and Control」
- Sebastian Thrun, Wolfram Burgard, Dieter Fox, 「Probabilistic Robotics」
- Bruno Siciliano, Oussama Khatib, 「Springer Handbook of Robotics」
- ROS 2 Documentation, https://docs.ros.org/
- ISO 8373, Robotics — Vocabulary
COMMUNITY
강의 댓글
질문과 학습 경험을 함께 나눠보세요.댓글을 불러오는 중입니다.