행동트리 (Behavior Tree)

로봇공학
한 줄 정의: 로봇의 행동을 계층적 트리 구조로 표현하고, 시퀀스·셀렉터 등의 제어 노드를 통해 조건에 따라 하위 행동을 선택·실행하는 행동 제어 모델링 기법.

쉽게 풀면

로봇이 할 수 있는 여러 행동들을 나뭇가지 모양으로 정리해두고, 상황에 맞는 가지를 골라 순서대로 실행하게 하는 방법입니다. 예를 들어 셀렉터 노드 아래에 '문이 열려 있으면 들어간다'는 시퀀스와 '노크한다'는 행동을 차례로 매달아 두면, 앞의 것이 실패할 때만 다음 것을 시도하는 식으로 상황에 맞는 행동이 골라집니다.

왜 중요한가

게임 AI에서 로봇공학으로 넘어와 유한상태기계를 빠르게 대체하고 있으며, ROS 2 내비게이션 스택의 작업 흐름도 행동트리로 기술됩니다. 복잡한 임무를 모듈로 나누어 재사용하고, 실패 시 대체 행동으로 자연스럽게 넘어가는 구조가 실무에서 유지보수를 크게 쉽게 만듭니다.

논문에서는 이렇게 쓰입니다

행동 트리는 리프 노드에 행동과 조건을, 내부 노드에 시퀀스·셀렉터·병렬 등의 제어 흐름을 배치한 트리로, 매 주기 루트에서 틱(tick) 신호를 전파해 상태를 갱신한다.

트리의 맨 위에서 신호를 계속 흘려보내면서, 각 가지가 '성공', '실패', '진행중' 중 어떤 상태인지에 따라 다음에 실행할 행동을 결정한다는 의미입니다.

"셀렉터 노드의 자식 순서를 바꾸는 것만으로도 캐릭터가 우선적으로 시도하는 행동의 종류가 달라진다."

트리 구조에서 노드의 배치 순서 자체가 행동 우선순위를 결정한다는 특성을 보여준다.

조금 더 깊게 보면

상태기계는 상태가 늘수록 전이 간선이 폭발하지만 행동트리는 계층적 구성으로 이를 억제한다는 것이 핵심 장점이며, 그 대신 매 주기 루트부터 재평가하는 틱 방식이어서 반응성과 계산 비용이 함께 커집니다. 학습으로 트리를 자동 생성하는 연구가 있으나, 실무에서는 여전히 사람이 설계하는 편이고 조건 노드의 설계가 성능을 좌우합니다. 시퀀스 노드는 자식이 모두 성공해야 성공을 반환하고, 셀렉터 노드는 자식 중 하나라도 성공하면 성공을 반환하는 식으로 서로 반대되는 논리를 가지며, 이 두 종류의 조합만으로도 복잡한 조건부 행동을 표현할 수 있습니다. 유한상태기계와 달리 하위 트리를 독립적으로 설계해 다른 트리에 재사용할 수 있다는 점이 대규모 임무 설계에서 특히 유리합니다.

주의할 점

유한상태기계보다 모듈화와 재사용에는 유리하지만, 트리가 매우 커지면 전체 로직의 가독성이 떨어질 수 있습니다. '진행중(RUNNING)' 상태를 반환하는 노드가 많아지면 매 틱마다 트리 전체를 재평가하는 비용이 커져, 노드 수가 지나치게 많은 트리는 실시간성을 해칠 수 있습니다.

관련 용어