From c55105c9bf3f11f622a23ae61501483928984a53 Mon Sep 17 00:00:00 2001 From: lyq Date: Sat, 28 Feb 2026 13:25:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=8E=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E4=B8=B2=E5=8F=A3=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../launch_system/launch/start_all.launch.py | 7 ++++++ src/perception/rtk/CMakeLists.txt | 3 +++ src/perception/rtk/config/rtk_params.yaml | 4 ++++ src/perception/rtk/launch/rtk.launch.py | 23 +++++++++++++++++++ src/perception/rtk/src/rtk_node.cpp | 5 +++- 5 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/perception/rtk/config/rtk_params.yaml create mode 100644 src/perception/rtk/launch/rtk.launch.py diff --git a/src/common/launch_system/launch/start_all.launch.py b/src/common/launch_system/launch/start_all.launch.py index 37f1232..38c3867 100644 --- a/src/common/launch_system/launch/start_all.launch.py +++ b/src/common/launch_system/launch/start_all.launch.py @@ -78,6 +78,13 @@ def generate_launch_description(): package="rtk", executable="rtk_node", name="rtk_node", + parameters=[ + os.path.join( + get_package_share_directory("rtk"), + "config", + "rtk_params.yaml" + ) + ], # 从YAML文件加载参数 output="screen", respawn=True, respawn_delay=2 diff --git a/src/perception/rtk/CMakeLists.txt b/src/perception/rtk/CMakeLists.txt index 092e378..136ca03 100644 --- a/src/perception/rtk/CMakeLists.txt +++ b/src/perception/rtk/CMakeLists.txt @@ -40,6 +40,9 @@ ament_target_dependencies( install(TARGETS rtk_node DESTINATION lib/${PROJECT_NAME}) +# 安装配置文件和启动文件 +install(DIRECTORY config launch DESTINATION share/${PROJECT_NAME}) + if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) # the following line skips the linter which checks for copyrights diff --git a/src/perception/rtk/config/rtk_params.yaml b/src/perception/rtk/config/rtk_params.yaml new file mode 100644 index 0000000..b0ef88f --- /dev/null +++ b/src/perception/rtk/config/rtk_params.yaml @@ -0,0 +1,4 @@ +rtk: + ros__parameters: + # 串口设备名称 + serial_port: "/dev/ttyTHS1" diff --git a/src/perception/rtk/launch/rtk.launch.py b/src/perception/rtk/launch/rtk.launch.py new file mode 100644 index 0000000..b3f4035 --- /dev/null +++ b/src/perception/rtk/launch/rtk.launch.py @@ -0,0 +1,23 @@ +from launch import LaunchDescription +from launch_ros.actions import Node +from ament_index_python.packages import get_package_share_directory +import os + + +def generate_launch_description(): + # 获取配置文件路径 + config_dir = os.path.join( + get_package_share_directory("rtk"), "config", "rtk_params.yaml" + ) + + return LaunchDescription( + [ + Node( + package="rtk", + executable="rtk_node", + name="rtk_node", + parameters=[config_dir], # 从YAML文件加载参数 + output="screen", + ), + ] + ) diff --git a/src/perception/rtk/src/rtk_node.cpp b/src/perception/rtk/src/rtk_node.cpp index 02f1b78..0ccade0 100644 --- a/src/perception/rtk/src/rtk_node.cpp +++ b/src/perception/rtk/src/rtk_node.cpp @@ -23,7 +23,10 @@ class rtk_node : public rclcpp::Node // 初始化串口读取 boost_serial = new Boost_serial(); - boost_serial->init("/dev/ttyTHS1"); + std::string serial_port; + this->declare_parameter("serial_port", "/dev/ttyTHS1"); + this->get_parameter("serial_port", serial_port); + boost_serial->init(serial_port.c_str()); // 创建发布者 command_publisher_ = this->create_publisher("rtk_message", 10);