Skip to content

Commit a970d3b

Browse files
Tomoya FujitaTomoya Fujita
authored andcommitted
'ros2 param load' fails when double parameter in parameter file is in scientific notation
ros2/ros2cli#834 Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com>
1 parent 012f6b2 commit a970d3b

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

‎prover_rclcpp/CMakeLists.txt‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ custom_executable(ros2_1400)
113113

114114
#custom_executable(ros2cli_601)
115115
custom_executable(ros2cli_679)
116+
custom_executable(ros2cli_834)
116117

117118
custom_executable(sim_clock_publisher)
118119
custom_executable(intraprocess_pub_sub)

‎prover_rclcpp/src/ros2cli_834.cpp‎

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include <rclcpp/rclcpp.hpp>
2+
#include <std_msgs/msg/string.hpp>
3+
4+
int main(int argc, char *argv[]) {
5+
rclcpp::init(argc, argv);
6+
7+
rclcpp::NodeOptions node_options = rclcpp::NodeOptions();
8+
node_options.allow_undeclared_parameters(true);
9+
node_options.automatically_declare_parameters_from_overrides(true);
10+
11+
auto node = rclcpp::Node::make_shared("param_test", node_options);
12+
RCLCPP_INFO(node->get_logger(), "/param_test node created...");
13+
// check if already declared
14+
rclcpp::Parameter param;
15+
if (node->has_parameter("test_double")) {
16+
param = node->get_parameter("test_double");
17+
RCLCPP_INFO(node->get_logger(), "test_double param is %f", param.get_value<double>());
18+
} else {
19+
// double type 0.0 initialized
20+
node->declare_parameter("test_double", 0.0);
21+
}
22+
// set parameter type double
23+
node->set_parameter(rclcpp::Parameter("test_double", 3e-06));
24+
param = node->get_parameter("test_double");
25+
RCLCPP_INFO(node->get_logger(), "test_double param is %f", param.get_value<double>());
26+
27+
rclcpp::executors::SingleThreadedExecutor executor;
28+
executor.add_node(node);
29+
executor.spin();
30+
rclcpp::shutdown();
31+
32+
return 0;
33+
}

0 commit comments

Comments
 (0)