Behavior Based Robotics
I. 개요
로봇을 지능적으로 만들려는 방법은 아마도 누군가는 지금도 고민하고 있을 것이다. 환경을 인식하고 목표로 주어진 태스크(task) 임무를 처리하는 데 있어 로봇의 처리 능력은 앞으로 더더욱 중요한 요소이기 때문이다. 행위 기반의 제어 방법도 역시 로봇을 더 바람직하게 만들기 위한 방법론 중 하나이며, 대표적으로 청소 로봇인 룸바(roomba)에 적용되어 많은 이슈가 되었다. 지금부터 behavior-based robotics에 대한 내용을 정리해보고자 한다.
기존의 방식(non behavior-based?)
로봇의 제어 방법론 중 보편적으로 생각할 수 있는 것은 에이전트(agent)의 제어 방식과 유사하다. 외부 환경에 대하여 인식(sensing)하고 생각(think)하고 그리고 행동하는 것이다. 보통 생각하는 과정이 생략되면 반응적(reactive)라고 하며, 생각하는 과정이 포함되면 사고적인(d*?)이라고 하기도 한다. 생각하는 과정에 있어서는 규칙 기반의 엔진이나 스크립트 또는 신경망 등 여러 가지 알고리즘을 사용하곤 했다.
위와 같은 방식에 있어서 엔지니어들은 문제가 있다는 것을 알기 시작했다. 생각하는 방식에 있어 외부 환경에 대하여 기술하고 규칙화하고 플래닝(planning) 하기가 너무나 어렵다는 것이다. 특히 모바일 로봇에 있어서는 주위 환경이 동적 환경(dynamic environment)이기에 지능적인 처리를 하기가 너무나도 어렵다는 것이다.
II. 행위 기반의 로보틱스(behavior-based robotics)
행위(behavior)란 무엇인가?
행위 기반의 로보틱스인데 행위를 먼저 알아보자. 행위란 무엇일까? 액션(action)보다는 조금 더 큰 개념으로 보기도 한다. 특정 목적을 기반으로 진행되는 액션들의 묶음이라고 생각한다. 행위에 있어 정확한 경계선(boundary)은 없다. 다만 프로그래밍 언어에도 모듈(module)이라는 개념이 있듯이 어쩌면 편의에 따라, 또는 사용 목적에 따라 구분되어 진 것이라 생각한다. 프로그램 언어에서의 모듈이 바로 로봇에서는 행위라 생각하면 얼추 맞다.
1. 행위의 유형(type) - Servo and ballistic behaviors 단순한 구성을 원칙적으로 유지하려는(primitive) 행위 그 자체에 대한 이해를 돕기 위해 행위를 유형에 따라 분류해 보자. 구성 방식의 특성에 따라 2가지 정도로 나뉠 수 있다. 첫째가 서보(servo) 기반의 행위이며, 둘째가 시나리오 기반(ballistic) 기반의 행위가 있다.
- 서보 기반의 행위 : 피드백 기구(closed loop) 기반의 센서와 장치 출력 및 피드백의 연속적 제어 방식으로 구성 가능한 행위를 말한다. 가령 Wandering 이나 빛의 강도에 따라 전진과 후진이 제어되는 행위임
- 시나리오 기반 행위 : 행위에 대한 제어 방식이 외부 이벤트에 따른 시나리오 혹은 FSM 와 같은 제어 방식이 포함되어 있는 행위임
행위의 유형을 위와 같이 설명을 길게? 작성한 이유가 있는데 행위 기반의 로보틱스에서 바람직한 행위 제어 방식은 서보 기반의 행위이며 시나리오 기반의 행위는 가급적 사용을 지양해야 한다. 시나리오 기반의 행위들을 몇 개의 서보 기반 행위들로 세분화될 수 있는지 고민을 해야 한다는 의미이기도 하다. 그러한 이유는 시나리오는 다이나믹한 외부 환경에 대해서 서보 기반의 행위보다는 적응력이 약하기 때문이다.
2. 행위의 기본 구성 행위에는 트리거(Trigger)와 제어를 위한 컨트롤(Control)이 포함되어 있다. 트리거는 행위가 동작되는 조건과 같다.

행위 기반에서의 방식에서 행위 내 트리거가 포함되어 있다는 사실을 유심히 살펴볼 필요가 있다. 보통 기존 방식에서는 행위를 중앙 집중적인 외부 모듈에서 행위에 대한 시작과 중지를 한다.
행위 기반(behavior-based)라는 의미는 무엇일까?
기존의 방식은 로봇이 제어되기까지 인식, 판단, 액션이라는 전체 흐름을 형성하면서 진행되는 데 반해 행위 기반은 (인식, 액션)이라는 모듈을 N개 구성하고 조율하는 식으로 제어를 진행한다고 생각하면 된다. (이후 그림 추가) 판단이라는 과정에서 발생할 수 있는 오묘한 복잡성을 어쩌면 역발상적인 접근으로 기본적으로 행위는 간단하게 하되, 다만 행위간 조합으로 그 오묘함을 실현하고자 하는 것이다.
Arbiter
행위 기반(behavior-based)에서는 Arbiter라는 기능이 필요하다. 우리말 사전에 의하면 조정자라는 뜻이다. 행위가 한 개가 아닌 여러 개 구성될 수 있으며, 따라서 동시간에 같은 리소스 (가령 바퀴 등)을 사용하는 경우가 불가피하게 생긴다 이럴 경우 행위 중 하나를 선택해야 한다. 이 과정(선택)에서 필요한 기능이 Arbiter이다. arbiter는 보통 행위간 우선 순위(priority)를 할당하고 조정이 필요할 시 우선 순위가 높은 행위를 선택하도록 한다.
Subsumption architecture
행위 기반의 로보틱스를 언급할 때 빠질 수 없는 분야가 바로 Subsumption architecture라는 방법론이다. Subsumption은 포섭이라는 의미인데 아마도 행위간 계층 구조로부터 생긴 단어인 듯 한다. Subsumption architecture는 1896년에 인공지능 분야에 있어 대가라고 할 수 있는 Rodney Brooks에 의해 제안되어 더욱 유명해 졌다. Subsumption architecture이 바로 결국 지금까지 언급된 행위 기반의 로보틱스의 분류 중 가장 정립된 방법론 중 하나이다. 그렇다면 Subsumption architecture의 장점을 살펴 보자 (wiki 참조) - 장점 (advantages)
- 모듈식으로 구성
- 계층적으로 구성되어 iterative development가 가능함
아래 그림은 Subsumption architecture을 사용한 예이다. 그림에서 보면 여러 개의 행위를 계층적으로 구성하고 계층간 행위가 서클 모양으로 조정되는 것을 확인할 수 있다.

Subsumption architecture에는 두 가지 유형의 Arbiter가 있다.
- S (suppressor) : 우선 순위가 높은 상위 행위가 하위 행위를 억압(suppress) 할 수 있지만 상위 행위가 종료되면 다시 하위 행위가 동작하는 식의 조정
- I (inhibitor) : 우선 순위가 높은 상위 행위가 하위 행위를 억제(inhibit)하면 상위 행위가 종료되더라도 하위 행위가 동작하지 못하는 식의 조정
참고
- Robot Programming : A Practical Guide to Behavior-Based Robotics / Joseph L.Jones / McGraw Hill / ISBN 0-07-142778-3
- wiki : Subsumption architecture
Recent Comments