1317.27 PlanSys2의 액션 실행 아키텍처

1. 액션 실행 아키텍처의 개요

PlanSys2에서 액션 실행 ���키텍처(action execution architecture)는 플래너가 생성한 추상적 계획(abstract plan)을 실제 로봇 행동으로 변환하는 계층이다. PDDL 수준의 액션(예: (move robot1 kitchen bedroom))은 논리적 연산자에 불과하므로, 이를 실제 물리적 행동(이동, 물체 파지, 센서 활성화 등)으로 구현하기 위해서는 각 PDDL 액션을 구체적인 ROS2 행동 모듈에 매핑하는 메커니즘이 필요하다. PlanSys2의 실행기 노드(Executor Node)는 이 매핑과 스케줄링을 담당하는 중앙 제어기이며, 행동 트리(behavior tree)를 실행 엔진으로 활용하여 액션의 디스패치, 모니터��, 완료 처리를 수행한다(Martín et al., 2021).

2. 실행기 노드의 아키텍처

2.1 실행기 노드의 ��심 구성 요소

실행기 노드는 다음과 같은 핵심 구성 요소로 이루어져 있다.

  • 계획 수신기(Plan Receiver): 플래너 노드로부터 수립된 계획(Plan 자료 구조)을 수신하는 ROS2 액션 서버이다. 상위 수준 노드는 ExecutePlan 액션을 통해 실행기에 계획의 실행을 요청한다.
  • 계획 분석기(Plan Analyzer): 수신된 계획의 시간적 구조를 분석하여 액션 간의 실행 순서와 병렬 실행 가능성을 파악한다.
  • 행동 트리 생성기(Behavior Tree Generator): 계획의 구조에 기반하여 실행을 제어하는 행동 트리를 동적으로 생성한다.
  • 행동 트리 엔진(Behavior Tree Engine): 생성된 행동 트리를 틱(tick) 단위로 실행하며, 각 액션 노드의 상태를 모니터링한다.
  • 액션 디스패처(Action Dispatcher): 행동 트리의 각 액션 노드가 해당하는 ROS2 액션 클라이언트를 통해 액션 수행기에 실행을 요청한다.

2.2 실행 흐름

계획 실행의 전체 흐름은 다음과 ���다.

  1. 상위 수준 노드가 ExecutePlan 액션 목표(goal)를 실행기 노드에 전송한다.
  2. 실행�� 노드가 계획을 수신하고 계획 분석기를 통해 시간적 구조를 파악한다.
  3. 행동 트리 생성기가 계획에 대응하는 행동 트리를 생성한다.
  4. 행동 트리 엔진이 주기적으로 트리를 틱하며, 각 액션 노드를 순차적 또는 병렬적으로 활성화한다.
  5. 활성화된 액션 노드가 ROS2 액션 클라이언트를 통해 해당 액션 수행기에 실행을 요청한다.
  6. 액션 수행기의 피드백과 결과를 수신하여 트리의 상태를 갱신한다.
  7. 모든 액션이 성공적으로 완료되면 ExecutePlan 액션의 결과를 성공으로 반환한다.

3. PDDL 액션에서 ROS2 액션으로의 매핑

3.1 이름 기반 매핑 규약

PlanSys2는 PDDL 액션 이름과 ROS2 액션 수행기 노드의 이름을 매핑하기 위해 이름 기반 규약(name-based convention)을 사용한다. PDDL 도메인에 정의된 액션의 이름이 ROS2 액션 수행기 노드의 이름과 일치해야 한다. 예�� 들어, PDDL 액션 move에 대응하는 액션 수행기 노드는 move라는 이름으로 ROS2 시스템에 등록되어야 한다.

이 매핑 규약을 통해, 실행기 노드는 계획에 포함된 각 PDDL 액션에 대해 동일한 이름의 ROS2 액션 서버를 자동으로 탐색하고 연결할 수 있다.

3.2 인자의 전달

PDDL 액션의 인자(예: robot1, kitchen, bedroom)는 액션 수행기에 문자열 목록 형태로 전달된다. 액션 수행기는 이 인자를 해석하여 구체적인 로봇 행동 파라미터로 변환한다. 예를 들어, move 액션 수행기는 kitchenbedroom이라는 인자를 실제 좌표나 네비게이션 목표점(goal pose)으로 매핑하여 ���봇의 이동을 제어한다.

4. 행동 트리 기반 실행 제어

4.1 동적 행동 트리 생성

실행기 노드는 수신된 계획으로부터 행동 트리를 동적으로 생성한다. 이 행동 트리는 계획의 시간적 구조를 반영하여 다음과 같은 구성을 가진다.

  • 순차 실행 구간: 시간적 의존성이 있는 액션들은 Sequence 제어 노드(control node) 아래에 배치된다.
  • 병렬 실행 구간: 동일한 시작 시각을 가진 액션들은 Parallel 제어 노드 아래에 배치되어 동시에 실행된다.
  • 액션 노드: 각 PDDL 액션은 행동 트리의 리프 노드(leaf node)로 변환되며, 이 노드가 ROS2 액션 클라이언트와 연결된다.

예를 들어, 다음과 같은 계획이 있다고 하자.

0.000: (move robot1 kitchen corridor) [5.000]
0.000: (charge robot2 station) [10.000]
5.001: (pick robot1 cup corridor) [3.000]

이 계획은 다음과 같은 행동 트리 구조로 변환된다.

Sequence
├── Parallel (시각 0.000)
│   ├── ActionNode: move(robot1, kitchen, corridor)
│   └── ActionNode: charge(robot2, station)
└── Sequence (시각 5.001)
    └── ActionNode: pick(robot1, cup, corridor)

4.2 틱 기반 실행 모델

행동 트리 ��진은 일정한 주기(일반적���로 100Hz)로 트���를 틱한다. 각 틱에서 트리의 루트 노드부터 시작하여 현재 활성화된 노드들의 상태가 평가된다. 각 액션 노드는 다음과 같은 상태 중 하나를 반환한다.

상태의미
IDLE아직 실행이 시작되지 않은 상태
RUNNING액션이 실행 중인 상태
SUCCESS액션이 성공적으로 완료된 상태
FAILURE액션이 실패한 상태

Sequence 제어 노드는 자식 노드들을 순서대로 실행하며, 모든 자식이 SUCCESS를 반환하면 자신도 SUCCESS를 반환한다. Parallel 제어 노드는 모든 자식 노드를 동시에 틱하며, 모든 ���식이 SUCCESS를 반환��야 SUCCESS를 반환한다. 특정 자식이 FAILURE를 반환하면, 해당 제어 노드도 FAILURE를 반환하여 상위 계층으로 실패를 전파한다.

5. 액션 수행기의 인터페이스

5.1 ActionExecutorClient 기반 클래스

PlanSys2는 액션 수행기를 구현하기 위한 기반 클래스인 ActionExecutorClient를 제공한다. 개발자는 이 클래스를 상속하여 각 PDDL 액션에 대응하는 구체적 행동을 구현한다.

ActionExecutorClient가 제공하는 주요 콜��� 메서드는 다음과 같다.

콜백 메서드호출 시점역할
do_work()매 틱마다액션의 주기적 작업을 수행한다

do_work() 콜백 내에서 개발자는 로봇 하드웨어 제어, 센서 데이터 처리, 외부 서비스 호출 등 실제 행동 로직을 구현한다. 액션의 완료 시에는 finish 메서드를 호출하여 성공 또는 실패를 보고하고, 진행 중에는 send_feedback 메서드를 통해 진행률 등의 피드백을 전송한다.

5.2 ROS2 액션 프로토콜의 활용

실행기 노드와 액션 수행기 사이의 통신은 ROS2 액션 프로토콜을 기반으로 한다. ROS2 ��션은 목표(goal) 전송, 피드백(feedback) 수신, 결과(result) 수신의 세 단계로 구성되는 비동기 통신 패턴이다.

  • 목표 전송: 실행기 노드의 액션 클라이언트가 PDDL 액션 이름과 인자를 포함한 목표를 액�� 수행기의 액션 서버에 전송한다.
  • 피드백 수신: 액션 수행기는 실행 중 주기적으로 진행률, 현재 상태 등의 피드백을 전송한다. 실행기 노드는 이 피드백을 수집하여 전체 계획의 진행 상태를 모니터링한다.
  • 결과 수신: 액션이 완료되면 액션 수행기가 성공 또는 실패 결과를 반환��다. 실행기 노드는 이 결과에 따라 행동 트리의 해당 노드 상태를 갱신한다.

6. 계획 실행의 상태 관리

실행기 노드는 ExecutePlan ROS2 액션 서버로서 계획 실행의 전체 상태를 관리한다. 상위 수준 노드는 이 액션 인터페���스를 통해 다음과 같은 제어를 수행할 수 있다.

  • 실행 시작: 계획을 포함한 목표를 전송하여 실행을 개시한다.
  • 진행 모니터링: 피드백을 통해 현재 실행 중인 액션, 완료된 액션, 전체 진행률 등을 실시��으로 확인한다.
  • 실행 취소: 목표 취소(cancel goal) 요청을 통해 계획 실행을 중단할 수 있다. 실행기 노드는 취소 요청을 수신하면 현재 실행 중인 모든 액션에 취소를 전파한다.

이러한 액션 실행 아키텍처는 PDDL의 추상적 계획과 로봇의 물리적 행동 사이의 간극을 체계적으로 메우는 역할을 수행하며, PlanSys2가 실용적인 로봇 임무 계획 시스템으로 기능할 수 있게 하는 핵심 구성 요소이다(Martín et al., 2021; Colledanchise & Ögren, 2018).


참고 문헌

  • Martín, F., Cañas, J. M., Ginés, J., & Fuentetaja, R. (2021). “PlanSys2: A Planning System Framework for ROS2.” IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).
  • 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).

버전: v1.0