Ros使用(3)Using parameters
创始人
2025-05-31 07:15:48
0

创建自己的节点时,有时需要添加可从启动文件设置的参数。本教程将向您展示如何在C++类中创建这些参数,以及如何在启动文件中设置它们。

功能包创建

mkdir -p demo2_ws/src
cd src 
ros2 pkt create --build-type ament_cmake cpp_parameters --dependencies rclcpp
cd cpp_parameters

在src目录下进行创建参数文件

#include 
#include 
#include #include 
using namespace std::chrono_literals;
using namespace rclcpp;
class MinimalParam:public Node{rclcpp::TimerBase::SharedPtr timer_;public:MinimalParam():Node("MinimalParam"){// 定义对应文件的参数,声明文件参数的参数名,和参数的默认值this->declare_parameter("my_parameter","world");timer_ = this->create_wall_timer(1000ms,std::bind(&MinimalParam::timer_callback,this));}void timer_callback(){// 获得对应的参数值std::string my_param = this->get_parameter("my_parameter").get_parameter_value().get();RCLCPP_INFO(this->get_logger(),"Hello %s ",my_param.c_str());std::vector all_new_parameters{rclcpp::Parameter("my_parameter", "lala")};this->set_parameters(all_new_parameters);}};
int main(int argc, char ** argv)
{rclcpp::init(argc, argv);rclcpp::spin(std::make_shared());rclcpp::shutdown();return 0;
}

timer_callback函数的第一行从节点获取参数my_parameter,并将其存储在my_param中。接下来,RCLCPP_INFO函数确保消息被记录。set_parameters函数然后将参数my_parameter设置回默认字符串值world。在用户从外部更改参数的情况下,这可确保参数始终重置回原始值。

修改对应的CMakeLists.txt文件

add_executable(minimal_param_node src/cpp_parameters_node.cpp)
ament_target_dependencies(minimal_param_node rclcpp)install(TARGETSminimal_param_nodeDESTINATION lib/${PROJECT_NAME}
)

编译

rosdep install -i --from-path src --rosdistro foxy -y
colcon build --packages-select cpp_parameters

配置launch文件

您也可以在启动文件中设置该参数,但首先需要添加启动目录。在ros2_ws/src/cpp_parameters/目录中,创建一个名为launch的新目录。在其中创建一个名为cpp_parameters_launch.py的新文件

from launch import LaunchDescription
from launch_ros.actions import Nodedef generate_launch_description():return LaunchDescription([Node(package="cpp_parameters",executable="minimal_param_node",name="custom_minimal_param_node",output="screen",emulate_tty=True,parameters=[{"my_parameter": "earth"}])])

修改CMakeList.txt文件

install(DIRECTORY launchDESTINATION share/${PROJECT_NAME}
)

编译之后可以通过启动对应的launch文件得到对应功能包

相关内容

热门资讯

常州法院2025年前三季度调解... 调解结案16474件、调解成功率24.08%——这是2025年前三季度常州法院交出的司法成绩单。通过...
安徽省政协研究室副主任陈鑫已任... 据铜陵市政府官网消息,11月20日上午,市委举行理论学习中心组学习会议,邀请省委社会工作部副部长高维...
原创 联... 据光明网报道,11月19日,在联合国大会的讨论中,日本企图争取成为安理会常任理事国的梦想再次破灭,令...
南部关于全县规范法律咨询服务机... 一、专项行动时间 自即日起至2025年12月。 二、举报受理范围 社会各界反映强烈的某些法律咨询服务...
“男子持刀入室盗窃”视频引发关... 近日,一段疑似“小偷”入室盗窃被业主家中监控拍下的视频在网上引发关注。11月21日晚,“翠屏公安”微...
绝不允许日本军国主义幽灵复活!... 2025年11月7日,日本首相高市早苗宣称,如果中国大陆对台湾出动军舰并使用武力,可能会构成“存亡危...
【解决】AI法律助手荣获202... 2025全球数字经济大会启幕,搭建国际数字合作高端平台 经国务院批准,由北京市人民政府、国家互联网信...
嘉兴男子与妻争吵,突然将行李箱... 近日,浙江嘉兴一对夫妻因琐事发生争吵,丈夫突然将装满衣物的行李箱从6楼扔到楼下,引发关注。11月22...
三地107家律所齐聚丰台,京津... 11月22日,京津冀律师驿站举办“党建业务深度融合 促进行业规范发展”主题活动,发布“百千万行动计划...