当前位置: 首页 > news >正文

ROS2-创建对象时,加载动态参数的方法

1.引言

ROS2中常见的参数加载方式是:通过启动文件加载。但是在集成化程度较高的系统中,不适合。我们提供通过创建对象时,加载动态参数的方法。

2.创建功能包,并实现在创建对象时动态加载参数文件

2.1 生成功能包:

ros2 pkg create ros_two_dynamic_parameter --build-type ament_cmake --dependencies rclcpp

2.2 创建配置文件my_params.yaml

my_dynamic_node:ros__parameters:my_int_param: 100my_double_param: 2.71my_string_param: "world"

2.2 创建dynamic_parameter.cpp文件

#include <rclcpp/rclcpp.hpp>class MyDynamicNode : public rclcpp::Node {
public:MyDynamicNode() : Node("my_dynamic_node") {// 声明参数并指定默认值this->declare_parameter("my_int_param", 42);this->declare_parameter("my_double_param", 3.14);this->declare_parameter("my_string_param", "hello");         }void PrintParameters(){get_parameter("my_int_param", my_int_param_);get_parameter("my_double_param", my_double_param_);get_parameter("my_string_param", my_string_param_);RCLCPP_INFO(this->get_logger(), "my_int_param: %d", my_int_param_);RCLCPP_INFO(this->get_logger(), "my_double_param: %f", my_double_param_);RCLCPP_INFO(this->get_logger(), "my_string_param: %s", my_string_param_.c_str());}
private:int my_int_param_;double my_double_param_;std::string my_string_param_;
};
int main(int argc, char **argv) {rclcpp::init(argc, argv);auto node = std::make_shared<MyDynamicNode>();auto synchronous_client = std::make_shared<rclcpp::SyncParametersClient>(node);synchronous_client->load_parameters("/home/yahboom/ros2_ws/src/ros_two_dynamic_parameter/config/my_params.yaml");node->set_parameter(rclcpp::Parameter("my_int_param", 50));node->PrintParameters();rclcpp::spin(node);rclcpp::shutdown();return 0;
}

2.3 配置 CMakeLists.txt

修改 CMakeLists.txt 文件:

add_executable(dynamic_node src/dynamic_parameter.cpp)
ament_target_dependencies(dynamic_node rclcpp)
install(TARGETS dynamic_nodeDESTINATION lib/${PROJECT_NAME})

3.编译并执行

编译

colcon build --packages-select ros_two_dynamic_parameter

执行:

ros2 run ros_two_dynamic_parameter dynamic_node

在这里插入图片描述

http://www.dtcms.com/a/484086.html

相关文章:

  • 之江汇学校网站建设大型做网站的公司有哪些
  • 网站建设公司营业执照wordpress旅游类网站
  • 微信商城网站建设佛山百度关键词seo外包
  • 网站开发需要的技术湖南建设网站公司
  • 国际网站平台有哪些网站建设安全技术
  • 空间数据云网站什么样企业需要网站建设
  • 网站开发实战asp制作视频网站开发实用技术相关论文
  • 企业建站一条龙莒县网页设计
  • angular2是做网站的还是手机的网站做百度竞价利于百度优化
  • 江安网站建设织梦网站地图在线生成
  • 上线一个网站需要多少钱深圳网站建设公司的外文名是
  • 云渲染平台支持哪些第三方插件?
  • 本地企业网站建设服务公司企业网站的选择
  • HTML5 新元素
  • 人社部能力建设中心网站wordpress注册后邮箱没有收到信息
  • 基于单片机车窗环境监测控制系统Proteus仿真(含全部资料)
  • 苏州做网站公司哪家比较好中天钢铁 网站建设
  • Grand Challenge 上数据集的下载
  • wordpress替换百度站内搜索平面设计相关的网站有哪些
  • 济南智能网站建设哪家便宜望江县住房和城乡建设局网站
  • 惯性动作捕捉在大型项目中应用的优势
  • 婚纱照网站制作360网站备案
  • 广州新塘网站seo优化企业外贸网络推广
  • 诏安县建设局网站昆明搜索引擎的关键词优化
  • 海外网站代理什么是事件营销
  • 第五周作业(JavaScript)
  • 抽奖网站建设2345传奇世界游戏介绍
  • Redis安装(Linux系统上部署非docker安装)
  • 西安做公司网站做受免费网站
  • 微语言框架:让程序会说多种语言的“翻译官“