1317.17 PlanSys2의 파라미터 구성 체계

1. ROS2 파라미터 시스템의 활용

PlanSys2는 ROS2의 파라미터(Parameter) 시스템을 사용하여 시스템의 동작을 구성한다. 파라미터는 런치 파일, YAML 설정 파일, 또는 명령행에서 설정할 수 있으며, 일부 파라미터는 런타임에 동적으로 변경 가능하다.

2. 주요 파라미터

2.1 Domain Expert 파라미터

domain_expert:
  ros__parameters:
    model_file: "/path/to/domain.pddl"
    # PDDL 도메인 파일의 경로

2.2 Planner 파라미터

planner:
  ros__parameters:
    plugin: "plansys2/POPFPlanSolver"
    # 플래너 플러그인 이름

    plan_solver_timeout: 30.0
    # 플래너 실행 시간 제한 (초)

2.3 Executor 파라미터

executor:
  ros__parameters:
    action_bt_xml_filename: ""
    # 사용자 정의 행동 트리 XML (빈 문자열이면 자동 생성)

    default_action_bt_xml_filename: ""
    # 기본 액션 실행 행동 트리 템플릿

3. 런치 파일에서의 파라미터 설정

from launch import LaunchDescription
from launch_ros.actions import Node
import os
from ament_index_python.packages import get_package_share_directory

def generate_launch_description():
    pkg_dir = get_package_share_directory('my_robot_planner')
    
    return LaunchDescription([
        Node(
            package='plansys2_bringup',
            executable='plansys2_node',
            name='plansys2',
            output='screen',
            parameters=[{
                'model_file': os.path.join(pkg_dir, 'pddl', 'domain.pddl'),
                'planner_plugin': 'plansys2/POPFPlanSolver',
                'plan_solver_timeout': 30.0,
            }]
        )
    ])

4. YAML 설정 파일 사용

# config/plansys2_params.yaml
plansys2:
  domain_expert:
    ros__parameters:
      model_file: "domain.pddl"
  planner:
    ros__parameters:
      plugin: "plansys2/POPFPlanSolver"
      plan_solver_timeout: 30.0
  executor:
    ros__parameters:
      action_bt_xml_filename: ""
# 런치 파일에서 YAML 파일 로드
Node(
    package='plansys2_bringup',
    executable='plansys2_node',
    parameters=[os.path.join(pkg_dir, 'config', 'plansys2_params.yaml')]
)

5. 런타임 파라미터 변경

# 명령행에서 파라미터 변경
ros2 param set /planner plan_solver_timeout 60.0
ros2 param get /domain_expert model_file
ros2 param list /planner

6. 네임스페이스와 파라미터

PlanSys2를 네임스페이스 내에서 실행하면, 파라미터 경로도 네임스페이스에 포함된다:

Node(
    package='plansys2_bringup',
    executable='plansys2_node',
    namespace='robot1',
    parameters=[{'model_file': domain_file}]
)
# → /robot1/domain_expert, /robot1/planner 등

이를 통해 다중 로봇 시스템에서 각 로봇의 PlanSys2 인스턴스를 독립적으로 구성할 수 있다.

7. 참고 문헌

  • Gonzalez, F., Martin, F., Matellán, V., & Rodriguez, F. J. (2021). “PlanSys2: A Planning System Framework for ROS2.” IEEE ICARSC.