1317.41 PlanSys2와 Nav2의 통합 시나리오
1. 통합의 동기
Nav2(Navigation2)는 ROS2 생태계에서 이동 로봇의 자율 주행을 담당하는 표준 네비게이션 프레임워크이다(Macenski et al., 2020). PlanSys2와 Nav2의 통합은 PDDL 수준의 임무 계획과 물리적 로봇 이동을 연결하는 전형적인 사례로, 이동 로봇 기반 자율 임무 시스템의 구현에 핵심적이다. 이 통합을 통해, PlanSys2가 수립한 계획의 이동 액션이 Nav2의 경로 계획과 추종(path following) 기능을 활용하여 실행된다(Martín et al., 2021).
2. 통합 아키텍처
2.1 계층 구조
PlanSys2와 Nav2의 통합은 다음과 같은 계층 구조를 형성한다.
| 계층 | 역할 | 담당 시스템 |
|---|---|---|
| 임무 계획 계층 | PDDL 기반 임무 계획 수립 | PlanSys2 |
| 임무 실행 계층 | 계획의 액션 디스패치와 모니터링 | PlanSys2 실행기 |
| 행동 계층 | 개별 액션의 구체적 행동 구현 | 액션 수행기 |
| 네비게이션 계층 | 경로 계획, 장애물 회피, 위치 추적 | Nav2 |
2.2 이동 액션 수행기
PlanSys2의 move 액션에 대응하는 수행기는 Nav2의 NavigateToPose ROS2 액션 클라이언트를 내부적으로 사용한다. PDDL의 이동 액션이 실행되면, 수행기는 목표 위치의 심볼릭 이름을 실제 좌표로 변환하고, Nav2에 네비게이션을 요청한다.
class MoveAction : public plansys2::ActionExecutorClient
{
rclcpp_action::Client<nav2_msgs::action::NavigateToPose>::SharedPtr
nav_client_;
void do_work() override
{
auto args = get_arguments();
auto goal = create_nav_goal(args[2]); // 목표 위치
nav_client_->async_send_goal(goal);
// Nav2 피드백을 PlanSys2 피드백으로 변환
}
};
3. PDDL 도메인 설계
Nav2와의 통합을 위한 PDDL 도메인은 일반적으로 다음과 같은 구조를 가진다.
(define (domain navigation)
(:requirements :strips :typing :durative-actions)
(:types robot location)
(:predicates
(at ?r - robot ?l - location)
(connected ?l1 - location ?l2 - location))
(:durative-action move
:parameters (?r - robot ?from - location ?to - location)
:duration (= ?duration 10)
:condition (and
(at start (at ?r ?from))
(at start (connected ?from ?to)))
:effect (and
(at start (not (at ?r ?from)))
(at end (at ?r ?to)))))
4. Nav2 피드백의 활용
Nav2는 네비게이션 진행 중 현재 위치, 남은 거리, 예상 소요 시간 등의 피드백을 제공한다. 이동 액션 수행기는 이 피드백을 수신하여 PlanSys2의 피드백 형식으로 변환한다. 예를 들어, 남은 거리 비율을 완료율로 변환하여 send_feedback() 메서드를 통해 보고한다.
\text{progress} = 1.0 - \frac{d_{remaining}}{d_{total}}
여기서 d_{remaining}은 목표까지의 남은 거리이고, d_{total}은 초기 전체 거리이다.
5. 네비게이션 실패의 처리
Nav2의 네비게이션이 실패하는 경우(경로를 찾을 수 없음, 장애물에 의한 차단, 시간 초과 등), 이동 액션 수행기는 finish(false, ...) 를 호출하여 PlanSys2에 실패를 보고한다. 이 실패는 PlanSys2의 오류 처리 메커니즘을 통해 상위 수준으로 전파되며, 재계획의 트리거가 될 수 있다.
6. 통합 시나리오 예시
전형적인 PlanSys2-Nav2 통합 시나리오는 로봇이 여러 위치를 순차적으로 방문하면서 각 위치에서 작업을 수행하는 임무이다.
- PlanSys2가 “주방에서 물건을 집어 침실로 배달“이라는 목표에 대해 계획을 수립한다.
- 계획:
move(robot1, dock, kitchen)→pick(robot1, cup, kitchen)→move(robot1, kitchen, bedroom)→place(robot1, cup, bedroom) - 각
move액션이 실행될 때 Nav2가 경로 계획과 주행을 수행한다. pick과place액션은 별도의 매니퓰레이션 수행기가 처리한다.
이러한 통합은 PlanSys2의 심볼릭 계획 능력과 Nav2의 강건한 네비게이션 능력을 결합하여, 실용적인 자율 임무 시스템을 구현하는 기반을 제공한다(Martín et al., 2021; Macenski et al., 2020).
참고 문헌
- 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).
- 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