1314.3 액션 이름 규약과 명명 전략

1. 액션 이름의 구문적 제약

PDDL에서 액션 이름은 :action 키워드 다음에 위치하는 심볼(symbol)로서, 도메인 내의 각 액션 스키마를 고유하게 식별하는 역할을 한다. PDDL 구문 규칙에 따라 액션 이름에 적용되는 제약은 다음과 같다:

  1. 허용 문자: 알파벳 대소문자(a-z, A-Z), 숫자(0-9), 하이픈(-), 밑줄(_)을 사용할 수 있다.
  2. 시작 문자: 알파벳 문자로 시작해야 한다. 숫자나 특수 문자로 시작할 수 없다.
  3. 대소문자 비구분: PDDL 파서는 대부분 대소문자를 구분하지 않으므로, Movemove는 동일한 액션으로 처리된다.
  4. 예약어 회피: PDDL 키워드(and, or, not, forall, exists, when, define, domain 등)와 동일한 이름을 사용할 수 없다.
  5. 공백 및 특수 문자 금지: 공백, 괄호, 콜론 등의 특수 문자는 S-Expression 구문의 구분자로 사용되므로 이름에 포함할 수 없다.

2. 명명 전략의 원칙

PDDL 도메인이 복잡해질수록 액션 이름의 체계적 관리가 중요해진다. 명확하고 일관된 명명 전략은 도메인의 가독성, 유지 보수성, 디버깅 효율성을 크게 향상시킨다. 다음은 학술 문헌과 실무 경험에 기반한 주요 명명 원칙이다.

2.1 동사 중심 명명

액션 이름은 에이전트가 수행하는 행동을 명확히 반영하는 동사 또는 동사구로 명명하는 것이 권장된다. 이는 액션의 의미를 직관적으로 전달하며, 도메인 모델을 처음 접하는 개발자의 이해를 돕는다:

;; 권장: 동사 중심 명명
(:action move ...)
(:action pick_up ...)
(:action place_down ...)
(:action inspect ...)
(:action charge_battery ...)

;; 비권장: 명사 중심 또는 모호한 명명
(:action movement ...)
(:action object_pickup ...)
(:action action1 ...)

2.2 일관된 명명 규칙

하나의 도메인 내에서는 단일한 명명 규칙(naming convention)을 일관되게 적용해야 한다. 주로 사용되는 명명 규칙은 다음과 같다:

명명 규칙예시비고
스네이크 케이스(snake_case)pick_up, move_to, charge_batteryPDDL 커뮤니티에서 가장 널리 사용됨
하이픈 연결(kebab-case)pick-up, move-to, charge-batteryLisp 전통에 부합함
단일 단어pick, move, charge간결하나 의미 충돌 가능

스네이크 케이스와 하이픈 연결 방식이 가장 널리 사용되며, 단일 도메인 내에서 두 방식을 혼용하는 것은 피해야 한다. PlanSys2를 사용하는 경우, 액션 이름이 ROS2 노드 식별자로 매핑되므로 ROS2의 명명 규칙(소문자와 밑줄)과의 호환성을 고려하여 스네이크 케이스를 사용하는 것이 실용적이다.

2.3 의미적 명확성

액션 이름은 해당 행동의 의미를 충분히 구별할 수 있을 만큼 구체적이어야 한다. 특히 유사한 행동이 서로 다른 맥락에서 수행되는 경우, 맥락을 구분하는 수식어를 포함해야 한다:

;; 이동 관련 액션의 의미적 구분
(:action navigate ...)        ;; 자율 내비게이션
(:action teleport ...)        ;; 시뮬레이션 환경의 즉시 이동
(:action follow_path ...)     ;; 사전 정의된 경로 추종
(:action approach ...)        ;; 목표 객체에 접근

;; 물체 조작 관련 액션의 의미적 구분
(:action grasp ...)           ;; 그리퍼로 파지
(:action suction_pick ...)    ;; 흡착 방식 파지
(:action push ...)            ;; 밀기
(:action pull ...)            ;; 당기기

2.4 추상화 수준의 반영

액션 이름은 해당 액션이 위치하는 추상화 수준을 반영해야 한다. PDDL 도메인은 임무 계획 수준의 추상 모델이므로, 저수준의 모터 명령이나 제어 신호를 직접 반영하는 이름보다는 임무 수준의 행동을 표현하는 이름이 적절하다:

;; 적절한 추상화 수준
(:action deliver_package ...)
(:action patrol_area ...)
(:action dock_for_charging ...)

;; 지나치게 저수준의 명명 (PDDL 도메인에서 비권장)
(:action set_joint_angle ...)
(:action send_velocity_command ...)
(:action activate_motor ...)

3. 다중 에이전트 도메인에서의 명명 전략

다중 로봇 도메인에서는 서로 다른 유형의 에이전트가 고유한 능력(capability)을 가질 수 있다. 이 경우 액션 이름에 에이전트 유형을 명시적으로 포함하는 전략과, 매개변수의 타입 제약을 통해 에이전트를 구분하는 전략이 존재한다.

;; 전략 1: 액션 이름에 에이전트 유형 포함
(:action ground_robot_move ...)
(:action aerial_robot_fly ...)
(:action manipulator_pick ...)

;; 전략 2: 타입 계층을 활용한 단일 액션 명명
(:types
    robot - object
    ground_robot aerial_robot - robot
)
(:action move
    :parameters (?r - ground_robot ?from - waypoint ?to - waypoint)
    ...)
(:action fly
    :parameters (?r - aerial_robot ?from - airspace ?to - airspace)
    ...)

전략 2가 도메인의 타입 시스템을 활용하므로 더 간결하고 확장 가능하다. 그러나 동일 이름의 액션이 서로 다른 타입의 에이전트에 대해 다른 의미를 가져서는 안 된다. 이름이 같은 액션은 의미론적으로 동등한 행동을 나타내어야 하며, 본질적으로 다른 행동에는 구별되는 이름을 부여해야 한다.

4. PlanSys2와의 호환성을 고려한 명명

PlanSys2에서 PDDL 액션 이름은 ROS2 액션 노드의 식별자로 직접 매핑된다. 따라서 PlanSys2 기반 시스템에서는 다음의 추가적인 명명 제약을 고려해야 한다:

  1. 소문자 사용: ROS2의 노드 및 토픽 명명 규칙에 따라 소문자만 사용한다.
  2. 하이픈 회피: ROS2 식별자에서 하이픈은 허용되지 않으므로, 밑줄을 단어 구분자로 사용한다.
  3. 길이 제한: 지나치게 긴 액션 이름은 ROS2 로그 출력과 디버깅 과정에서 가독성을 저하시키므로, 간결한 표현을 지향한다.
;; PlanSys2 호환 명명
(:action move ...)
(:action pick_up ...)
(:action navigate_to ...)

;; PlanSys2 비호환 명명 (회피 권장)
(:action Move-To-Location ...)
(:action PICK_UP ...)

5. 명명 시 일반적인 오류

PDDL 도메인 설계에서 액션 이름과 관련하여 빈번히 발생하는 오류는 다음과 같다:

  1. 동음이의 액션: 서로 다른 행동에 동일하거나 유사한 이름을 부여하여 혼동을 야기하는 경우이다. 예를 들어, move가 로봇 이동과 물체 이동을 모두 지칭하면 도메인의 의미가 모호해진다.

  2. 지나친 약어 사용: nav, mv, pu 등의 과도한 약어는 도메인의 가독성을 현저히 저하시킨다. 약어를 사용하더라도 해당 분야에서 보편적으로 통용되는 경우에 한정해야 한다.

  3. 버전 번호 포함: move_v2, pick_new 등 버전 번호나 수정 표시를 액션 이름에 포함하는 것은 도메인 관리의 혼란을 초래한다. 도메인 파일 자체를 버전 관리 시스템으로 관리하는 것이 바람직하다.

  4. PDDL 예약어 충돌: not, and, when 등의 PDDL 예약어와 동일한 이름을 사용하면 파싱 오류가 발생한다.

6. 참고 문헌

  • Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.
  • Ghallab, M., Nau, D., & Traverso, P. (2004). Automated Planning: Theory and Practice. Morgan Kaufmann.
  • Gonzalez, F., Martin, F., Matellán, V., & Rodriguez, F. J. (2021). “PlanSys2: A Planning System Framework for ROS2.” IEEE International Conference on Autonomous Robot Systems and Competitions (ICARSC).
  • McDermott, D., Ghallab, M., Howe, A., Knoblock, C., Ram, A., Veloso, M., Weld, D., & Wilkins, D. (1998). “PDDL—The Planning Domain Definition Language.” Technical Report CVC TR-98-003, Yale Center for Computational Vision and Control.