1291.20 상태 머신의 로봇공학 적용 사례와 한계
1. 로봇공학에서의 FSM 적용 역사
유한 상태 머신(FSM)은 로봇공학에서 행동 제어의 초기 아키텍처로 광범위하게 채택되었다. 1980년대와 1990년대의 초기 자율 로봇 시스템에서 FSM은 행동 제어의 사실상 표준 접근법이었으며, 특히 단일 임무 수행 로봇, 산업용 로봇, 간단한 서비스 로봇에서 효과적으로 활용되었다.
대표적인 FSM 기반 로봇 행동 제어 프레임워크로 다음이 있다:
- SMACH (State Machine Architecture): ROS(Robot Operating System) 생태계에서 가장 널리 사용된 HSM 라이브러리로, Python 기반의 계층적 상태 머신을 제공하였다 (Bohren & Cousins, 2010).
- FlexBE: ROS 기반의 유연한 행동 실행 엔진으로, 웹 기반 시각적 편집기와 HSM 기능을 통합하였다 (Schillinger et al., 2016).
- SMACC/SMACC2: ROS2를 위한 비동기 상태 머신 프레임워크로, 클라이언트-상태 패턴을 통한 재사용성 향상을 시도하였다.
2. 성공적 적용 사례
2.1 산업용 로봇의 공정 제어
산업용 매니퓰레이터의 반복 공정(pick-and-place, 용접, 도장 등)에서 FSM은 명확하게 정의된 공정 단계를 상태로, 단계 전환 조건을 전이로 대응시켜 효과적으로 적용되었다. 공정의 순차적이고 결정론적인 특성이 FSM의 구조와 잘 부합하며, 상태 수가 제한적이므로 관리가 용이하였다.
2.2 단순 서비스 로봇
안내 로봇, 배달 로봇 등 단순한 임무를 수행하는 서비스 로봇에서 FSM은 “대기 → 임무 수신 → 목표 이동 → 작업 수행 → 복귀“와 같은 선형 임무 흐름을 표현하는 데 적합하였다. 각 상태에서의 행동이 명확하고 전이 조건이 소수인 경우, FSM은 직관적이고 검증 가능한 행동 모델을 제공하였다.
2.3 경쟁 로봇공학
RoboCup, DARPA Grand Challenge 등 로봇 경쟁에서 초기 참가 팀들은 FSM을 기반으로 행동 전략을 구현하였다. 경쟁 초기에는 임무의 복잡도가 상대적으로 낮아 FSM이 효과적이었으나, 임무 복잡도의 증가와 함께 많은 팀이 행동 트리나 태스크 플래닝 기반 접근으로 전환하였다.
3. 적용 한계의 발현 사례
3.1 자율 내비게이션에서의 한계
자율 이동 로봇의 내비게이션에서 FSM은 “경로 계획 → 경로 추종 → 장애물 감지 → 회피 → 경로 재계획 → 복구“의 행동 흐름을 관리한다. 그러나 실제 운용에서는 다음과 같은 복합 상황이 발생한다:
- 장애물 회피 중 새로운 장애물의 등장
- 경로 추종 중 위치 추정(localization)의 실패
- 복구 행동 중 배터리 잔량의 위험 수준 도달
- 통신 단절 상태에서의 자율 판단 요구
이러한 상황의 조합은 “회피_중_위치추정실패_배터리경고“와 같은 복합 상태의 생성을 요구하며, 상태 폭발로 직결된다. ROS2의 Nav2(Navigation2) 프레임워크가 초기의 FSM 기반 설계에서 행동 트리 기반 설계로 전환한 것은 이러한 한계에 대한 직접적 대응이었다 (Macenski et al., 2020).
3.2 매니퓰레이션 작업에서의 한계
로봇 매니퓰레이션에서 물체의 감지, 파지 계획, 파지 실행, 이송, 배치의 각 단계는 다수의 하위 상태를 가지며, 각 단계에서의 실패 유형(물체 미감지, 파지 실패, 슬립 감지, 충돌 감지 등)에 따른 복구 전략이 상이하다. 이러한 실패-복구 조합을 FSM으로 표현하면 상태 수가 급격히 증가하며, 실패 복구 로직과 정상 동작 로직이 혼재되어 가독성이 저하된다.
MoveIt2 프레임워크에서 행동 트리의 활용이 검토되는 것은 매니퓰레이션 작업의 복잡한 실패-복구 패턴을 체계적으로 관리하기 위함이다.
3.3 다중 로봇 조정에서의 한계
다중 로봇 시스템(Multi-Robot System)에서 각 로봇의 FSM이 독립적으로 설계되더라도, 로봇 간의 조정(coordination)—임무 분배, 충돌 회피, 동기화—을 위해서는 로봇 간 상태의 공유와 조정 프로토콜의 정의가 필요하다. 각 로봇의 FSM이 다른 로봇의 상태를 조건으로 참조하면, 시스템 전체의 상태 공간이 개별 로봇 상태 공간의 곱으로 폭증하여 관리 불가능해진다.
4. SMACH에서 행동 트리로의 전환 동인
ROS 생태계에서 SMACH가 널리 사용되었으나, 다음과 같은 실무적 문제가 행동 트리로의 전환을 촉진하였다:
- Python 의존성: SMACH가 Python으로 구현되어 실시간 성능에 제한이 있었다.
- 상태 폭발 관리의 어려움: 복잡한 임무에서 SMACH의 상태 수가 관리 불가능한 수준으로 증가하였다.
- 재사용성의 제한: SMACH 상태의 다른 프로젝트로의 이식이 전이 규칙의 재정의를 요구하였다.
- 동적 재구성의 부재: 런타임에 상태 머신을 변경하는 것이 어려웠다.
Nav2 프레임워크의 행동 트리 채택, BehaviorTree.CPP 라이브러리의 성숙, Groot 편집기의 등장은 ROS2 생태계에서 행동 트리를 사실상 표준 행동 제어 아키텍처로 확립시켰다.
5. 참고 문헌
- Bohren, J., & Cousins, S. (2010). “The SMACH High-Level Executive.” IEEE Robotics & Automation Magazine, 17(4), 18–20.
- Colledanchise, M., & Ögren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
- Macenski, S., Martín, F., White, R., & Clavero, J. G. (2020). “The Marathon 2: A Navigation System.” IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).
- Schillinger, P., Kohlbrecher, S., & von Stryk, O. (2016). “Human-Robot Collaborative High-Level Control with Application to Rescue Robotics.” IEEE International Conference on Robotics and Automation (ICRA), 2796–2801.
v0.1.0