我在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);
argv[0]
为程序名称;你可能是指argv[1]
和argv[2]
- 您的日志输出错误;
%ld
表示long int
,而不是float
或double
。尝试%f