ros2中,如何利用declare_parameter()和get_parameter()函数读取param.yaml文件
时间: 2023-08-27 21:04:09 浏览: 1729
在ROS2中,利用`declare_parameter()`和`get_parameter()`函数读取param.yaml文件的步骤如下:
1. 在你的ROS2节点的构造函数中,创建一个`rclcpp::Node`对象。
2. 在构造函数中调用`declare_parameter()`函数声明需要读取的参数,参数名应和param.yaml文件中的键名一致。
```cpp
node->declare_parameter<int>("param_name", 10);
```
上面的代码声明了一个名为`param_name`的整数类型参数,如果param.yaml文件中没有该参数,则默认值为10。
3. 在需要获取参数的地方调用`get_parameter()`函数获取参数的值。
```cpp
int param_value;
node->get_parameter<int>("param_name", param_value);
```
上面的代码获取了名为`param_name`的整数类型参数的值,并将其存储到`param_value`变量中。
完整的示例代码如下:
```cpp
#include "rclcpp/rclcpp.hpp"
int main(int argc, char **argv)
{
rclcpp::init(argc, argv);
auto node = std::make_shared<rclcpp::Node>("my_node");
// 声明参数
node->declare_parameter<int>("param_name", 10);
// 获取参数
int param_value;
node->get_parameter<int>("param_name", param_value);
RCLCPP_INFO(node->get_logger(), "Param value: %d", param_value);
rclcpp::shutdown();
return 0;
}
```
在上面的代码中,我们声明了一个名为`param_name`的整数类型参数,并将默认值设置为10。然后,我们获取该参数的值,并将其打印到终端上。如果param.yaml文件中存在名为`param_name`的键,则该参数的值将从param.yaml文件中获取。如果不存在该键,则使用默认值10。
阅读全文