正在将argv参数转换为double



我在Ros中创建了一个.srv文件。其结构如下。

float64 a
float64 a
---
bool response

现在我尝试将argv中的字符读取为float。无论我传递哪一个值,我的输出都是相同的。输出:

check Numbers
a: 94290532670520
b: 0

我的错误在哪里?提前谢谢。

int main(int argc, char **argv)
{
rclcpp::init(argc, argv);
if (argc != 3) {
RCLCPP_INFO(rclcpp::get_logger("rclcpp"), "usage: add_two_ints_client theta x");
return 1;
}
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("add_two_ints_client");
rclcpp::Client<robot_control::srv::RobotControl>::SharedPtr client =
node->create_client<robot_control::srv::RobotControl>("add_two_ints");
auto request = std::make_shared<robot_control::srv::RobotControl::Request>();  
request->theta = std::atof(argv[0]);
request->x = std::atof(argv[1]);
//  request->theta = std::atoll(argv[1]);
//  request->x = std::atoll(argv[2]);

RCLCPP_INFO(rclcpp::get_logger("rclcpp"), "check Numbersna: %ld" " b: %ld",
request->theta, request->x);
  1. argv[0]为程序名称;你可能是指argv[1]argv[2]
  2. 您的日志输出错误;%ld表示long int,而不是floatdouble。尝试%f

最新更新