새로운 목표에 대한 동적 행동 생성 (Dynamic Action Generation for New Goals)
1. 개요
자율 계획의 가장 강력한 특성 중 하나는 새로운 목표가 주어졌을 때 코드 수정 없이 행동 시퀀스를 동적으로 생성하는 능력이다. 이는 하드코딩 방식에서 새 목표마다 규칙을 수동으로 추가하여야 하는 것과 근본적으로 대비된다.
2. 동적 행동 생성 메커니즘
2.1 목표 변경에 의한 재계획
시나리오 1:
목표: on(box1, table_A)
계획: [move(robot, start, shelf), pick(robot, box1), move(robot, shelf, table_A), place(robot, box1)]
시나리오 2 (목표 변경):
목표: on(box1, table_B) ← 목표만 변경
계획: [move(robot, start, shelf), pick(robot, box1), move(robot, shelf, table_B), place(robot, box1)]
→ 계획기가 자동으로 새로운 경로 생성
2.2 다중 목표의 동적 처리
목표: on(box1, table_A) ∧ on(box2, table_B) ∧ on(box3, table_C)
→ 계획기가 3개 물체의 배달을 통합적으로 최적화한 단일 계획 생성
3. 하드코딩과의 비교 예시
3.1 물류 로봇 시나리오
5개의 물품을 3개의 목적지로 배달하는 임무이다.
| 접근 | 구현 방식 | 변경 대응 |
|---|---|---|
| 하드코딩 | 5 \times 3 = 15개의 배달 규칙 정의 | 물품/목적지 추가 시 규칙 추가 필요 |
| 자율 계획 | move, pick, place 3개 액션 + 목표 정의 | 물품/목적지 추가 시 문제 정의만 갱신 |
물품 수가 50개, 목적지가 20개로 증가하면:
- 하드코딩: 50 \times 20 = 1{,}000개 규칙 + 순서 최적화 규칙
- 자율 계획: 동일한 3개 액션 + 목표 정의 갱신
4. ROS2에서의 동적 목표 처리
PlanSys2에서 새로운 목표를 동적으로 설정하는 과정이다.
// 문제 전문가에게 목표 추가
problem_expert_client->addGoal(
plansys2::Goal("(on box1 table_A)"));
// 목표 변경
problem_expert_client->clearGoal();
problem_expert_client->addGoal(
plansys2::Goal("(on box1 table_B)"));
// 계획기 호출
auto plan = planner_client->getPlan(
domain_expert_client->getDomain(),
problem_expert_client->getProblem());
5. 동적 생성의 한계
5.1 계산 시간
새로운 목표에 대한 계획 생성은 계산 시간을 요구한다. 실시간 반응이 필요한 상황에서는 계획 생성 지연이 문제가 될 수 있다.
5.2 도메인 모델의 완전성
도메인에 정의되지 않은 행동은 계획에 포함될 수 없다. 새로운 유형의 행동이 필요하면 도메인 모델을 갱신하여야 한다.
6. 참고 문헌
- Ghallab, M., Nau, D., & Traverso, P. (2016). Automated Planning and Acting. Cambridge University Press.
- PlanSys2 공식 문서. https://plansys2.github.io/
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v0.1 | 2026-04-05 | 초안 작성 |