From 3d084f1932db751d6d496ee1a31d7fb691a69887 Mon Sep 17 00:00:00 2001 From: chyoo Date: Tue, 22 Sep 2026 10:28:54 +0900 Subject: [PATCH] feat: support Yahboom local Gazebo simulation --- README.md | 6 +++++- src/yahboom_planning/launch/planning.launch.py | 9 +++++++-- src/yahboom_planning/package.xml | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ad8b734..d57b0c7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,11 @@ LMS 전용 템플릿 저장소입니다. 설치 폴더: `[lms-nav2-yahboom-plann - 패키지: `yahboom_planning` - 런치: `planning.launch.py` -- 이미지: `future-nav2:humble-yahboom` +- 이미지: `future-nav2:humble-yahboom` (실차 기본) +- 로컬 시뮬레이션: 빌드 전에 `sim_mode:=true`를 설정하면 LMS가 + `future-nav2-gazebo:humble`을 사용합니다. 기본값은 `false`입니다. +- 시뮬레이션에서는 기존 NAV2-Gazebo에 `platform:=yahboom`을 설정하고 + NAV2-Yahboom 차량 모듈을 함께 실행합니다. 실차 Agent/Camera는 실행하지 않습니다. - 앱의 야붐 실행기 지원이 반영되어야 합니다. - 서버 과정의 야붐 전용 환경에 이 모듈과 이미지 아티팩트를 등록한 후 LMS에서 설치 -> 빌드 -> 실행합니다. diff --git a/src/yahboom_planning/launch/planning.launch.py b/src/yahboom_planning/launch/planning.launch.py index 82f2389..a85dc63 100644 --- a/src/yahboom_planning/launch/planning.launch.py +++ b/src/yahboom_planning/launch/planning.launch.py @@ -4,12 +4,17 @@ from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.substitutions import LaunchConfiguration from launch_ros.actions import Node +from launch_ros.parameter_descriptions import ParameterValue +from nav2_common.launch import RewrittenYaml def generate_launch_description(): share = get_package_share_directory("yahboom_planning") params = os.path.join(share, "params", "planning.yaml") + params = RewrittenYaml(source_file=params, root_key="", + param_rewrites={"use_sim_time": LaunchConfiguration("sim_mode")}, + convert_types=True) nodes = [["nav2_planner","planner_server","planner_server"],["nav2_bt_navigator","bt_navigator","bt_navigator"],["nav2_waypoint_follower","waypoint_follower","waypoint_follower"]] - actions = [] + actions = [DeclareLaunchArgument("sim_mode", default_value="false", choices=["true", "false"])] for package, executable, name in nodes: actions.append(Node( package=package, executable=executable, name=name, output="screen", @@ -19,7 +24,7 @@ def generate_launch_description(): actions.append(Node( package="nav2_lifecycle_manager", executable="lifecycle_manager", name="lifecycle_manager_yahboom_planning", output="screen", - parameters=[{"use_sim_time": False, "autostart": True, + parameters=[{"use_sim_time": ParameterValue(LaunchConfiguration("sim_mode"), value_type=bool), "autostart": True, "node_names": [name for _, _, name in nodes]}], )) return LaunchDescription(actions) diff --git a/src/yahboom_planning/package.xml b/src/yahboom_planning/package.xml index e7df19c..8c7f037 100644 --- a/src/yahboom_planning/package.xml +++ b/src/yahboom_planning/package.xml @@ -10,5 +10,6 @@ launch_ros ament_index_python nav2_bringup + nav2_common ament_cmake