| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 자료구조
- makefile
- git
- Ik
- datastructure
- 깃허브
- cprogramming
- robotics
- fsm
- 산업자동화
- IoT
- 로봇공학
- 컴퓨터비전
- 역기구학
- 로보틱스
- mqtt
- 디지털트윈
- intensity
- Histogram
- 스마트팩토리
- c프로그래밍
- c++
- 모니터링시스템
- C
- github
- pointer
- Today
- Total
yebeen.kim
[Digital Twin] 공정 시뮬레이션과 FSM 구조 본문
- FSM(Finite State Machine)은 “상태 기반으로 시스템의 동작을 제어하는 방식”이다.
쉽게 말하면 “현재 어떤 상태(State)에 있는지에 따라 다음 행동이 결정되는 구조” 라고 볼 수 있다.
예를 들어 자동문을 생각해보자.
자동문은 아무 때나 움직이지 않는다.
현재 상태에 따라 행동이 달라진다.
- 닫힘 상태 → 사람이 감지되면 열림 상태로 전환
- 열림 상태 → 일정 시간이 지나면 닫힘 상태로 전환
- 장애물 감지 상태 → 다시 열림 상태 유지
즉 자동문은 “현재 상태”를 기준으로 동작한다.
이런 구조가 바로 FSM이다.
FSM는 크게 다음 요소들로 구성된다.
State (상태) : 현재 시스템이 어떤 상태인지 의미한다.
예시:
- Idle
- Moving
- Waiting
- Error
- Finished
Transition (상태 전이) : 특정 조건이 만족되었을 때 다른 상태로 이동하는 것이다.
예시:
- 센서 감지됨
- 작업 완료
- 타이머 종료
- 충돌 발생
Event / Condition : 상태를 변경시키는 조건이다.
예시:
- 버튼 입력
- MQTT 메시지 수신
- 센서 ON
- 로봇 위치 도달
Action : 상태가 변경될 때 수행하는 행동이다.
예시:
- 컨베이어 시작
- 로봇 이동
- 경고 알람 출력
- 다음 공정 호출
FSM를 비유하면 “게임 퀘스트 진행 시스템”과 비슷하다.
예를 들어 게임에서:
- 퀘스트 시작 전
- NPC 대화 중
- 몬스터 처치 완료
- 보상 수령 완료
같은 상태들이 존재한다.
그리고 특정 조건이 만족될 때 다음 단계로 넘어간다.
스마트팩토리와 디지털 트윈 환경도 거의 동일하다.
예를 들어 간단하게 pick and place 공정을 생각해보자.

공정 상태 예시:
Idle
→ Bolt Detected
→ Robot Pick
→ Bolt Place
→ Conveyor Move
→ Inspection
→ Finish
이런 흐름으로 상태가 계속 변경된다. 그리고 각 상태마다 수행해야 하는 작업이 다르다.
예를 들어, Robot Pick 상태에서는:
- 로봇이 배터리 위치로 이동
- 그리퍼 닫기
- 배터리 집기
를 수행해야 한다.
반면 Bolt Place 상태에서는:
- 공구 교체
- 볼트 위치 이동
- 볼트 놓기
을 수행해야 한다.
즉 FSM은 “현재 공정이 어디까지 진행되었는지”를 명확하게 관리해준다.
디지털 트윈 환경에서는 FSM이 특히 중요하다. 왜냐하면 현실 공정과 가상 공정의 흐름을 동일하게 맞춰야 하기 때문이다.
예를 들어 Isaac Sim 같은 시뮬레이터에서는:
- 로봇 상태
- 컨베이어 상태
- 센서 상태
- 작업 완료 여부
등이 계속 변한다.
이 상태들을 제대로 관리하지 않으면:
- 로봇이 아직 작업 중인데 다음 공정 실행
- 컨베이어가 움직이는 중인데 로봇 접근
- 센서 감지 전에 작업 시작
같은 문제가 발생할 수 있다.
FSM은 이런 문제를 방지한다.
예를 들어:
if current_state == "RobotWorking":
conveyor_stop()
if current_state == "ConveyorMoving":
robot_wait()
처럼 상태 기반으로 시스템을 안전하게 제어할 수 있다.
실제 스마트팩토리에서는 FSM이 거의 기본 구조처럼 사용된다.
특히 다음과 같은 시스템에서 많이 활용된다.
- PLC 제어
- 로봇 공정 제어
- AMR 이동 제어
- 컨베이어 자동화
- 공정 순서 관리
- 설비 인터락(interlock)
- 디지털 트윈 동기화
특히 공장 자동화에서는 “순서”와 “상태”가 매우 중요하다.
예를 들어:
- 센서 감지
- 컨베이어 정지
- 로봇 접근
- 작업 수행
- 작업 완료 확인
- 다음 공정 전달
이 순서가 깨지면 설비 충돌이나 공정 오류가 발생할 수 있다.
FSM은 이런 흐름을 명확하게 구조화한다. 또한 FSM은 디버깅이 쉽다는 장점도 있다.
예를 들어 로그에서:
Current State = BoltRemove
라고 출력된다면,
현재 시스템이 어디에서 멈췄는지 바로 확인할 수 있다.
그래서 실제 산업 환경에서는 FSM을 단순한 이론이 아니라 “공정 제어의 핵심 구조”로 사용한다.
특히 디지털 트윈에서는 현실 공정의 상태 변화와 가상 공정의 상태 변화를 동일하게 유지해야 하기 때문에,
FSM 기반 구조가 매우 중요해진다.
결국 FSM은 단순한 상태 관리 기법이 아니라,
복잡한 공정 시스템을 안전하고 예측 가능하게 운영하기 위한 핵심 설계 방식이라고 볼 수 있다.
'2026 > 뉴로메카 인턴' 카테고리의 다른 글
| [Robotics] Jacobian Matrix (0) | 2026.05.21 |
|---|---|
| [Robotics] Inverse Kinematics 역기구학이란? (0) | 2026.05.08 |
| [MQTT] MQTT Broker 설치 및 테스트 방법 (0) | 2026.05.06 |
| [MQTT] MQTT란 무엇인가? (0) | 2026.05.06 |