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. 설계 시 고려사항
- landed와 airborne의 상호 배타성을 모든 관련 액션에서 유지해야 한다.
- 착륙 패드의 가용성(
pad_free)을 다중 드론 환경에서 정확히 관리해야 한다. - 이륙과 착륙의 에너지 비용을 별도로 모델링하여 현실적인 배터리 관리를 가능하게 한다.
- 비행 허가 조건을
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.