1314.41 드론 이착륙 액션의 PDDL 모델링 사례

1314.41 드론 이착륙 액션의 PDDL 모델링 사례

1. 드론 도메인의 특수성

드론(무인 항공기, UAV)의 PDDL 모델링은 지상 로봇과 구별되는 다음의 특수한 상태 요소를 포함한다:

  • 비행 상태: 지상(landed), 공중(airborne)의 구분
  • 이착륙 절차: 이륙(takeoff)과 착륙(landing)이 별도의 액션으로 모델링됨
  • 3차원 공간: 지상 위치(landing pad)와 공중 위치(airspace)의 구분
  • 비행 가능 조건: 기상, 비행 허가, 배터리 등의 추가 전제 조건

2. 타입 및 술어 설계

(define (domain drone_operations)
    (:requirements :strips :typing :durative-actions :numeric-fluents)
    (:types
        drone - object
        location - object
        landing_pad airspace - location
    )
    (:predicates
        (drone_at ?d - drone ?l - location)
        (landed ?d - drone)
        (airborne ?d - drone)
        (pad_free ?p - landing_pad)
        (flight_permitted ?a - airspace)
        (connected_air ?a1 - airspace ?a2 - airspace)
        (above ?a - airspace ?p - landing_pad)
    )
    (:functions
        (battery_level ?d - drone)
        (takeoff_energy ?d - drone)
        (landing_energy ?d - drone)
        (flight_energy ?a1 - airspace ?a2 - airspace)
    )
)

3. 이륙 액션

(:durative-action takeoff
    :parameters (?d - drone ?pad - landing_pad ?air - airspace)
    :duration (= ?duration 10)
    :condition (and
        (at start (drone_at ?d ?pad))
        (at start (landed ?d))
        (at start (above ?air ?pad))
        (at start (>= (battery_level ?d) (takeoff_energy ?d)))
        (over all (flight_permitted ?air))
    )
    :effect (and
        (at start (not (landed ?d)))
        (at start (not (drone_at ?d ?pad)))
        (at start (pad_free ?pad))
        (at end (airborne ?d))
        (at end (drone_at ?d ?air))
        (at end (decrease (battery_level ?d) (takeoff_energy ?d)))
    )
)

이륙 액션의 핵심 모델링 요소:

  • 시작 시: 착륙 상태를 해제하고, 착륙 패드를 반환한다.
  • 이륙 중: 비행 허가 상태가 유지되어야 한다.
  • 종료 시: 공중 상태로 전환하고, 공역 위치에 도달한다.

4. 착륙 액션

(:durative-action land
    :parameters (?d - drone ?air - airspace ?pad - landing_pad)
    :duration (= ?duration 15)
    :condition (and
        (at start (drone_at ?d ?air))
        (at start (airborne ?d))
        (at start (above ?air ?pad))
        (at start (pad_free ?pad))
        (at start (>= (battery_level ?d) (landing_energy ?d)))
        (over all (flight_permitted ?air))
    )
    :effect (and
        (at start (not (airborne ?d)))
        (at start (not (drone_at ?d ?air)))
        (at start (not (pad_free ?pad)))
        (at end (landed ?d))
        (at end (drone_at ?d ?pad))
        (at end (decrease (battery_level ?d) (landing_energy ?d)))
    )
)

5. 공중 이동 액션

(:durative-action fly
    :parameters (?d - drone ?from - airspace ?to - airspace)
    :duration (= ?duration (/ (air_distance ?from ?to) (flight_speed ?d)))
    :condition (and
        (at start (drone_at ?d ?from))
        (at start (airborne ?d))
        (at start (connected_air ?from ?to))
        (at start (>= (battery_level ?d) (flight_energy ?from ?to)))
        (over all (flight_permitted ?from))
        (over all (flight_permitted ?to))
    )
    :effect (and
        (at start (not (drone_at ?d ?from)))
        (at end (drone_at ?d ?to))
        (at end (decrease (battery_level ?d) (flight_energy ?from ?to)))
    )
)

6. 호버링 액션

특정 위치에서 공중 정지하여 임무를 수행하는 액션:

(:durative-action hover_survey
    :parameters (?d - drone ?air - airspace)
    :duration (= ?duration 30)
    :condition (and
        (at start (drone_at ?d ?air))
        (at start (airborne ?d))
        (over all (drone_at ?d ?air))
        (over all (>= (battery_level ?d) 10))
    )
    :effect (and
        (at end (surveyed ?air))
        (at end (decrease (battery_level ?d) (* ?duration 0.3)))
    )
)

7. 비상 착륙 액션

배터리 부족 시 가장 가까운 착륙 패드로의 비상 착륙:

(:action emergency_land
    :parameters (?d - drone ?air - airspace ?pad - landing_pad)
    :precondition (and
        (drone_at ?d ?air)
        (airborne ?d)
        (above ?air ?pad)
        (pad_free ?pad)
        (< (battery_level ?d) 15)
    )
    :effect (and
        (landed ?d)
        (drone_at ?d ?pad)
        (not (airborne ?d))
        (not (drone_at ?d ?air))
        (not (pad_free ?pad))
        (emergency_landed ?d)
    )
)

8. 설계 시 고려사항

  1. landed와 airborne의 상호 배타성을 모든 관련 액션에서 유지해야 한다.
  2. 착륙 패드의 가용성(pad_free)을 다중 드론 환경에서 정확히 관리해야 한다.
  3. 이륙과 착륙의 에너지 비용을 별도로 모델링하여 현실적인 배터리 관리를 가능하게 한다.
  4. 비행 허가 조건over all 조건으로 배치하여 비행 중 허가 취소 시 계획을 무효화한다.

9. 참고 문헌

  • Ghallab, M., Nau, D., & Traverso, P. (2004). Automated Planning: Theory and Practice. Morgan Kaufmann.
  • Fox, M. & Long, D. (2003). “PDDL2.1: An Extension to PDDL for Expressing Temporal Planning Domains.” Journal of Artificial Intelligence Research, 20, 61–124.
  • Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.