我正试图解析一个.yaml文件的信息与相机校准成一个"sensor_msgs::CameraInfo“消息在ROS。
我能够同时解析INT和字符串,但是当我到达双向量/矩阵时会出现问题。
这是我的代码:
sensor_msgs::CameraInfo yamlToCameraInfo(std::string leftOrRightCam)
{
YAML::Node camera_info_yaml = YAML::LoadFile(leftOrRightCam + ".yaml");
sensor_msgs::CameraInfo camera_info_msg;
camera_info_msg.width = camera_info_yaml["image_width"].as<uint32_t>();
camera_info_msg.height = camera_info_yaml["image_height"].as<uint32_t>();
camera_info_msg.distortion_model = camera_info_yaml["distortion_model"].as<std::string>();
camera_info_msg.D = camera_info_yaml["distortion_coefficients"].as<double>();
camera_info_msg.K = camera_info_yaml["camera_matrix"].as<double>();
return camera_info_msg;
}我得到的错误是:
错误:与“operator=”不匹配(操作数类型为'sensor_msgs::CameraInfo_ >::_D_type {aka::vector >}‘和'double') camera_info_yaml"distortion_coefficients".as();= camera_info_msg.D
cameraInfo消息的文档位于这里:msgs/html/msg/CameraInfo.html
yaml-cpp包教程:https://github.com/jbeder/yaml-cpp/wiki/Tutorial
yaml文件中的“失真系数”部分如下所示:
distortion_coefficients: 行数:1 中学:5 资料来源:-0.167477,0.023595,0.004069,-0.002996,0.000000
有人知道我做错了什么吗?
发布于 2018-05-04 04:06:55
这一行的错误:
camera_info_msg.D = camera_info_yaml["distortion_coefficients"].as<double>();表示左边是std::vector<double>,而右边是double.相反:
camera_info_msg.D = camera_info_yaml["distortion_coefficients"].as<std::vector<double>>();https://stackoverflow.com/questions/50150387
复制相似问题